【ClickHouse系列】基于clickhouse-exporter的ClickHouse监控搭建

本文是想让快速搭建这一套监控组件,让大家看到最终效果,所以各个组件均采用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系列】基于clickhouse-exporter的ClickHouse监控搭建_第1张图片

可见clickhouse_exporter可正常拉取到

启动grafana

docker run -d \
  -p 3000:3000 \
  --name=grafana \
  grafana/grafana

登陆grafana,账号密码是admin/admin

配置grafana数据源,查询prometheus的ip地址(同上)

【ClickHouse系列】基于clickhouse-exporter的ClickHouse监控搭建_第2张图片

点击Data & Test,显示working即为成功

【ClickHouse系列】基于clickhouse-exporter的ClickHouse监控搭建_第3张图片

添加dashboard,通过import方式,直接使用882模板

【ClickHouse系列】基于clickhouse-exporter的ClickHouse监控搭建_第4张图片

选则Prometheus数据源

【ClickHouse系列】基于clickhouse-exporter的ClickHouse监控搭建_第5张图片

最后即可看到监控dashboard

【ClickHouse系列】基于clickhouse-exporter的ClickHouse监控搭建_第6张图片

你可能感兴趣的:(ClickHouse,docker)