Перейти к основному содержанию

Экспорт метрик

Если вы используете 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/metricsHTTP-конечная точка для сбора метрик сервером Prometheus. Начинается с /. Не следует использовать вместе с разделом <handlers>.
url / headers / methodnoneФильтры, используемые для поиска обработчика, соответствующего запросу. Аналогичны полям с теми же именами в разделе <http_handlers>.
metricstrueПубликовать метрики из таблицы system.metrics.
asynchronous_metricstrueПубликовать текущие значения метрик из таблицы system.asynchronous_metrics.
eventstrueПубликовать метрики из таблицы system.events.
errorstrueПубликовать количество ошибок по кодам, возникших с момента последнего перезапуска сервера. Эту информацию также можно получить из таблицы system.errors.
histogramstrueПубликовать метрики-гистограммы из system.histogram_metrics
dimensional_metricstrueПубликовать размерные метрики из system.dimensional_metrics
Проверьте (замените 127.0.0.1 на IP-адрес или имя хоста вашего сервера ClickHouse):
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>
Настройки:
ИмяПо умолчаниюОписание
portнетПорт для обработки протокола remote-write.
url / headers / methodнетФильтры, используемые для поиска обработчика, соответствующего запросу. Аналогично полям с теми же именами в разделе <http_handlers>.
tableнетИмя таблицы TimeSeries, в которую записываются данные, полученные по протоколу remote-write. При необходимости это имя также может включать имя базы данных.
databaseнетИмя базы данных, в которой находится таблица, указанная в настройке table, если база данных не указана в настройке table.

Протокол remote-read

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нетИмя таблицы TimeSeries, из которой читаются данные для отправки по протоколу remote-read. Это имя при необходимости также может включать имя базы данных.
databaseнетИмя базы данных, в которой находится таблица, указанная в настройке table, если оно не указано в самой настройке table.

Конфигурация для нескольких протоколов

Сразу несколько протоколов можно указать в одном месте:
<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>
Последнее изменение 10 июня 2026 г.