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

Протоколы Prometheus

Предоставление метрик

Примечание

Если вы используете ClickHouse Cloud, вы можете передавать метрики в Prometheus с помощью Prometheus Integration.

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>](/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>

Settings:

NameDefaultDescription
portnoneПорт для обработки протокола remote-write.
url / headers / methodnoneФильтры, используемые для поиска подходящего обработчика запроса. Аналогичны полям с теми же именами в разделе <http_handlers>.
tablenoneИмя таблицы TimeSeries, в которую записываются данные, полученные по протоколу remote-write. Это имя при необходимости также может включать имя базы данных.
databasenoneИмя базы данных, в которой находится таблица, указанная в настройке 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>

Параметры:

NameDefaultDescription
portnoneПорт для обработки протокола remote-read.
url / headers / methodnoneФильтры, используемые для поиска обработчика, соответствующего запросу. Аналогичны полям с теми же именами в разделе <http_handlers>.
tablenoneИмя таблицы TimeSeries, из которой читаются данные для отправки по протоколу remote-read. При необходимости это имя может включать имя базы данных.
databasenoneИмя базы данных, в которой находится таблица, указанная в параметре 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>