数据仓库之CK监控初探
经过这周的折腾,我们的CK终于在生产环境集群跑起来了,开发的代码提交部署好之后就完事了,我们运维还得继续折腾CK的监控。
先去官网翻一下关于监控方面的介绍,CK的官网的监控介绍比较简单,监控分为二方面, 首先是CK所在服务器的资源使用情况监控,这个得自己搞。其次是ClickHouse server的监控, 这方面CK已经收集好了:
Different metrics of how the server uses computational resources.
Common statistics on query processing.
放在自己的system库的表里面,可以很方便通过http的形式暴露出来给 Prometheus收集。官网也没有推荐任何其他可视化的工具。
CK + Prometheus
网上查了下很多文章介绍的CK监控的解决方案都是参考这篇《一文读懂clickhouse集群监控》clickhouse-exporter + prometheus + grafana 的方案
( https://zhuanlan.zhihu.com/p/353594919 )
这个方案在使用较新版本的CK的时候,需要注意一个问题是clickhouse-exporter 这个组件:
clickhuse-exporter是一个用于采集clickhouse指标的开源组件(https://github.com/ClickHouse/clickhouse_exporter),它会定时查询clickhouse-server中的系统表,转化成监控指标,并通过HTTP接口暴露给prometheus.
https://zhuanlan.zhihu.com/p/353594919
这个组件其实在我们安装的CK 22.4.5.9已经不再需要了,文章的作者也在回复中提到了这点,应该是在成文时CK还没有开发这一块。
CK 22.4.5.9已经可以直接将监控指标通过http接口的形式暴露出来,不再需要经过clickhouse_exporter去查system表,然后再暴露出来。在config.xml文件中打开Serve endpoint for Prometheus monitoring 这一段即可:
<!-- Serve endpoint for Prometheus monitoring. --><!--endpoint - mertics path (relative to root, statring with "/")port - port to setup server. If not defined or 0 than http_port usedmetrics - send data from table system.metricsevents - send data from table system.eventsasynchronous_metrics - send data from table system.asynchronous_metricsstatus_info - send data from different component from CH, ex: Dictionaries status--><prometheus><endpoint>/metrics</endpoint><port>9363</port><metrics>true</metrics><events>true</events><asynchronous_metrics>true</asynchronous_metrics><status_info>true</status_info></prometheus>
然后在prometheus的scrape_configs里面加上如下配置即可,不需要再去单独编译和安装clickhouse-exporter
scrape_configs:- job_name: 'clickhouse'# metrics_path defaults to '/metrics'# # scheme defaults to 'http'.static_configs:- targets: ['10.72.83.168:9363', '10.72.83.169:9363']
同样,网上给出的一些编辑好的CK 的Grafana Dashboard, 因为还是对接的clickhouse-exporter的接口数据,直接用CK的接口数据以后有些metrics就对不上了,这个也很坑。
CKMAN
另外一个就是前文提到的国内开源的CK管理监控工具CKman,原理上也是类似的,它是直接对接的promotheus,如果看下他在B站的视频会发现,它的promotheus的配置就是直接对接的CK http 9363端口的http api, 不需要clickhouse-exporter。
CKMAN的监控对新手比较友好,已经集成好了一些集群的基本监控信息,还有ZK的监控,但相比Grafana来说,没办法自己编辑需要看的指标,不足够灵活。
CK毕竟还是比较新的OLAP,现在在网上还没有找到特别成熟的监控和管理解决方案,个人还是比较推荐去试试CKman的,但也需要注意的是因为CK更新的比较快,使用工具的同时还是需要搞懂底层原理,否则很容易因为CK更新而出现问题。网上的一些文章也需要去仔细理解和甄别,避免出现因为版本不同出现一些兼容性等问题。
CK的监控搭起来不算复杂,基本都是基于CK自己暴露的endpoint,然后用promotheus去拉那些指标,我粗略看了下,提供的指标非常多,具体哪些指标需要重点关注仍然需要在生产环境中进一步逐步摸索。
