メトリックhttp_requests_total
を持つすべて時系列を返す
http_requests_total
メトリックhttp_requests_total
と指定されたjob
およびhandler
ラベルを持つすべて時系列を返す
http_requests_total{job="apiserver", handler="/api/comments"}
同じベクトルについて、時間範囲全体(この場合はクエリ時間まで5分間)を返し、範囲ベクトルにする
http_requests_total{job="apiserver", handler="/api/comments"}[5m]
範囲ベクトルになる式は、直接グラフ化できませんが、式ブラウザの表形式(「コンソール」)ビューで表示できます。
正規表現を使用すると、名前が特定のパターンに一致するジョブの時系列のみを選択できます。この場合、server
で終わるすべてのジョブです。
http_requests_total{job=~".*server"}
Prometheusのすべての正規表現は、RE2構文を使用します。
4xx以外のすべてのHTTPステータスコードを選択するには、次を実行します。
http_requests_total{status!~"4.."}
過去30分間のhttp_requests_total
メトリックの5分間のレートを、1分間の解像度で返す。
rate(http_requests_total[5m])[30m:1m]
これはネストされたサブクエリの例です。deriv
関数のサブクエリはデフォルトの解像度を使用します。不必要にサブクエリを使用するのは賢明ではありません。
max_over_time(deriv(rate(distance_covered_total[5s])[30s:5s])[10m:])
http_requests_total
メトリック名を持つすべて時系列の毎秒レートを、過去5分間にわたって測定したものを返す
rate(http_requests_total[5m])
http_requests_total
時系列にすべてjob
(ジョブ名によるファンアウト)とinstance
(ジョブのインスタンスによるファンアウト)ラベルがあると仮定すると、すべてのインスタンスのレートを合計して、出力時系列の数を減らしながら、job
ディメンションを維持したい場合があります。
sum by (job) (
rate(http_requests_total[5m])
)
同じディメンションラベルを持つ2つの異なるメトリックがある場合、それらに二項演算子を適用できます。同じラベルセットを持つ両側の要素は一致し、出力に伝播されます。たとえば、この式は、(これらのメトリックを公開する架空のクラスタスケジューラ上の)各インスタンスの未使用メモリをMiB単位で返します。
(instance_memory_limit_bytes - instance_memory_usage_bytes) / 1024 / 1024
同じ式ですが、アプリケーション別に合計すると、次のように記述できます。
sum by (app, proc) (
instance_memory_limit_bytes - instance_memory_usage_bytes
) / 1024 / 1024
同じ架空のクラスタスケジューラが、各インスタンスについて次のようなCPU使用率メトリックを公開していた場合
instance_cpu_time_ns{app="lion", proc="web", rev="34d0f99", env="prod", job="cluster-manager"}
instance_cpu_time_ns{app="elephant", proc="worker", rev="34d0f99", env="prod", job="cluster-manager"}
instance_cpu_time_ns{app="turtle", proc="api", rev="4d3a513", env="prod", job="cluster-manager"}
instance_cpu_time_ns{app="fox", proc="widget", rev="4d3a513", env="prod", job="cluster-manager"}
...
…アプリケーション(app
)とプロセス種別(proc
)別に上位3つのCPUユーザーを取得できます。
topk(3, sum by (app, proc) (rate(instance_cpu_time_ns[5m])))
このメトリックに実行中のインスタンスごとに1つの時系列が含まれていると仮定すると、アプリケーションごとの実行中のインスタンス数を次のようにカウントできます。
count by (app) (instance_cpu_time_ns)
メトリックのラベルを調査して、たとえばいくつかのラベルを合計する場合、次を使用できます。
limitk(10, app_foo_metric_bar)
あるいは、返される時系列をより均等にサンプリングしたい場合は、約10%を取得するために次を使用できます。
limit_ratio(0.1, app_foo_metric_bar)
このドキュメントはオープンソースです。問題点やプルリクエストを提出して、改善にご協力ください。