データモデル - Prometheusドキュメント

このページはPrometheus公式ドキュメント和訳+αの一部です。

Prometheusは、根本的に、全てのデータを時系列(同じメトリックで同じ値を持つラベルの集合に属する一連のタイムスタンプ付きの値)として保存する。 Prometheusは、クエリの結果として、一時的に派生した時系列を生成することもある。

メトリック名とラベル

各時系列は、メトリック名とキー・バリューの組み合わせ(ラベルとも言う)の集合により、ユニークに特定される。

メトリック名は、システムの測定される一般的な機能(例えば、http_requests_total 受信したHTTPリクエスの合計)を特定する。 メトリック名は、ASCIIの文字と数字およびコロンとアンダースコアを含むことができ、 正規表現[a-zA-Z_:][a-zA-Z0-9_:]*にマッチしなければいけない。

注意: コロンは、ユーザー定義のレコーディングルールのために予約されており、exporterや直接のinstrumentationで利用してはいけない。

ラベルによって、Prometheusの多次元データモデルが可能になっている。 同じ名前のメトリック名に対して与えられたラベルの組み合わせによって、そのメトリックの特定の具体的な要素(例えば、/api/tracksに対する全てのPOSTメソッドのHTTPリクエスト)を指定する。 クエリ言語によって、これらの次元に基づいた抽出と集約が可能となる。 ラベルの値を変更したり、ラベルを追加・削除したりすると、新しい時系列が作成される。

ラベル名は、ASCIIの文字、数字、およびアンダースコアを含むことが可能で、 正規表現[a-zA-Z_][a-zA-Z0-9_]*にマッチしなければならない。 __で始まるラベル名は内部利用のために予約されている。

ラベルの値は、任意のUnicode文字を含むことが可能である。

メトリック名とラベル名ベストプラクティスも参照すること。

サンプル

サンプルが実際の時系列データを構成する。 各サンプルは以下のデータから成る。

  • float64の値
  • ミリ秒精度のタイムスタンプ

記法

メトリック名とラベルの集合に対して、時系列は、よく、この記法を用いて指定される。

<metric name>{<label name>=<label value>, ...}

例えば、api_http_requests_totalというメトリック名およびmethod="POST"handler="/messages"というラベルを持つ時系列は下記のように記述される。

api_http_requests_total{method="POST", handler="/messages"}

これは、OpenTSDBで用いられる記法と同じである。

参考リンク

おすすめ書籍

入門 Prometheus ―インフラとアプリケーションのパフォーマンスモニタリング

入門 Prometheus ―インフラとアプリケーションのパフォーマンスモニタリング

入門 監視 ―モダンなモニタリングのためのデザインパターン

入門 監視 ―モダンなモニタリングのためのデザインパターン

SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム

SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム

和訳活動の支援

Prometheusドキュメント和訳が役に立った方は、以下QRコードからPayPayで活動を支援して頂けるとありがたいです。

PayPayによる支援用QRコード
上のQRコードからPayPayによる支援