跳至主要内容

Prometheus 协议

暴露指标

注意

ClickHouse Cloud 目前不支持连接到 Prometheus。要获知此功能何时可用,请联系 [email protected]

ClickHouse 可以暴露自己的指标,供 Prometheus 抓取

<prometheus>
<port>9363</port>
<endpoint>/metrics</endpoint>
<metrics>true</metrics>
<asynchronous_metrics>true</asynchronous_metrics>
<events>true</events>
<errors>true</errors>
</prometheus>

Section `<prometheus.handlers>` can be used to make more extended handlers.
This section is similar to [<http_handlers>](/en/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>
</handler>
</my_rule_1>
</handlers>
</prometheus>

设置

名称默认值描述
端口用于提供暴露指标协议的端口。
端点/metricsPrometheus 服务器抓取指标的 HTTP 端点。以/开头。不应与<handlers>部分一起使用。
url / headers / method用于查找与请求匹配的处理程序的过滤器。类似于<http_handlers>部分中名称相同的字段。
指标true暴露来自system.metrics表的指标。
异步指标true暴露来自system.asynchronous_metrics表的当前指标值。
事件true暴露来自system.events表的指标。
错误true暴露自上次服务器重启以来发生的错误代码的错误数量。此信息也可以从system.errors中获取。

检查(将127.0.0.1替换为 ClickHouse 服务器的 IP 地址或主机名)

curl 127.0.0.1:9363/metrics

远程写入协议

ClickHouse 支持远程写入协议。通过此协议接收数据并写入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>

设置

名称默认值描述
端口用于提供remote-write协议的端口。
url / headers / method用于查找与请求匹配的处理程序的过滤器。类似于<http_handlers>部分中名称相同的字段。
用于写入通过remote-write协议接收的数据的TimeSeries表的名称。此名称也可以包含数据库的名称。
数据库如果在table设置中未指定,则包含table设置中指定的表的数据库的名称。

远程读取协议

ClickHouse 支持远程读取协议。从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>

设置

名称默认值描述
端口用于提供remote-read协议的端口。
url / headers / method用于查找与请求匹配的处理程序的过滤器。类似于<http_handlers>部分中名称相同的字段。
用于读取要通过remote-read协议发送的数据的TimeSeries表的名称。此名称也可以包含数据库的名称。
数据库如果在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>
</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>