ClickHouse监控体系搭建:基于Prometheus+Grafana实现数据可视化

在日常运维中,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的连接数、查询延迟等),进一步完善监控体系。

相关推荐
·云扬·4 小时前
ClickHouse副本配置全攻略:基于ZooKeeper实现高可用部署
clickhouse·zookeeper·debian
小二·12 小时前
Python Web 开发进阶实战:性能压测与调优 —— Locust + Prometheus + Grafana 构建高并发可观测系统
前端·python·prometheus
·云扬·19 小时前
ClickHouse入门指南:从安装配置到核心数据类型解析
clickhouse
心丑姑娘20 小时前
clickhouse支持行存吗?什么时候开始支持的
clickhouse
心丑姑娘1 天前
使用clickhouse时怎么理解分区和分片
clickhouse
心丑姑娘1 天前
怎么理解ClickHouse的向量化执行
java·服务器·clickhouse
心丑姑娘1 天前
使用ClickHouse时的劣质SQL样例
数据库·sql·clickhouse
·云扬·1 天前
ClickHouse常用管理语句汇总:会话、磁盘、性能与复制管理
android·clickhouse
zxcxylong1 天前
almalinux下部署promethues+grafana服务-容器化
docker·grafana·prometheus·docker compose·almalinux