Featured image of post Prometheusで不要なメトリクスを除外する

Prometheusで不要なメトリクスを除外する

いらないメトリクスは拾いたくない

Prometheusでスクレイプする対象にいらないメトリクスがあったときに無視したかった.


まとめ

特定のメトリクスだけ除外したいときはmetric_relabel_configsで除外したいメトリクスのラベルを正規表現で記述してdropするのが良さそう.

# メトリクス名がnode_cpu_seconds_totalでmode="idle"のラベルを持つメトリクスを除外する例
scrape_configs:
  - job_name: 'node'
    static_configs:
    - targets: ['localhost:9100']
    metric_relabel_configs:
    - source_labels: [__name__, mode]
      regex: 'node_cpu_seconds_total;idle'
      action: drop

環境

やりかた

例えばNode exporterで取れるCPU時間のメトリクスnode_cpu_seconds_totalPrometheusで見ているとき,
普通はこんな感じでmodeラベルの値が異なる複数のメトリクスが取れる.

node_cpu_seconds_total{cpu="0"}

Prometheus

メトリクスの用途はさておき, この中でmode="idle"のラベルがついているメトリクスだけを除外したいとする.

そんなときはPrometheusのスクレイプ設定でmetric_relabel_configsの設定を追加する.
この設定により, __name__ラベル(メトリクス名)がnode_cpu_seconds_totalかつmodeラベルがidleであるメトリクスだけが除外(drop)される.

設定変更後, Prometheusを再起動する.

# prometheusのスクレイプ設定を変更して再起動
$ vim /usr/local/prometheus/prometheus.yml
$ sudo systemctl restart prometheus

再度Prometheusで先程と同じクエリを投げると, mode="idle"のラベルがついたメトリクスだけがなくなっていることがわかる.

Prometheus

今度は逆にmode="idle"のラベルがついているメトリクスだけを残して, 他のメトリクスを拾わないようにしてみる.
この設定により, __name__="node_cpu_seconds_total"mode="idle"の両方のラベルを持つメトリクスのみが保持(keep)され,
それ以外のメトリクスがすべて除外される.

Prometheus

これでも問題なさそうだけど, 実はこの設定を入れるとメトリクス名(__name__)がnode_cpu_seconds_totalでないメトリクスがすべて捨てられてしまうので,
node_filesystem_free_bytes(ファイルシステムの空き容量)のようなNode exporterの他のメトリクスが取れなくなってしまう.

Prometheus

うまいこと__name__="node_cpu_seconds_total"かつmode!="idle"のような条件を正規表現で書ければいいんだけど,
Prometheusで使うRE2正規表現は(?!idle)みたいな否定先読みに対応していないらしいのでちょっと難しい.

よくわかんなかったので苦肉の策として除外したい個別のラベルを列挙してみた.

これなら__name__="node_filesystem_free_bytes"のような他のメトリクスを捨てずに__name__="node_cpu_seconds_total"のメトリクスの中でmode="idle"なものだけを残せるけど,
除外するラベルを全部列挙するのはあんまり現実的じゃないような気がする…

Prometheus
Prometheus

おわり

正規表現にマッチするメトリクスだけ除外するdropとその逆のkeepだと本当は除外対象を列挙しないで済むkeepを使いたくなるけど,
現状は正規表現の仕様でdropのほうが使いやすいという感じがする.
そもそもそこまで排除対象のメトリクスが多いようなスクレイプ対象だったらそれ自体を見直したほうがいいのだろうか.

とりあえずはdropで頑張ってみて, keepでいい感じに他のメトリクスを残せるような方法があったら試してみたい.

おまけ

人間用まくらが好きなねこ

参考