このページはPrometheus公式ドキュメント和訳+αの一部です。
このドキュメントで提示されているメトリックとラベルの規約は、Prometheusの利用にあたって必須とは言えないが、スタイルガイドおよびベストプラクティスとして利用できる。個々の組織では、これらのプラクティスのいくつか(例えば、命名規約)を変更したいかもしれない。
メトリック名
メトリック名は、
- そのメトリックが属しているドメインに関する一単語のアプリケーションprefixを付けるべきである。このprefixは、クライアントライブラリでは、名前空間(namespace)と呼ばれることがある。あるアプリケーションの特有のメトリックでは、アプリケーション名自体が普通はprefixとなる。クライアントライブラリからexportされている標準化されたメトリックのように一般的なものもある。例えば、
- prometheus_notifications_total (Prometheusサーバーに特有のもの)
- process_cpu_seconds_total (たくさんのクライアントライブラリからexportされたもの)
- http_request_duration_seconds (全てのHTTPリクエストのためのもの)
- 単位を一つだけ持つべきである。秒とミリ秒を混ぜたり、秒とバイトを混ぜたりしないこと。
- 基本単位を使うべきである。例えば、ミリ秒、メガバイト、キロメーターではなく、秒、バイト、メーターを使う。
- 単位を複数形で表したsuffixを付けるべきである。カウントには、suffixとして、(適用可能な単位があればそれに加えて)
total
を付けること。- http_request_duration_seconds
- node_memory_usage_bytes
- http_requests_total (単位がないカウント)
- process_cpusecondstotal (単位のあるカウント)
- 全てのラベル軸を通して同一の論理的な測定対象を表すべきである。
- request duration
- bytes of data transfer
- instantaneous resource usage as a percentage
大まかなルールとして、sum()
やavg()
が全ての軸に対して意味をなすようにするべきである。
もしそれらが意味をなさないなら、そのデータを複数のメトリクスに分解すること。
例えば、様々なキューの容量を一つのメトリックとして持つことは良いが、キューの現在の要素数を混ぜるのは良くない。
Labels
ラベルは、測定されるものの特徴が区別できるように使うこと。
- api_http_requests_total - リクエストタイプが区別できるようにする: type="create|update|delete"
- api_request_duration_seconds - リクエストの段階が区別できるようにする: stage="extract|transform|load"
ラベル名をメトリック名に入れないこと。入れてしまうと、集約してそのラベルがなくなったときに混乱を起こす。
注意: 全てのkey-valueの組み合わせは新しい時系列となり、データ量を劇的に増やしてしまう。沢山の値を持つラベル(ユーザーIDやメールアドレス、その他の無限集合であるもの)は使わないこと
参考リンク
おすすめ書籍

入門 Prometheus ―インフラとアプリケーションのパフォーマンスモニタリング
- 作者: Brian Brazil,須田一輝,長尾高弘
- 出版社/メーカー: オライリージャパン
- 発売日: 2019/05/18
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る

- 作者: Mike Julian,松浦隼人
- 出版社/メーカー: オライリージャパン
- 発売日: 2019/01/17
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る

SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム
- 作者: 澤田武男,関根達夫,細川一茂,矢吹大輔,Betsy Beyer,Chris Jones,Jennifer Petoff,Niall Richard Murphy,Sky株式会社玉川竜司
- 出版社/メーカー: オライリージャパン
- 発売日: 2017/08/12
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
和訳活動の支援
Prometheusドキュメント和訳が役に立った方は、以下QRコードからPayPayで活動を支援して頂けるとありがたいです。