prometheus + grafana 是已经存在的监控平台,此处不在赘述。只是介绍如何将 clickhouse 的监控数据接入 prometheus。
export 使用的是 clickhouse_exporter 。
具体步骤如下:
git clone https://github.com/ClickHouse/clickhouse_exporter
# go build 需要添加下go的代理,此处采用阿里的 (需要预装go语言)
export GOPROXY=https://mirrors.aliyun.com/goproxy/
# 编译
go build
# 信息配置
export CLICKHOUSE_USER="xx"
export CLICKHOUSE_PASSWORD="xxx"
# 后台启动
nohup ./clickhouse_exporter -scrape_uri=http://xxx.xxx.xxx.xxx:8123 > nohup.log 2>&1
# 验证是否成功
curl localhost:9116/metrics | head
如果出现下面情况,证明已成功:
[root@ck02 clickhouse_exporter]# curl localhost:9116/metrics | head
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 45573 100 45573 # HELP clickhouse_arena_alloc_bytes_total Number of ArenaAllocBytes total processed
# TYPE clickhouse_arena_alloc_bytes_total counter
0clickhouse_arena_alloc_bytes_total 9.67172096e+08
# HELP clickhouse_arena_alloc_chunks_total Number of ArenaAllocChunks total processed
# TYPE clickhouse_arena_alloc_chunks_total counter
clickhouse_arena_alloc_chunks_total 235666
# HELP clickhouse_background_buffer_flush_schedule_pool_task Number of BackgroundBufferFlushSchedulePoolTask currently processed
# TYPE clickhouse_background_buffer_flush_schedule_pool_task gauge
0clickhouse_background_buffer_flush_schedule_pool_task 0
# HELP clickhouse_background_distributed_schedule_pool_task Number of BackgroundDistributedSchedulePoolTask currently processed
1711k 0 --:--:-- --:--:-- --:--:-- 1780k
接下来修改下prometheus的配置:
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'clickhouse'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['clickhouseexporter1:9116', 'clickhouseexporter2:9116', ...]
找一个clickhouse的监控模板,这里我用了 882 模板。模板跳转。
最终效果图:
刚接入,信息不多,整个流程就是这样子。