up
メトリクス自体が無いというケース
Prometheus ターゲットにはup{job="jobname"}
というヘルスチェック用メトリクスが生えているが、
これを使って 「up == 1 (running) な jobname が存在しない」という意味の式
count(up{job="jobname"} == 1) == 0
を書いたとする。
これは jobname が全て死んだとき true を返さない。
というのも jobname が全て死んでいる時 Prometheus は up{job="jobname"}
にマッチするメトリクスを収集できておらず、
count(up{job="jobname"} == 1)
は no data
を返してしまうから。
absent()
ではどうすればいいのかというと、メトリクス自体が存在しない場合を表現するには absent()
という関数を使えばよい。
これを使えば、「up{job="jobname"}
が全く存在しない」という意味の式
absent(up{job="jobname"})
を書くことができる。