ClickHouseInc

ClickHouse实战 | 跨界可观测性,Prometheus+Grafana图鉴

图片

来源:落风潭

作者:落风潭

Image

前几期的ClickHouse文章侧重点都在CH集群的高可用性和可扩展性。

作为拓展,本期从可观测性(Observability)的角度再探究一下ClickHouse。

ClickHouse与可观测性

可观测性并不是一个新概念,但技术总在变化发展,不同时期其内涵和外延也都有变化。

前阵子,潭主听了阿里在云栖大会上关于可观测性的分享,感觉当下有了GPU和LLM的加持,新一代AIOps比前些年要靠谱得多。

此外,无意间发现ClickHouse也在向可观测领域渗透,并推出了相应的可观测性解决方案——ClickStack,倒是给潭主增加了新的兴趣点。

本期先分享狭义的CH可观测性,主要聚焦Pormetheus和Grafana与ClickHouse的监控集成。

ClickHouse可观测性部署

主要步骤:

  1. 拉取相关镜像,下载对应的配置模板文件

  2. Prometheus配置初始化

  3. 编辑docker compose的yml配置文件

  4. 部署并启动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: prometheus    image: quay.io/prometheus/prometheus:v3.4.2    volumes:      - D:\clickhouse-monitor\prometheus\conf\prometheus.yml:/etc/prometheus/prometheus.yml      - D:\clickhouse-monitor\prometheus\targets:/etc/prometheus/targets    ports:      - "9090:9090"
  exporter:    container_name: exporter    image: f1yegor/clickhouse-exporter:latest    environment:      - CLICKHOUSE_USER=default      - CLICKHOUSE_PASSWORD=123456    ports:      - "9116:9116"    command:       - -scrape_uri=http://10.136.225.165:8123
  grafana:    container_name: grafana    image: grafana/grafana:latest    volumes:      - 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/plugins    ports:      - "3000:3000"
networks:  default:    name: monitor

Step 4:部署并启动监控组件

D:\clickhouse-monitor> docker compose -f docker-compose.yml up -d 

执行成功后,可在Docker Desktop中看到相应的可观测性实验环境了。

为增加测试复杂性,潭主又单独启动了一个新的ClickHouse实例,并运行了对应的exporter。

Image

可观测性学习备忘

Windows目录结构:

Image

Prometheus配置

关于Job和Target,前文Step 2已做了介绍。

特别之处在于,在yml中为targets动态配置增加了一个目录映射。

      - D:\clickhouse-monitor\prometheus\targets:/etc/prometheus/targets

在targets目录中,通过clickhouse子目录下的配置文件对监控对象进行管理。

Image

tk-clickhouse1.yml的target和label设置如下:

      - targets: ["10.136.225.165:9116"]        labels:          db_type: "clickhouse"          db_instance: "ch-demo" 	    	
CH-Exporter配置
Exporter定时查询clickhouse的系统表,将其转化为监控指标,并通过http接口暴露给Prometheus。
Prometheus通过定时抓取exporter暴露的指标数据,实现对ClickHouse的监控。
Exporter启动配置如下:
    command:       - -scrape_uri=http://10.136.225.165:8123

这里的scrape_rui对应的是ClickHouse暴露的http端口8123,因监控组件和ClickHouse属于不同的容器网络,所以这里用的是本机IP。

对于新增的ClickHouse测试实例,设置了端口偏移。
  • ClickHouse:8124和9001
  • Expoort2:9117

Grafana配置

测试仅是模拟实操,并未对模板grafana.ini进行修改。

Grafana的卷映射参考了镜像的Env,特殊点在于,此处多了一个插件目录(可选)。

      - D:\clickhouse-monitor\grafana\plugins\:/var/lib/grafana/plugins
Grafana支持多种数据源,除了Prometheus,也支持通过插件直接访问ClickHouse。
在Grafana上安装ClickHouse插件
官网下载地址如下:
https://grafana.com/grafana/plugins/vertamedia-clickhouse-datasource/
Image

将下载的插件vertamedia-clickhouse-datasource-3.4.4.zip解压到grafana的plugins子目录即可。

可观测性环境部署验证

主要是针对监控组件的实施确认。

CH-Exporter

访问http://localhost:9116,如下图,点击Metrics查看相关指标。

Image

Prometheus

访问http://localhost:9090,点击【Status】菜单的【Target Health】选项。

如下图所示,可看到之前在prometheus.yml中设置的监控对象,红框是Job,蓝框是Target和对应的Label。

Image

Grafana

访问http://localhost:3000,输入默认用户密码:admin/admin。

Image
Grafana的配置管理

一切就绪后,最后就是DashBoard的数据展示了。

主要步骤:

  1. 定义数据源

  2. 配置监控仪表盘

Step1:定义数据源

  • Prometheus(标准)

  • Altinity plugin for ClickHouse(插件)

Image

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】

Image

最后,成功配置出两个数据源。

Image

Step2:配置监控仪表盘

Grafana支持通过目录管理管理仪表盘。

可定制DashBoard,也可导入现成的监控模板,潭主用的模板ID是882和13334。

https://grafana.com/grafana/dashboards/882

因网络受限,只好离线下载882相应的模板文件。

在【Import】时选择Upload之前下载的JSON文件即可,并指定之前设定好的Prometheus数据源。

Image

Image

实际监控效果如下:

Image

为了测试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]

图片图片