prometheus

Prometheusのrelabel_configでメトリクスにオレオレなラベルを付与する

relabel_configsmetric_relabel_configsを設定することで
example_metric{オレオレなラベル名="オレオレな値"}
のように任意のラベルをメトリクスに付与できる。

prometheus.yaml
    - job_name: 'hoge-service-discovery'

      # 何らかの***_configsとか***_sd_configs
      # 例としてkubernetes_sd_configsにしています
      kubernetes_sd_configs:

      # 例としてkubernetesのノード(マシン)をsd(service discovery)します
      - role: node

      # ここからオレオレなラベルを付与していきます
      relabel_configs:

      # 例 1 : ラベル名をオレオレにする
      # kubernetesのノード名に対して、
      - source_labels: [__meta_kubernetes_node_name]
        replacement: $1
        # オレオレなラベル名をmy_node_name_1としてみる
        # my_node_name_1="kubernetesのノード名" というラベルがメトリクスに付与される
        target_label: my_node_name_1

      # 例 2 : 値の方もオレオレに加工してみる
      - source_labels: [__meta_kubernetes_node_name]
        # 値を加工できる。
        # ここでは接頭辞(my-node-name-is-)を付けてオレオレな値にしてみる。
        replacement: my-node-name-is-$1
        # my_node_name_2="my-node-name-is-ノード名" というラベルがメトリクスに付与される
        target_label: my_node_name_2

      # 例 3 : ラベル名も値も完全オレオレにする
      - source_labels: [__meta_kubernetes_node_name]
        # $1を使ってないので完全に別の文字列に置き換わる。
        replacement: hoge-huga-hage
        # hoge_huga_hage_3="hoge-huga-hage" というラベルがメトリクスに付与される
        target_label: hoge_huga_hage_3

      # 例 4 : 例3と同様。
      # ***_configsや***_sd_configsに用意されていない文字列でも良いらしい。
      - source_labels: ["hoge"]
        # 結局この指定で完全に別の文字列に置き換えるのでsource_labelsは何でもいいということかと理解している。
        replacement: hoge-huga-hage
        # 例3と同様、hoge_huga_hage_4="hoge-huga-hage" というラベルがメトリクスに付与される
        target_label: hoge_huga_hage_4


      # metric_relabel_configsでも同様。
      # relabel_configsとの違いは、metric_relabel_configsの場合、
      # source_labelsには、***_configsや***_sd_configsに用意されているメタタグでなく、
      # メトリクス提供元が付与したラベル名を指定できること
      metric_relabel_configs:

        # 例 5 : これまでの例と同様です。
        # メトリクス提供元(kubernetesの場合はcAdvisor等)が付与したラベル名を指定できる
        # 例えばname="コンテナ名"というラベルがcAdvisorから付与されている場合
      - source_labels: ["name"]
        # 加工してみる
        replacement: my-container-name-is-$1
        # my_container_name="my-container-name-is-コンテナ名" というラベルがメトリクスに付与される
        target_label:  my_container_name

ここではdiscoveryされた全targetのメトリクスに対しオレオレなラベルを付与したが、
regex: 等の指定を併用することで特定の条件のときのみラベルを付与することもできる。
詳細はConfiguration | Prometheusを参照されたい。