You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ClickHouse三分片集群Prometheus监控缺失分片活动与可用性指标

解决ClickHouse分片集群的Prometheus监控缺失问题

方案1:通过系统表自定义采集分片状态指标

ClickHouse内置的系统表存储了分片和副本的核心状态数据,你可以通过定时查询这些表,将结果转换为Prometheus兼容的指标格式:

  • 核心查询示例(针对分片可用性):
    SELECT 
        cluster,
        shard_num,
        host_name,
        port,
        is_local,
        CASE WHEN is_alive THEN 1 ELSE 0 END AS shard_alive
    FROM system.clusters
    WHERE cluster = '你的集群名称'
    
  • 落地方式:
    • 编写Shell/Python脚本,定期执行上述查询,将输出转换为clickhouse_shard_alive{cluster="xxx",shard_num="1",host="xxx"} 1这类标准指标格式
    • 把脚本输出通过Prometheus的node_exporter文本采集器暴露,或者直接推送到Pushgateway

方案2:启用副本相关内置指标间接判断分片状态

默认Prometheus指标没有直接的分片状态,但开启副本监控指标后,可通过副本状态聚合推断分片可用性:

  • 在config.xml中补充启用副本相关指标:
    <prometheus>
        <endpoint>/metrics</endpoint>
        <port>9363</port>
        <metrics>true</metrics>
        <events>true</events>
        <asynchronous_metrics>true</asynchronous_metrics>
        <!-- 添加副本状态指标 -->
        <enable_metrics>replication_queue_size,replica_is_leader,replica_is_synced</enable_metrics>
    </prometheus>
    
  • 通过replica_is_synced等指标判断分片内副本的健康状态,若分片内至少一个副本同步正常,即可认定分片可用

方案3:用Blackbox Exporter探测分片节点可用性

通过Prometheus的Blackbox Exporter定期探测每个分片节点的服务端口(默认9000)和HTTP端口(默认8123):

  • 配置Blackbox的TCP/HTTP探测规则,针对每个分片节点生成probe_success指标
  • 为指标添加shard_num、cluster等标签,用于区分不同分片的可用性状态

内容的提问来源于stack exchange,提问作者Mohammad Reza Mousavi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 19:35:55