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

Протоколы 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>

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

Протокол удаленной записи

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>

Настройки:

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

Настройки:

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