メインコンテンツへスキップ

メトリクスの公開

ClickHouse Cloud を使用している場合は、Prometheus インテグレーションを使用して、メトリクスを Prometheus に公開できます。
ClickHouse では、Prometheus にスクレイピングさせるための独自のメトリクスを公開できます:
<prometheus>
    <port>9363</port>
    <endpoint>/metrics</endpoint>
    <metrics>true</metrics>
    <asynchronous_metrics>true</asynchronous_metrics>
    <events>true</events>
    <errors>true</errors>
    <histograms>true</histograms>
    <dimensional_metrics>true</dimensional_metrics>
</prometheus>

`<prometheus.handlers>` セクションを使用すると、より高度なハンドラーを定義できます。
このセクションは [<http_handlers>](/concepts/features/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>
                <histograms>true</histograms>
                <dimensional_metrics>true</dimensional_metrics>
            </handler>
        </my_rule_1>
    </handlers>
</prometheus>
設定:
NameDefaultDescription
portnoneメトリクス公開プロトコルを提供するポートです。
endpoint/metricsPrometheus サーバーがメトリクスをスクレイピングするための HTTP エンドポイントです。/ で始まります。<handlers> セクションと併用しないでください。
url / headers / methodnoneリクエストに一致するハンドラーを見つけるためのフィルターです。<http_handlers> セクションの同名のフィールドと同様です。
metricstruesystem.metrics table のメトリクスを公開します。
asynchronous_metricstruesystem.asynchronous_metrics table の現在のメトリクス値を公開します。
eventstruesystem.events table のメトリクスを公開します。
errorstrue前回のサーバー再起動以降に発生した、エラーコードごとのエラー数を公開します。この情報は system.errors からも取得できます。
histogramstruesystem.histogram_metrics のヒストグラムメトリクスを公開します
dimensional_metricstruesystem.dimensional_metrics の次元メトリクスを公開します
確認します (127.0.0.1 は ClickHouse サーバーの IP アドレスまたはホスト名に置き換えてください) :
curl 127.0.0.1:9363/metrics

Remote-write プロトコル

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>
設定:
NameDefaultDescription
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>
設定:
NameDefaultDescription
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>
                <histograms>true</histograms>
                <dimensional_metrics>true</dimensional_metrics>
            </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>
最終更新日 2026年6月10日