本文是想讓快速搭建這一套監控組件,讓大家看到最終效果,所以各個組件均採用docker的方式啓動,其實使用docker-compose會更快,單考慮到熟悉成本,以及個組件的關係,本文分組件一一進行說明並啓動,最後顯示效果。
編譯構建clickhouse-exporter鏡像
clickhouse_exporter
組件是Percona-Lab
提供的,原理是依賴clickhouse自身完善的指標系統表實現的,本質上就是去查詢了clickhouse的system.metrics
等系統表獲取到所需的信息,所以源碼很簡單,一部分是查詢系統表構,另一部分就是構造prometheus數據格式,有興趣可以自行看下源碼。
言歸正傳,首先就是要下載源碼,通過自帶的Dockerfile構建即可,
[root@k8s-master test]# git clone https://github.com/Percona-Lab/clickhouse_exporter.git
[root@k8s-master clickhouse_exporter]# cd clickhouse_exporter
[root@k8s-master clickhouse_exporter]# docker build -t xiedeyantu/clickhouse_exporter .
這裏注意下,如果你的系統centos,可能會由於docker版本比較低出現以下錯誤
[root@k8s-master clickhouse_exporter]# docker build -t xiedeyantu/clickhouse_exporter .
Sending build context to Docker daemon 6.638 MB
Step 1/10 : FROM golang:1.11 AS BUILD
Error parsing reference: "golang:1.11 AS BUILD" is not a valid repository/tag: invalid reference format
具體升級方法參考:docker版本升級
[root@k8s-master clickhouse_exporter]# docker -v
Docker version 19.03.11, build 42e35e61f3
由於go編譯需要依賴一些golang.org
的包,所以網絡受限的可以直接使用f1yegor/clickhouse-exporter
鏡像
啓動clickhouse-server
docker run -d \
--name clickhouse \
--hostname clickhouse \
-p 8123:8123 \
yandex/clickhouse-server:20.4.4.18
確認clickhouse正常啓動即可
啓動clickhouse-exporter
clickhouse-exporter需要配置clickhouse的ip和port,對應參數爲scrape_uri
,使用docker命令查詢
[root@k8s-master clickhouse_exporter]# docker inspect -f='{{.NetworkSettings.IPAddress}} {{.Config.Hostname}}' $(sudo docker ps -a -q)
172.17.0.2 clickhouse
創建clickhouse-exporter docker實例
docker run -d \
--name clickhouse-exporter \
--hostname clickhouse-exporter \
-p 9116:9116 \
f1yegor/clickhouse-exporter \
-scrape_uri=http://172.17.0.2:8123/
查看metrics
curl http://192.168.80.139:9116/metrics
# HELP clickhouse_arena_alloc_bytes_total Number of ArenaAllocBytes total processed
# TYPE clickhouse_arena_alloc_bytes_total counter
clickhouse_arena_alloc_bytes_total 4096
# HELP clickhouse_arena_alloc_chunks_total Number of ArenaAllocChunks total processed
# TYPE clickhouse_arena_alloc_chunks_total counter
clickhouse_arena_alloc_chunks_total 1
# HELP clickhouse_background_buffer_flush_schedule_pool_task Number of BackgroundBufferFlushSchedulePoolTask currently processed
# TYPE clickhouse_background_buffer_flush_schedule_pool_task gauge
......
啓動prometheus
首先要配置prometheus的targets,讓其能知道在哪個target拉取,配置文件如下,其中172.17.0.3
是同樣方法取到的clickhouse-exporter的ip
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'clickhouse_exporter'
scrape_interval: 5s
static_configs:
- targets: ['172.17.0.3:9116']
啓動prometheus docker實例
docker run -d \
--name prometheus \
-p 9090:9090 \
-v /opt/monitor/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus
瀏覽器打開http://192.168.80.139:9090/targets
可見clickhouse_exporter可正常拉取到
啓動grafana
docker run -d \
-p 3000:3000 \
--name=grafana \
grafana/grafana
登陸grafana,賬號密碼是admin/admin
配置grafana數據源,查詢prometheus的ip地址(同上)
點擊Data & Test,顯示working即爲成功
添加dashboard,通過import方式,直接使用882模板
選則Prometheus數據源
最後即可看到監控dashboard