Prometheusコネクタ

Prometheusコネクタを使用すると、PrometheusのメトリクスをPrestoのテーブルとして読み取ることができます。

Prometheusへのクエリは、PrometheusのHTTP APIを使用します。具体的には、すべてのクエリは次のような形式のPrometheusのインスタントクエリに変換されます。http://localhost:9090/api/v1/query?query=up[21d]&time=1568229904.000 この場合、upメトリクスはPrestoクエリテーブル名から取得されます。21dはクエリの期間です。Prometheusのtime値はtimestampフィールドに対応します。Prestoクエリは、timestampフィールドの使用から、必要に応じて期間と時間値に変換されます。Prestoのスプリットは、クエリ範囲をほぼ均等なチャンクに分割することで生成されます。

設定

Prometheusコネクタをprometheusカタログとしてマウントするには、etc/catalog/prometheus.propertiesを作成し、必要に応じてプロパティを置き換えます。

connector.name=prometheus
prometheus.uri=http://localhost:9090
prometheus.query-chunk-duration=1d
prometheus.max-query-duration=1h
prometheus.cache-ttl=30s
prometheus.bearer-token-file=/path/to/bearer/token/file

設定プロパティ

次の設定プロパティを使用できます。

プロパティ名

説明

prometheus.uri

Prometheusコーディネーターのホストアドレス

prometheus.query-chunk-duration

Prometheusへの各クエリの期間

prometheus.max-query-duration

Prometheusへの全体的なクエリの幅。query-chunk-durationクエリに分割されます。

prometheus.cache-ttl

設定値がキャッシュされる期間

prometheus.bearer-token-file

Prometheusへのアクセスのためのベアラートークンを保持するファイル

Prestoで使用可能なヒープを使い切らないようにする

prometheus.query-chunk-durationprometheus.max-query-durationは、PrestoがPrometheusから過剰なデータを取得するのを防ぐための値です。prometheus.max-query-durationは特に重要な項目です。

長時間実行されているPrometheusインスタンスでは、データ保持設定によっては21dは長すぎる可能性があります。1hの方が適切な設定かもしれません。1hの場合、prometheus.query-chunk-duration10mに設定すると、クエリウィンドウを6つのクエリに分割でき、それぞれがPrestoスプリットで処理できます。

主にクエリ発行者は、timestampに関するWHERE句の制限を利用して、上限と下限を設定することで比較的狭いウィンドウを定義し、Prometheusから返されるデータ量を制限できます。例えば

SELECT * FROM prometheus.default.up WHERE timestamp > (NOW() - INTERVAL '10' second);

クエリにWHERE句の制限が含まれていない場合、これらの設定は、無制限のクエリに対する保護を目的としています。

ベアラートークン認証

Prometheusは、すべてのクエリでAuthorizationヘッダーを要求するように設定できます。prometheus.bearer-token-fileの値により、設定されたファイルからベアラートークンを読み取ることができます。このファイルはオプションであり、Prometheusの設定で要求されない限りは必要ありません。