一、ClickHouse 监控概述
- ClickHouse 运行时会将一些个自身的运行状态记录到众多系统表中(
system.*
)。所以对于 ClickHouse 自身的一些运行指标的监控数据,也主要来自这些系统表。 - 直接查询这些系统表进行监控会有一些不足之处:
- 这种方式太过底层,监控结果不够直观,还需要在此之上实现可视化展示
- 系统表只记录了 ClickHouse 自身的运行指标,有些时候还需要外部系统的指标进行关联分析,例如 ZooKeeper、服务器 CPU、IO 等。
- 目前市面上 Prometheus + Grafana 的组合进行监控比较流行,安装简单易上手,可以集成很多框架,包括服务器的负载,其中 Prometheus 负责收集各类系统的运行指标,Grafana 负责可视化的部分。
- ClickHouse 从 v20.1.2.4 开始,内置了对接 Prometheus 的功能,配置的方式也很简单,可以将其作为 Prometheus 的 Endpoint 服务,从而自动的将 metrics 、 events 和 asynchronous_metrics 三张系统的表的数据发送给 Prometheus。
二、Prometheus 和 Grafana 的安装
1. Prometheus 安装
Prometheus 下载地址:https://prometheus.io/download/
-
将 Prometheus 的安装包 prometheus-2.26.0.linux-amd64.tar.gz 上传到虚拟机节点
-
解压安装包
shellcd /opt/software tar -zxvf prometheus-2.26.0.linux-amd64.tar.gz -C /opt/module cd /opt/module mv prometheus-2.26.0.linux-amd64 prometheus-2.26.0
-
修改配置文件
shellcd /opt/module/prometheus-2.26.0 vim prometheus.yml #添加 ClickHouse 监控配置(注意缩进) - job_name: 'clickhouse-1' static_configs: - targets: ['hadoop102:9363'] #配置说明: #1、global 配置块:控制 Prometheus 服务器的全局配置 #1.1 scrape_interval:配置拉取数据的时间间隔,默认为 1 分钟。 #1.2 evaluation_interval:规则验证(生成 alert)的时间间隔,默认为 1 分钟。 #2、rule_files 配置块:规则配置文件 #3、scrape_configs 配置块:配置采集目标相关, prometheus 监视的目标。Prometheus 自身的运行信息可以通过 HTTP 访问,所以 Prometheus 可以监控自己的运行数据。 #3.1 job_name:监控作业的名称 #3.2 static_configs:表示静态目标配置,就是固定从某个 target 拉取数据 #3.3 targets:指定监控的目标,其实就是从哪儿拉取数据。Prometheus 会从http://hadoop1:9090/metrics 上拉取数据。 #Prometheus 是可以在运行时自动加载配置的。启动时需要添加:--web.enable-lifecycle
-
启动 Prometheus Server
shellcd /opt/module/prometheus-2.26.0 nohup ./prometheus --config.file=prometheus.yml > ./prometheus.log 2>&1 &
-
登录 web 端查看:http://[host]:9090/,点击 Status,选中 Targets
2. Grafana 安装
Grafana 下载地址:https://grafana.com/grafana/download
-
将 Grafana 的安装包 grafana-7.5.2.linux-amd64.tar.gz 上传到虚拟机节点
-
解压安装包
shellcd /opt/software tar -zxvf grafana-7.5.2.linux-amd64.tar.gz -C /opt/module cd /opt/module mv grafana-7.5.2.linux-amd64.tar.gz grafana-7.5.2
-
启动 Grafana
shellcd /opt/module/grafana-7.5.2 nohup ./bin/grafana-server web > ./grafana.log 2>&1 &
-
登录 web 端查看:http://[host]:3000,默认用户名和密码为 admin
三、ClickHouse 配置
-
修改 ClickHouse 配置文件
shellsudo vim /etc/clickhouse-server/config.xml #打开prometheus注释 <prometheus> <endpoint>/metrics</endpoint> <port>9363</port> <metrics>true</metrics> <events>true</events> <asynchronous_metrics>true</asynchronous_metrics> <status_info>true</status_info> </prometheus> #如果有多个 CH 节点,分发配置
-
启动 ClickHouse 服务
shellsudo clickhouse restart
-
访问 web 查看:http://[host]:9363/metrics,看到信息说明 ClickHouse 开启 Metrics 服务成功
四、Grafana 集成 Prometheus
- 在 Grafana 的 web 页面上添加 Prometheus 数据源
- 在首页左侧菜单栏点击配置菜单,然后点击 Data Sources 按钮
- 在 Data Sources 页面点击 Add data source 按钮
- 在搜索框查找 Prometheus,在展示结果里选择点击 select 按钮
- 在 Prometheus 设置页面填写名称、url 等相关配置信息,然后点击 save&test 按钮
- 出现绿色的提示框,表示与 Prometheus 正常联通,点击 back 按钮返回 Data Sources 页面,出现了添加的 Prometheus
- 添加 ClickHouse 监控看板
- 通过 https://grafana.com/dashboards 网站,可以找到大量可直接使用的 Dashboard 模板,选择一个下载,下载内容为一个 json 文件
- 在 Grafana 首页左侧菜单栏点击 + 按钮,然后点击 import 按钮
- 在导入页面点击 upload json file 按钮,上传下载的 Dashboard 模板
- 配置关联已经添加的 Prometheus 数据源
- 查看监控看板内容并保存看板
五、备份及恢复
1. 手动恢复及备份
-
创建备份路径
shellsudo mkdir -p /var/lib/clickhouse/shadow/ sudo chown clickhouse:clickhouse /var/lib/clickhouse/shadow/ #如果目录存在,先清空目录下的数据
-
执行备份命令
shellecho -n 'alter table t_order_mt freeze' | clickhouse-client
-
将备份数据保存到其他路径
shell#创建备份存储路径 sudo mkdir -p /var/lib/clickhouse/backup/ sudo chown clickhouse:clickhouse /var/lib/clickhouse/backup/ #拷贝数据到备份路径 sudo cp -r /var/lib/clickhouse/shadow/ /var/lib/clickhouse/backup/my-backup-name #为下次备份准备,删除 shadow 下的数据 sudo rm -rf /var/lib/clickhouse/shadow/*
-
恢复数据
shell#拷贝t_order_mt的建表语句到 events.sql 文件 #模拟删除备份过的表 echo 'drop table t_order_mt' | clickhouse-client #重新创建表 cat events.sql | clickhouse-client #将之前备份的表分区目录复制到新创建表的 detached 目录 sudo cp -rl /var/lib/clickhouse/backup/my-backup-name/1/store/cb1/cb176503-cd88-4ea8-8b17-6503cd888ea8/* /var/lib/clickhouse/data/default/t_order_mt/detached/ #执行 attach echo 'alter table t_order_mt attach partition 20200601' | clickhouse-client #在 clickhouse 中查看数据 select * from t_order_mt;