メインコンテンツまでスキップ
メインコンテンツまでスキップ

Prometheusプロトコル

メトリクスの公開

注記

ClickHouse Cloudを使用している場合、Prometheus Integrationを使用してPrometheusにメトリクスを公開できます。

ClickHouseは、Prometheusからスクレイピングするための自分のメトリクスを公開できます:

<prometheus>
    <port>9363</port>
    <endpoint>/metrics</endpoint>
    <metrics>true</metrics>
    <asynchronous_metrics>true</asynchronous_metrics>
    <events>true</events>
    <errors>true</errors>
</prometheus>

セクション `<prometheus.handlers>` は、より拡張されたハンドラーを作成するために使用できます。
このセクションは [<http_handlers>](/interfaces/http) と似ていますが、prometheusプロトコル用に機能します:

```xml
<prometheus>
    <port>9363</port>
    <handlers>
        <my_rule_1>
            <url>/metrics</url>
            <handler>
                <type>expose_metrics</type>
                <metrics>true</metrics>
                <asynchronous_metrics>true</asynchronous_metrics>
                <events>true</events>
                <errors>true</errors>
            </handler>
        </my_rule_1>
    </handlers>
</prometheus>

設定:

名前デフォルト説明
portなしメトリクス公開プロトコルの提供に使用されるポート。
endpoint/metricsprometheusサーバーによるメトリクスのスクレイピング用HTTPエンドポイント。/で始まります。<handlers>セクションと一緒には使用できません。
url / headers / methodなしリクエストに対して一致するハンドラーを見つけるために使用されるフィルター。<http_handlers>セクションの同名のフィールドと似ています。
metricstruesystem.metrics テーブルからメトリクスを公開します。
asynchronous_metricstruesystem.asynchronous_metrics テーブルから現在のメトリクス値を公開します。
eventstruesystem.events テーブルからメトリクスを公開します。
errorstrue最後のサーバー再起動以降に発生したエラーコードによるエラー数を公開します。この情報は system.errors からも取得できます。

確認(127.0.0.1 をあなたのClickHouseサーバーのIPアドレスまたはホスト名に置き換えます):

curl 127.0.0.1:9363/metrics

リモート書き込みプロトコル

ClickHouseは remote-write プロトコルをサポートしています。 データはこのプロトコルによって受信され、TimeSeries テーブルに書き込まれます(テーブルは事前に作成する必要があります)。

<prometheus>
    <port>9363</port>
    <handlers>
        <my_rule_1>
            <url>/write</url>
            <handler>
                <type>remote_write</type>
                <database>db_name</database>
                <table>time_series_table</table>
            </handler>
        </my_rule_1>
    </handlers>
</prometheus>

設定:

名前デフォルト説明
portなしremote-writeプロトコルの提供に使用されるポート。
url / headers / methodなしリクエストに対して一致するハンドラーを見つけるために使用されるフィルター。<http_handlers>セクションの同名のフィールドと似ています。
tableなしremote-writeプロトコルで受信したデータを書き込むTimeSeriesテーブルの名前。この名前にはオプションでデータベース名を含めることができます。
databaseなしtable設定で指定されたテーブルが存在するデータベース名(table設定で指定されていない場合)。

リモート読み込みプロトコル

ClickHouseは remote-read プロトコルをサポートしています。 データはTimeSeries テーブルから読み取られ、このプロトコルを介して送信されます。

<prometheus>
    <port>9363</port>
    <handlers>
        <my_rule_1>
            <url>/read</url>
            <handler>
                <type>remote_read</type>
                <database>db_name</database>
                <table>time_series_table</table>
            </handler>
        </my_rule_1>
    </handlers>
</prometheus>

設定:

名前デフォルト説明
portなしremote-readプロトコルの提供に使用されるポート。
url / headers / methodなしリクエストに対して一致するハンドラーを見つけるために使用されるフィルター。<http_handlers>セクションの同名のフィールドと似ています。
tableなしremote-readプロトコルによって送信されるデータを読み取るTimeSeriesテーブルの名前。この名前にはオプションでデータベース名を含めることができます。
databaseなしtable設定で指定されたテーブルが存在するデータベース名(table設定で指定されていない場合)。

複数プロトコルの設定

複数のプロトコルを1つの場所に指定できます:

<prometheus>
    <port>9363</port>
    <handlers>
        <my_rule_1>
            <url>/metrics</url>
            <handler>
                <type>expose_metrics</type>
                <metrics>true</metrics>
                <asynchronous_metrics>true</asynchronous_metrics>
                <events>true</events>
                <errors>true</errors>
            </handler>
        </my_rule_1>
        <my_rule_2>
            <url>/write</url>
            <handler>
                <type>remote_write</type>
                <table>db_name.time_series_table</table>
            </handler>
        </my_rule_2>
        <my_rule_3>
            <url>/read</url>
            <handler>
                <type>remote_read</type>
                <table>db_name.time_series_table</table>
            </handler>
        </my_rule_3>
    </handlers>
</prometheus>