Skip to main content

暴露 ClickHouse 服务器指标

如果你使用的是 ClickHouse Cloud,可以通过 Prometheus 集成 向 Prometheus 暴露指标。
当 Prometheus 服务器需要抓取 ClickHouse 自身指标时,请配置专用端口:
<prometheus.handlers> 部分可用于在同一端口上配置更复杂的处理程序。 该部分与 <http_handlers> 类似,但适用于 Prometheus 协议:
设置: 检查端点:

Prometheus HTTP API 和 PromQL

ClickHouse 基于 TimeSeries 表实现 Prometheus HTTP API。一个处理程序可处理 远程写入、远程读取、即时 PromQL 查询和范围 PromQL 查询。

前置条件

为创建和访问该表的用户启用 allow_experimental_time_series_table 设置:
创建数据库和 TimeSeries 表:
对于 HTTP API 请求,请在 API 用户的 profile 中启用 allow_experimental_time_series_table

配置 Prometheus API

在主 ClickHouse HTTP 端口上配置一个按前缀路由的处理程序:
<defaults/> 会保留 /ping 等端点和 SQL 请求的内置处理程序。上述前缀通过一个处理程序公开这些端点: 该示例未在处理程序中指定 databasetable。每个请求都必须提供 table 查询参数。还可以提供 database、使用如 prometheus.metrics 这样的限定表名,或者省略数据库以使用 default。这样,一个处理程序即可为多个 TimeSeries 表提供服务。 若要让所有请求使用同一个固定表,请在处理程序中进行配置:
在 处理程序 中配置的表不能被请求参数覆盖。 路由和 处理程序 设置:

通过 远程写入 摄取指标

ClickHouse 支持 Prometheus remote-write 协议。配置 Prometheus 以向该处理程序写入数据:
Prometheus 会将样本写入 prometheus.metrics 表。

使用 PromQL 查询

使用即时查询端点,在某一时间点评估 PromQL 表达式:
使用范围查询端点计算指定时间范围内的表达式:
有关 HTTP API、promql 方言及表函数支持的函数和聚合运算符列表,请参阅支持的 PromQL 功能

Grafana

配置 Prometheus 数据源时,基础 URL 应以 /api/v1 之前的部分结尾:
Grafana 会将 /api/v1/query/api/v1/query_range 追加到此基础 URL,并在每个请求中添加 customQueryParameters
目前仅实现了查询端点 /api/v1/query/api/v1/query_range。Grafana Prometheus 数据源用于浏览标记、模板变量和查询构建器自动补全的元数据端点 (/api/v1/series/api/v1/labels/api/v1/label/<name>/values) 尚未实现,调用时会返回错误。请使用代码模式编写 PromQL 表达式,而不要使用查询构建器。

SQL 入口

ClickHouse 的 HTTP API、promql 方言以及 prometheusQueryprometheusQueryRange 表函数均使用同一个 PromQL 转换器。 使用 clickhouse-client 直接执行 PromQL:
使用表函数在 SQL 查询中嵌入 PromQL:

通过远程读取读取指标

ClickHouse 在 /prometheus/api/v1/read 提供对 Prometheus 远程读取协议的支持。 配置 Prometheus 服务器从同一个 TimeSeries 表中读取数据:
最后修改于 2026年8月18日