ClickHouse实战 | 跨界可观测性,Prometheus+Grafana图鉴
来源:落风潭
作者:落风潭
前几期的ClickHouse文章侧重点都在CH集群的高可用性和可扩展性。
作为拓展,本期从可观测性(Observability)的角度再探究一下ClickHouse。
ClickHouse与可观测性
可观测性并不是一个新概念,但技术总在变化发展,不同时期其内涵和外延也都有变化。
前阵子,潭主听了阿里在云栖大会上关于可观测性的分享,感觉当下有了GPU和LLM的加持,新一代AIOps比前些年要靠谱得多。
此外,无意间发现ClickHouse也在向可观测领域渗透,并推出了相应的可观测性解决方案——ClickStack,倒是给潭主增加了新的兴趣点。
本期先分享狭义的CH可观测性,主要聚焦Pormetheus和Grafana与ClickHouse的监控集成。
ClickHouse可观测性部署
主要步骤:
拉取相关镜像,下载对应的配置模板文件
Prometheus配置初始化
编辑docker compose的yml配置文件
部署并启动ClickHouse
Step 1:拉取镜像,下载相关配置模板文件
相关镜像如下:
clickhouse/clickchouse-server
quay.io/prometheus/prometheus
grafana/grafana
f1yegor/clickhouse-exporter
用docker cp从镜像中获取相应的配置模板文件:
/etc/prometheus/prometheus.yml
/etc/grafana/grafana.ini
关于ClickHouse部署,可参阅潭主之前的文章,这里略过。
《ClickHouse实战 | 新手必看!容器化部署,轻松玩转ROLAP》
Step 2:Prothetheus配置初始化
prometheus.yml修改内容如下:
- job_name: "ch-prometheus"static_configs:- targets: ["10.136.225.165:9090"]labels:app: "tk-prometheus"- job_name: "tk-clickhouse"file_sd_configs:- files: ["/etc/prometheus/targets/clickhouse/*.yml"]refresh_interval: 5s
潭主监控分成两个job,一个用的是传统静态配置方式,另一个则使用的是生产中常用的动态配置文件方式。
Step 3:编辑docker compose的yml配置文件
docker-compose.yml内容如下:
version: '3.5'services:prometheus:container_name: prometheusimage: quay.io/prometheus/prometheus:v3.4.2volumes:- D:\clickhouse-monitor\prometheus\conf\prometheus.yml:/etc/prometheus/prometheus.yml- D:\clickhouse-monitor\prometheus\targets:/etc/prometheus/targetsports:- "9090:9090"exporter:container_name: exporterimage: f1yegor/clickhouse-exporter:latestenvironment:- CLICKHOUSE_USER=default- CLICKHOUSE_PASSWORD=123456ports:- "9116:9116"command:- -scrape_uri=http://10.136.225.165:8123grafana:container_name: grafanaimage: grafana/grafana:latestvolumes:- D:\clickhouse-monitor\grafana\conf\grafana.ini:/etc/grafana/grafana.ini- D:\clickhouse-monitor\grafana\data\:/var/lib/grafana- D:\clickhouse-monitor\grafana\logs\:/var/log/grafana- D:\clickhouse-monitor\grafana\plugins\:/var/lib/grafana/pluginsports:- "3000:3000"networks:default:name: monitor
Step 4:部署并启动监控组件
D:\clickhouse-monitor> docker compose -f docker-compose.yml up -d 执行成功后,可在Docker Desktop中看到相应的可观测性实验环境了。
为增加测试复杂性,潭主又单独启动了一个新的ClickHouse实例,并运行了对应的exporter。
可观测性学习备忘
Windows目录结构:
Prometheus配置
关于Job和Target,前文Step 2已做了介绍。
特别之处在于,在yml中为targets动态配置增加了一个目录映射。
- D:\clickhouse-monitor\prometheus\targets:/etc/prometheus/targets在targets目录中,通过clickhouse子目录下的配置文件对监控对象进行管理。
tk-clickhouse1.yml的target和label设置如下:
- targets: ["10.136.225.165:9116"]labels:db_type: "clickhouse"db_instance: "ch-demo"
command:- -scrape_uri=http://10.136.225.165:8123
这里的scrape_rui对应的是ClickHouse暴露的http端口8123,因监控组件和ClickHouse属于不同的容器网络,所以这里用的是本机IP。
ClickHouse:8124和9001 Expoort2:9117
Grafana配置
测试仅是模拟实操,并未对模板grafana.ini进行修改。
Grafana的卷映射参考了镜像的Env,特殊点在于,此处多了一个插件目录(可选)。
- D:\clickhouse-monitor\grafana\plugins\:/var/lib/grafana/pluginshttps://grafana.com/grafana/plugins/vertamedia-clickhouse-datasource/将下载的插件vertamedia-clickhouse-datasource-3.4.4.zip解压到grafana的plugins子目录即可。
可观测性环境部署验证
主要是针对监控组件的实施确认。
CH-Exporter
访问http://localhost:9116,如下图,点击Metrics查看相关指标。
Prometheus
访问http://localhost:9090,点击【Status】菜单的【Target Health】选项。
如下图所示,可看到之前在prometheus.yml中设置的监控对象,红框是Job,蓝框是Target和对应的Label。
Grafana
访问http://localhost:3000,输入默认用户密码:admin/admin。
一切就绪后,最后就是DashBoard的数据展示了。
主要步骤:
定义数据源
配置监控仪表盘
Step1:定义数据源
Prometheus(标准)
Altinity plugin for ClickHouse(插件)
Prometheus数据源:通过左侧【Connections】菜单的【Data sources】添加,添加时直接选择Prometheus图标即可。
接下来,给Prometheus数据源起个名字,并在【Connection】中输入相应的URL,配置完成后在页面最下方点击【Save & Test】。
注意,这里的URL是本机IP:9090,而不是localhost。
对于Altinity插件:可在【Add New Connection】中确认插件的状态,如果是【Installed】,直接点击对应的插件对标后,添加ClickHouse数据源。
相关设置如下:
【HTTP】ClickHouse的URL,【http://本机IP:8123】
【Auth】Basic Auth,随后输入用户密码,【default/123456】
【Save & Test】
最后,成功配置出两个数据源。
Step2:配置监控仪表盘
Grafana支持通过目录管理管理仪表盘。
可定制DashBoard,也可导入现成的监控模板,潭主用的模板ID是882和13334。
https://grafana.com/grafana/dashboards/882因网络受限,只好离线下载882相应的模板文件。
在【Import】时选择Upload之前下载的JSON文件即可,并指定之前设定好的Prometheus数据源。
实际监控效果如下:
为了测试Altinity插件,潭主又下载了13334模板,操作类似。
差别在于,导入模板时需要选择创建好的ClickHouse V3数据源,即之前创建的【vertamedia-clickhouse-datasource】。
好啦,本期实验成功结束。
监控集成,时序猛于虎
本期,潭主借ClickHouse又重新学了学Prometheus和Grafana。
上手实操时还真遇到了不少问题,跟负责监控的同事取了取经,挺有收获。
到此,潭主前期规划的5篇ClickHouse实战系列文章已全部付梓。
近期正在ClickHouse上测试时序引擎,体验了之前一直感兴趣的Prometheus Remote Storage功能,留到下期分享,算作本期的续。
/END/
试用阿里云 ClickHouse企业版
轻松节省30%云资源成本?阿里云数据库ClickHouse 云原生架构全新升级,首次购买ClickHouse企业版计算和存储资源组合,首月消费不超过99.58元(包含最大16CCU+450G OSS用量)了解详情:https://t.aliyun.com/Kz5Z0q9G
征稿启示
面向社区长期正文,文章内容包括但不限于关于 ClickHouse 的技术研究、项目实践和创新做法等。建议行文风格干货输出&图文并茂。质量合格的文章将会发布在本公众号,优秀者也有机会推荐到 ClickHouse 官网。请将文章稿件的 WORD 版本发邮件至:[email protected]