1. 部署docker网络环境
宿主机上新建一个容器网络桥接器,clickhouse 服务、prometheus服务和gragana服务部署在3个独立的容器中并挂在到网络桥接器下面,宿主机上通过web UI访问监控的信息。
新建容器网络桥接器
#新建网络桥接器
docker network create --driver=bridge clickhouse_monitor_test
# 查看本机容器环境的所有网络
docker network ls
#查看桥接器下面有哪些容器
docker network inspect clickhouse_monitor_test
2.准备各容器服务
2.1 clickhouse容器
# 下载clichouse镜像
docker pull yandex/clickhouse-server:latest
#启动容器挂在到网络桥接器下面
docker run -itd --network clickhouse_monitor_test -h "ch01_monitor_test" --name "ch01_monitor_test" yandex/clickhouse-server:latest /bin/bash
#进入clickhouse容器,安装ping和vim命令
apt-get update
apt-get install -y inetutils-ping
apt install -y vim
apt install -y curl
打开prometheus配置,config.xml文件中 去掉prometheus注释
允许远程连接访问clickhouse服务
重启clickhouse 服务
#重启clickhouse服务
clickhouse restart
# 测试监控指标
curl http://ch01_monitor_test:9363/metrics
看到类似如下的返回
......
# TYPE ClickHouseAsyncMetrics_BlockActiveTime_nbd14 gauge
ClickHouseAsyncMetrics_BlockActiveTime_nbd14 0
# TYPE ClickHouseAsyncMetrics_BlockInFlightOps_nbd2 gauge
ClickHouseAsyncMetrics_BlockInFlightOps_nbd2 0
# TYPE ClickHouseAsyncMetrics_OSThreadsTotal gauge
ClickHouseAsyncMetrics_OSThreadsTotal 680
# TYPE ClickHouseAsyncMetrics_OSGuestTimeCPU0 gauge
ClickHouseAsyncMetrics_OSGuestTimeCPU0 0
# TYPE ClickHouseAsyncMetrics_BlockReadBytes_ram5 gauge
ClickHouseAsyncMetrics_BlockReadBytes_ram5 0
# TYPE ClickHouseAsyncMetrics_OSNiceTime gauge
ClickHouseAsyncMetrics_OSNiceTime 0
# TYPE ClickHouseAsyncMetrics_NetworkSendErrors_ip6tnl0 gauge
ClickHouseAsyncMetrics_NetworkSendErrors_ip6tnl0 0
# TYPE ClickHouseAsyncMetrics_BlockQueueTime_ram13 gauge
ClickHouseAsyncMetrics_BlockQueueTime_ram13 0
# TYPE ClickHouseAsyncMetrics_BlockReadMerges_ram0 gauge
ClickHouseAsyncMetrics_BlockReadMerges_ram0 0
# TYPE ClickHouseAsyncMetrics_jemalloc_retained gauge
ClickHouseAsyncMetrics_jemalloc_retained 46600192
# TYPE ClickHouseAsyncMetrics_Jitter gauge
ClickHouseAsyncMetrics_Jitter 0.001755
# HELP ClickHouseStatusInfo_DictionaryStatus "Dictionary Status."
# TYPE ClickHouseStatusInfo_DictionaryStatus gauge
2.2 Prometheus server容器
新建配置文件prometheus.yml,配置文件中指定clichouse服务地址
touch prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:9090']
- job_name: 'clickhouse01'
static_configs:
- targets: ['ch01_monitor_test:9363']
Prometheus server 容器挂在到网络桥接器下面
# 启动容器,挂在到clickhouse_monitor_test网络桥接器下面
docker run --name prometheus -d --network clickhouse_monitor_test -p 127.0.0.1:9090:9090 -v /Users/sh53014ml/docker/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
打开web 访问 127.0.0.1:9090,找到target界面,可看到配置的监控主机
endpoint为容器的地址和端口,host主机不可以直接访问
2.3 grafana容器
#下载容器镜像
docker pull grafana/grafana
chmod -R 777 /Users/sh53014ml/docker/grafana/
# 挂在到容器网络桥接器下面
docker run -d --network clickhouse_monitor_test -p 3000:3000 --name=grafana -v /Users/sh53014ml/docker/grafana:/var/lib/grafana grafana/grafana:7.5.3
之后就可以在宿主机浏览器中访问 grafana了 ,默认用户和密码admin
3. 配置grafana中监控的指标
-
配置prometheus数据源
prometheus为容器部署方式,和grafana一起挂载在同一容器网络桥接器下面,因此要查看prometheus容器的IP,可以使用如下命令
#查看桥接器下面有哪些容器 docker network inspect clickhouse_monitor_test
配置参数,主要是URL,看到Data source is working表示连接成功
-
import 配置指标文件(来自第三方开源配置)
配置来源地址
-
配置完成后的效果