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

Протоколы Prometheus

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

Примечание

Если вы используете 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>

Section `<prometheus.handlers>` can be used to make more extended handlers.
This section is similar to [<http_handlers>](/interfaces/http) but works for prometheus protocols:

```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>

Настройки:

ИмяПо умолчаниюОписание
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>

Параметры:

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>