メトリクスとラベルの命名

このドキュメントで提示されているメトリクスとラベルの規則は、Prometheusを使用する上で必須ではありませんが、スタイルガイドとベストプラクティスのコレクションの両方として役立ちます。個々の組織は、これらのプラクティス、例えば命名規則などに対して異なるアプローチを取りたい場合があります。

メトリクス名

メトリクス名は...

  • ...有効な文字について、データモデルに従う必要があります。
  • ...メトリクスが属するドメインに関連する(単一の単語の)アプリケーションプレフィックスを持つ必要があります。このプレフィックスは、クライアントライブラリによってnamespaceと呼ばれることもあります。アプリケーションに固有のメトリクスの場合、プレフィックスは通常アプリケーション名自体です。しかし、クライアントライブラリによってエクスポートされる標準化されたメトリクスのように、より一般的なメトリクスもあります。例:
    • prometheus_notifications_total (Prometheusサーバーに固有)
    • process_cpu_seconds_total (多くのクライアントライブラリによってエクスポートされる)
    • http_request_duration_seconds (すべてのHTTPリクエスト用)
  • ...単一の単位を持つ必要があります(つまり、秒とミリ秒、または秒とバイトを混在させないでください)。
  • ...基本単位を使用する必要があります(例:秒、バイト、メートル - ミリ秒、メガバイト、キロメートルではない)。基本単位のリストについては以下を参照してください。
  • ...単位を記述する接尾辞を複数形で持つ必要があります。累積カウントは、該当する場合は単位に加えてtotalを接尾辞として持つことに注意してください。
    • http_request_duration_seconds
    • node_memory_usage_bytes
    • http_requests_total (単位のない累積カウントの場合)
    • process_cpu_seconds_total (単位を持つ累積カウントの場合)
    • foobar_build_info (実行中のバイナリに関するメタデータを提供する疑似メトリクスの場合)
    • data_pipeline_last_record_processed_timestamp_seconds (データ処理パイプラインで処理された最新のレコードの時間を追跡するタイムスタンプの場合)
  • ...すべてのラベルディメンションにわたって、測定されている同じ論理的な対象を表す必要があります。
    • リクエスト時間
    • データ転送のバイト数
    • パーセンテージとしての瞬間的なリソース使用量

経験則として、特定のメトリクスのすべてのディメンションにわたるsum()またはavg()のいずれかが意味を持つ必要があります(必ずしも有用である必要はありません)。意味がない場合は、データを複数のメトリクスに分割してください。たとえば、1つのメトリクスにさまざまなキューの容量を含めるのは良いことですが、キューの容量とキュー内の現在の要素数を混在させるのは良くありません。

ラベル

測定されているものの特性を区別するためにラベルを使用します。

  • api_http_requests_total - リクエストタイプを区別します: operation="create|update|delete"
  • api_request_duration_seconds - リクエストステージを区別します: stage="extract|transform|load"

ラベル名をメトリクス名に入れないでください。これは冗長性をもたらし、それぞれのラベルが集計されると混乱を引き起こします。

注意: キーと値のラベルペアのユニークな組み合わせごとに新しい時系列を表すことを覚えておいてください。これにより、保存されるデータ量が劇的に増加する可能性があります。ユーザーID、メールアドレス、その他の上限のない値のセットなど、カーディナリティ(異なるラベル値の数)の高いディメンションを保存するためにラベルを使用しないでください。

基本単位

Prometheusには、ハードコードされた単位はありません。互換性を高めるために、基本単位を使用する必要があります。以下に、基本単位を持ついくつかのメトリクスファミリを示します。リストは網羅的ではありません。

ファミリ 基本単位 備考
時間
温度 摂氏 実用的な理由から、ケルビンよりも摂氏が推奨されます。色温度や温度が絶対値である必要がある特別な場合には、ケルビンが基本単位として許容されます。
長さ メートル
バイト バイト
ビット バイト 異なるメトリクスの組み合わせによる混乱を避けるために、ビットの方が一般的と思われる場合でも、常にバイトを使用してください。
パーセント 比率 値は0〜1(0〜100ではなく)。ratioは、disk_usage_ratioのような名前の接尾辞としてのみ使用されます。通常のメトリクス名は、A_per_Bのパターンに従います。
電圧 ボルト
電流 アンペア
エネルギー ジュール
電力 ジュールのカウンターをエクスポートし、rate(joules[5m])を実行すると、ワット単位の電力が得られます。
質量 グラム キロ接頭辞に関する問題を避けるために、キログラムよりもグラムが推奨されます。

このドキュメントはオープンソースです。問題点を報告するか、プルリクエストを提出して、改善にご協力ください。