質問があります:
node_systemd_unit_state{instance="server-01",job="node-exporters",name="kubelet.service",state="active"} 1
ラベルname
をunit_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を使用できません。
断片化されたすべてのドキュメントにうんざりしており、この投稿でより良い答えをここに提供したと思います: 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」は、古いラベルを削除する場所です(。*……。その混乱は、ラベル名全体を置き換える正規表現です)