Edited at

prometheus labelについて

More than 1 year has passed since last update.

自分用メモとしてまとめる


参考資料


概要

prometheusで監視ターゲット設定をするとprometheus側でその対象に対してlabelを勝手に割り振ってくれる。

prometheusではそのlabelを使って、監視対象を登録、除外し柔軟なモニタリングを実現するようだ。

その際に、勝手に割り振ってくれたlabelの中から何を使うかをユーザが決めて、labelを定義(オレオレlabelとしよう)、マネジメントしていくっぽい。


__から始まるlabel

prometheusが勝手に取るlabel。


__meta label

こいつも__から始まるlabelの一種で、ec2 service discoveryを使ってデータを取ると、以下のようなlabelで情報が取れる

__meta_ec2_availability_zone:

__meta_ec2_instance_id:
__meta_ec2_instance_state:
__meta_ec2_instance_type:
__meta_ec2_private_ip:
__meta_ec2_public_dns_name:
__meta_ec2_public_ip:
__meta_ec2_subnet_id:
__meta_ec2_tag_<tagkey>:
__meta_ec2_vpc_id:

https://github.com/prometheus/docs/blob/master/content/docs/operating/configuration.md

に書いているので検索


__labelから自分で使うlabelを選定

ここではec2 service discoveryを例とする。

ec2には以下のタグを割り振っている。

service , env

このタグが割り振られているec2のみをモニタリング対象としようとする。

  - job_name: 'test_service'

ec2_sd_configs:
- region: ap-northeast-1
access_key: hogehoge
secret_key: hogehoge
port: XXXX
relabel_configs:
- source_labels: [__meta_ec2_tag_env]
target_label: env
regex: (stg|prd)
action: keep
- source_labels: [__meta_ec2_tag_service]
target_label: service
regex: (hogehoge|fugafuga)
action: keep
- source_labels: [__meta_ec2_tag_Name]
target_label: instance

上の設定を説明すると

- ec2_sd_configsの箇所はec2 service discoveryの定義

- relabel_configsで__labelから自分がマネジメントしていく labelを設定している

- 一つ目のsource_labelsでは__meta_ec2_tag_envがprometheus側で設定されたlabelで、

 このlabelに対し自分がenvというオレオレlabelをつけた。

 またregexでそのtagの値を限定している。ここではstg,prdにのみ該当するものをだけを対象。

 action:ここで 「relabel_action」 で検索

- 二つ目、三つ目のsource_labelsも似たような感じ