web-dev-qa-db-ja.com

Prometheusのメトリック内のラベルの名前を変更する方法

質問があります:

node_systemd_unit_state{instance="server-01",job="node-exporters",name="kubelet.service",state="active"} 1

ラベルnameunit_nameメトリック内でのみnode_systemd_unit_stateに名前変更(または置換)したい。したがって、望ましい結果は次のとおりです。

node_systemd_unit_state{instance="server-01",job="node-exporters",unit_name="kubelet.service",state="active"} 1

node-exportersジョブには、ラベル名nameを持つ他の多くのメトリックがあります。そのため、ジョブ全体でrelabel configを使用できません。

8

断片化されたすべてのドキュメントにうんざりしており、この投稿でより良い答えをここに提供したと思います: https://medium.com/@texasdave2/replace-and-remove-a-label-in-a- prometheus-query-9500faa302f

置換は真の置換ではありません

目標は、古いラベル名「old_job_id」を新しいラベル名「new_task_id」に置き換えるだけです。 Prometheus label_replaceは実際に新しいラベル名を「追加」します。古いラベル名も保持されます。したがって、それは問題になる可能性があり、本当の「置き換え」ではありません。

したがって、新しいラベル名を「追加」し、古いラベル名を「削除」する場合は、次のようにする必要があります。

sum without (old_job_id) (label_replace(metric, "new_task_id", "$1", "old_job_id", "(.*)"))

これは次のようになります。

  • (old_job_id)なしの合計は、クエリ出力から古いラベル名を削除します

  • メトリックは、「node_filesystem_avail_bytes」などのメトリックです

  • 「new_task_id」は、新しいラベル名を配置する場所です

  • 「$ 1」は新しいラベル名の文字列を使用するための正規表現です。これを変更しないでください

  • 「old_job_id」は、古いラベルを削除する場所です(。*……。その混乱は、ラベル名全体を置き換える正規表現です)

0
texasdave