一部のサーバーが他のサーバーをスクレイピングする、階層的なプロメテウスのセットアップがあります。一部のサーバーが他のサーバーからすべてのメトリックを取得するようにします。
現在、match[]="{__name__=~".*"}"
をメトリックセレクターとして使用しようとしていますが、これによりエラーparse error at char 16: vector selector must contain at least one non-empty matcher
が発生します。
それぞれ(プレフィックス)を一致セレクターとしてリストせずに、リモートプロメテウスからすべてのメトリックをスクレイプする方法はありますか?
はい、次のことができます:match[]="{__name__=~".+"}"
(空の文字列と一致しないように+
ではなく*
に注意してください)。
Prometheusには、ラベルマッチャーセットに一致しないマッチャーが少なくとも1つ必要ですすべて。
私は複数の例を試しましたが、プロメテウスのドキュメントからのものでさえもうまくいきませんでした。
代わりにこれは私のために働きます
http://prometheus-ip:9090/federate?match[]={job!=""}
フェデレーションは、すべてのメトリックを転送することを目的としたものではありません。転送しようとすると、最終的に問題が発生します。
代わりに、必要なメトリックを集約してから、それらのみを統合します。
これが私の設定ファイルです。
この制限により、どのエクスポーター(ジョブ)からスクレイプするかをフィルタリングできます。
params:
'match[]':
- '{job=~"node-exporter|kube-state|fluentbit"}'
- '{__name__=~"job:.*"}'
これらをフェデレーションジョブに追加します
params:
match[]:
- '{__name__=~".+"}'
- '{__name__=~"^job:.*"}'
- '{job="prometheus"}'
- '{job="node"}'
- '{__name__="server_labels"}'