データモデル

Prometheusは基本的にすべてのデータを時系列データとして保存します。同じメトリックと同一のラベル付き次元セットに属するタイムスタンプ付き値のストリームです。保存された時系列データに加えて、Prometheusはクエリ結果として一時的な導出時系列データを生成する場合があります。

メトリック名とラベル

各時系列データは、メトリック名とオプションのキーバリューペア(ラベルと呼ばれる)によって一意に識別されます。

メトリック名

  • 測定されるシステムの一般的な機能を指定します(例:http_requests_total - 受信したHTTPリクエストの総数)。
  • メトリック名は、ASCII文字、数字、アンダースコア、コロンを含めることができます。正規表現[a-zA-Z_:][a-zA-Z0-9_:]*に一致する必要があります。

注:コロンは、ユーザー定義のレコーディングルールのために予約されています。エクスポーターや直接的なインストルメンテーションでは使用しないでください。

メトリックラベル

  • Prometheusの多次元データモデルを有効にして、同じメトリック名に対して任意のラベルの組み合わせを識別します。これにより、そのメトリックの特定の多次元インスタンスが識別されます(例:メソッドPOSTを使用して/api/tracksハンドラーに送信されたすべてのHTTPリクエスト)。クエリ言語では、これらの次元に基づいてフィルタリングと集計を行うことができます。
  • ラベル値の変更(ラベルの追加または削除を含む)は、新しい時系列データを作成します。
  • ラベルには、ASCII文字、数字、アンダースコアを含めることができます。正規表現[a-zA-Z_][a-zA-Z0-9_]*に一致する必要があります。
  • __(2つの"_")で始まるラベル名は、内部使用のために予約されています。
  • ラベル値には、任意のUnicode文字を含めることができます。
  • 空のラベル値を持つラベルは、存在しないラベルと同等と見なされます。

メトリックとラベルの命名に関するベストプラクティスも参照してください。

サンプル

サンプルは、実際の時系列データです。各サンプルは、以下で構成されます。

  • float64値
  • ミリ秒精度のタイムスタンプ
注:Prometheus v2.40以降、ネイティブヒストグラムの実験的サポートがあります。単純なfloat64の代わりに、サンプル値は完全なヒストグラムになる場合があります。

表記法

メトリック名とラベルのセットが与えられると、この表記法を使用して時系列データが頻繁に識別されます。

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

たとえば、メトリック名api_http_requests_totalとラベルmethod="POST"およびhandler="/messages"を持つ時系列データは、次のように記述できます。

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

これは、OpenTSDBで使用される表記法と同じです。

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