Member-only story
Prometheusのデータのバックフィリング
5 min readAug 17, 2021
長い間、みなさんより要望があったPrometheusのバックフィリングサポートが、v2.24.0のリリースでついに実現しました。
OpenMetrics primer
Prometheusのバックフィリングは、現在のところ OpenMetricsフォーマットのみをサポートしています。これはメトリクスをシンプルなテキスト(またはprotobuf)で表したものです。
例:
# HELP http_requests_total The total number of HTTP requests.# TYPE http_requests_total counter http_requests_total{code="200",service="user"} 123 1609954636 http_requests_total{code="500",service="user"} 456 1609954730# EOF
HELPとTYPEは、MetricFamily(セット)の簡単な説明とそのデータ・タイプを表示しているMetricFamilyメタデータです。http_requests_total MetricFamilyには、2つのメトリックが含まれています。どちらもコンマで区切られたラベル、値、タイムスタンプ(Unix時間)が表示されます。
注意点:ファイル(”exposition”)はEOFで終わるようにしてください。
Backfilling
新しいバックフィリングのサポートは、promtoolを介してtsdbにcreate-blocks-from openmetricsサブコマンドとして実装されています。試しにやってみましょう。
まず、v2.24.0以降が動作していることを確認してください。お使いのディストリビューションにまだ入っていない場合は、バイナリリリースが便利です。
デフォルトのコンフィグレーションでprometheusを起動すると、以下のコンテンツのデータディレクトリが作成されます。
❯ tree datadata├── chunks_head├── lock├── queries.active└── wal└── 00000000
バックフィリングのコマンドを走らせてみましょう。
❯ ./promtool tsdb create-blocks-from openmetrics metrics