在日常运维中,ClickHouse作为高性能列存数据库,其运行状态(如增删查改操作、数据合并、磁盘IO等)的监控至关重要。本文将详细介绍如何借助ClickHouse自带的Prometheus组件,搭配Prometheus采集数据与Grafana可视化展示,搭建一套完整的ClickHouse监控体系,适用于运维人员或技术开发同学参考实践。
一、前提准备:环境与角色分配
本次搭建涉及两台服务器,IP与角色分配如下,需提前确保服务器间网络互通,且已安装基础依赖(如wget、vim等):
- 192.168.184.151:部署ClickHouse,负责提供监控数据源
- 192.168.184.152:部署Prometheus(数据采集)与Grafana(可视化展示)
二、步骤1:开启ClickHouse自带的监控数据采集
ClickHouse默认集成了Prometheus监控组件,只需修改配置文件即可启用,具体操作如下:
1. 修改ClickHouse配置文件
登录192.168.184.151服务器,编辑ClickHouse主配置文件:
bash
vim /etc/clickhouse-server/config.xml
在文件中搜索"prometheus"关键字,找到如下配置段并去掉注释(默认注释状态):
xml
<prometheus>
<endpoint>/metrics</endpoint> <!-- 监控数据接口路径 -->
<port>9363</port> <!-- 监控数据端口 -->
<metrics>true</metrics> <!-- 是否采集system.metrics表数据 -->
<events>true</events> <!-- 是否采集system.events表数据 -->
<asynchronous_metrics>true</asynchronous_metrics> <!-- 是否采集异步指标 -->
</prometheus>
2. 重启ClickHouse服务使配置生效
修改完配置后,重启ClickHouse服务:
bash
/etc/init.d/clickhouse-server restart
3. 验证监控数据是否正常输出
在浏览器或服务器端通过curl命令访问监控接口,确认能获取到数据:
bash
# 服务器端验证命令
curl http://192.168.184.151:9363/metrics
若返回大量以"clickhouse_"开头的指标数据(如clickhouse_metrics_Read),则说明ClickHouse监控组件已成功启用。

三、步骤2:安装与配置Prometheus(数据采集)
Prometheus负责从ClickHouse采集监控数据,需在192.168.184.152服务器上完成安装与配置。
1. 下载并解压Prometheus
首先进入/usr/src目录,下载指定版本的Prometheus(本文使用v3.8.1,可根据需求替换为最新版):
bash
cd /usr/src
# 下载Prometheus安装包
wget https://github.com/prometheus/prometheus/releases/download/v3.8.1/prometheus-3.8.1.linux-amd64.tar.gz
# 解压安装包
tar zxvf prometheus-3.8.1.linux-amd64.tar.gz
# 将解压后的文件夹移动到/usr/local目录(标准安装路径)
mv prometheus-3.8.1.linux-amd64 /usr/local/prometheus
2. 配置Prometheus为系统服务
为方便管理Prometheus服务(如开机自启、重启),将其配置为系统服务:
bash
# 创建服务配置文件
vim /etc/systemd/system/prometheus.service
在文件中添加如下内容:
ini
[Unit]
Description=Prometheus # 服务描述
After=network-online.target # 网络就绪后启动
[Service]
User=prometheus # 运行服务的用户(后续创建)
Restart=on-failure # 服务故障时自动重启
# 启动命令:指定数据存储路径与配置文件路径
ExecStart=/usr/local/prometheus/prometheus --storage.tsdb.path=/usr/local/prometheus/data/ --config.file=/usr/local/prometheus/prometheus.yml
[Install]
WantedBy=multi-user.target # 多用户模式下生效
3. 创建Prometheus用户与数据目录
创建专属用户与数据存储目录,并设置权限:
bash
# 创建数据目录
mkdir -p /usr/local/prometheus/data/
# 进入Prometheus安装目录
cd /usr/local/prometheus
# 创建prometheus用户(无需登录权限)
useradd prometheus
# 递归修改目录权限,确保用户可读写
chown -R prometheus.prometheus ./*
四、步骤3:配置Prometheus采集ClickHouse数据
完成Prometheus安装后,需配置数据采集规则,让其定期从ClickHouse获取监控数据。
1. 修改Prometheus主配置文件
编辑Prometheus主配置文件prometheus.yml,添加ClickHouse的采集任务:
bash
vim /usr/local/prometheus/prometheus.yml
在scrape_configs节点下添加如下内容(与原有任务并列):
yaml
scrape_configs:
# 已有的默认任务(保留)
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
# 新增ClickHouse采集任务
- job_name: 'clickhouse'
file_sd_configs:
# 从指定JSON文件读取采集目标,15秒刷新一次
- files: ["/usr/local/prometheus/conf.d/clickhouse.json"]
refresh_interval: 15s
使用以下命令校验prometheus.yml文件是否正确:
bash
/usr/local/prometheus/promtool check config /usr/local/prometheus/prometheus.yml

2. 创建ClickHouse采集目标配置文件
按照上述配置,创建conf.d目录与clickhouse.json文件,定义ClickHouse的IP与端口:
bash
# 创建配置文件目录
mkdir /usr/local/prometheus/conf.d
# 创建ClickHouse采集目标文件
vim /usr/local/prometheus/conf.d/clickhouse.json
在文件中添加如下JSON内容(targets为ClickHouse的监控端口):
json
[
{
"targets": ["192.168.184.151:9363"], # ClickHouse监控地址(IP:端口)
"labels": {
"servicename": "ClickHouse", # 服务名称(便于后续筛选)
"env": "Prod", # 环境标识(如生产环境)
"hostname": "clickhouse-01" # 主机名(便于区分多实例)
}
}
]
3. 启动Prometheus并验证
启动Prometheus服务,并检查是否正常运行:
bash
# 重新加载系统服务配置(识别新创建的prometheus.service)
systemctl daemon-reload
# 启动Prometheus服务
systemctl start prometheus
# 查看服务状态(确保显示active (running))
systemctl status prometheus
# (可选)设置开机自启
systemctl enable prometheus

若需快速验证进程,可执行如下命令查看Prometheus进程:
bash
ps -ef | grep prometheus

五、步骤4:在Prometheus页面验证数据采集
Prometheus提供Web界面,可直观查看采集目标与监控数据,操作如下:
1. 访问Prometheus Web界面
在浏览器中输入地址:http://192.168.184.152:9090(Prometheus默认端口9090)。

2. 查看ClickHouse采集状态
- 点击顶部菜单栏「Status」→「Target 」,在页面中找到「clickhouse」任务。
- 若「State」列显示「UP」,说明Prometheus已成功连接ClickHouse并采集数据;若为「DOWN」,需检查ClickHouse监控端口是否开放、配置文件中的IP/端口是否正确。

3. 用PromQL查询监控数据
在Web界面顶部的查询框中,输入PromQL语句可直接查询监控指标,常用语句如下:
up{hostname="clickhouse-01"}:查询ClickHouse实例是否在线(返回1表示在线,0表示离线)。clickhouse_metrics_Read:查询ClickHouse的读取操作总量。clickhouse_events_Merges:查询ClickHouse的数据合并操作次数。
输入语句后点击「Execute」,即可看到对应的指标数据或图表。

六、步骤5:部署Grafana实现监控可视化
Prometheus的可视化能力较弱,Grafana可通过拖拽式面板,将监控数据转化为直观的图表(如折线图、柱状图),具体部署步骤如下:
1. 安装Grafana
在192.168.184.152服务器上,通过yum命令安装Grafana(本文使用v10.2.3版本):
bash
yum install -y https://dl.grafana.com/oss/release/grafana-10.2.3-1.x86_64.rpm
2. 启动Grafana服务
bash
# 启动Grafana服务
systemctl start grafana-server.service
# 查看服务状态
systemctl status grafana-server.service
# (可选)设置开机自启
systemctl enable grafana-server.service

3. 登录Grafana Web界面
Grafana默认端口为3000,在浏览器中输入地址:http://192.168.184.152:3000,首次登录需注意:
-
初始用户名与密码均为「admin」。
-
登录后会提示修改密码,可根据需求修改(或点击「Skip」跳过)。



七、步骤6:配置Grafana展示ClickHouse监控数据
Grafana需先关联Prometheus数据源,再导入ClickHouse专属的Dashboard模板,即可实现监控可视化。
1. 添加Prometheus数据源
-
登录Grafana后,点击界面中「Data sources」。

-
在数据源列表中选择「Prometheus」,进入配置页面。

-
在「HTTP」→「URL」处输入Prometheus的地址:
http://192.168.184.152:9090,其他参数保持默认。

-
点击页面底部「Save & Test」,若显示「Data source is working」,说明数据源配置成功。

2. 导入ClickHouse Dashboard模板
Grafana社区提供了现成的ClickHouse监控模板,无需手动创建面板,直接导入即可:
-
点击菜单栏「Dashboards」→「New dashboard」→「Import」。


-
在「Import via grafana.com」输入框中,输入ClickHouse模板ID:「14192」(该模板为社区热门模板,适配ClickHouse监控),点击「Load」。

-
在接下来的页面中,选择已配置的Prometheus数据源(下拉框选择),点击「Import」。


3. 查看监控可视化图表
导入完成后,即可进入ClickHouse监控面板,查看各类指标的可视化展示:
-
包含「Overview」(整体状态)、「Queries」(查询性能)、「Merges」(数据合并)、「Disk IO」(磁盘IO)等模块。
-
可根据需求调整图表时间范围(如近1小时、近24小时),或点击图表查看详细数据。

总结
本文通过6个核心步骤,完成了ClickHouse监控体系的搭建:从启用ClickHouse自带监控,到Prometheus采集数据,再到Grafana可视化展示,实现了对ClickHouse关键指标的实时监控。整个流程的核心在于配置文件的准确性(如Prometheus的采集任务、Grafana的数据源关联),若遇到问题可优先检查配置文件与服务状态。
后续可根据实际需求,在Grafana中自定义面板(如添加告警规则),或扩展监控指标(如ClickHouse的连接数、查询延迟等),进一步完善监控体系。