下面介绍一下clickhouse-exportor+prometheus+grafana实现clickhouse监控(目前为CH单节点,CH集群之后用到更新)。
编排docker-compose.yml
- 由于这三个组件在docker都有镜像,选择直接编排docker-compose.yml的方式进行安装,省时省力。文件如下:
- dockerconpose.yml
version: '3'
services:
prometheus:
image: prom/prometheus:latest
restart: always
network_mode: host ##网络类型为主机
user: root
container_name: prometheus
ports: ##开放端口
- "9090:9090"
depends_on: ##
- clickhouse-exporter
volumes: ###挂载目录,注意启动此文件之前要新建此标签下的目录
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- ./prometheus-data:/prometheus
grafana:
image: grafana/grafana:latest
restart: always
network_mode: host
user: root
container_name: grafana
ports:
- "3000:3000"
depends_on:
- prometheus
environment:##添加环境变量
- GF_SERVER_ROOT_URL=http://xxx.xxx.xxx.xxx
- GF_SECURITY_ADMIN_PASSWORD=xxxxx ####admin密码
- GF_INSTALL_PLUGINS=vertamedia-clickhouse-datasource ###在grafana运行时添加的数据库驱动,可以不安装,安装之后可以直接连接CK
volumes:
- ./var/lib/grafana:/var/lib/grafana
- ./etc/grafana/:/etc/grafana/:rw
- ./var/log/grafana:/var/log/grafana:rw
- /etc/localtime:/etc/localtime
clickhouse-exporter:
image: f1yegor/clickhouse-exporter:latest
restart: always
network_mode: host
container_name: clickhouse-exporter
ports:
- 9116:9116
environment:###此处写CK的user和password,注意不要加空格
- CLICKHOUSE_USER=default
- CLICKHOUSE_PASSWORD=Biyjatqdw...
####此处为命令行启动docker时添加的参数,即和docker run xxxx -scrape_url=//xxx.xxx.xxx.xxx:xxxx等价
###写CK的host:port
command: -scrape_uri=http://xxx.xxx.xxx.xxx:xxxx
prometheus配置文件
#全局配置
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
###监控自己
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
###监控CK-exporter
- job_name: 'clickhouse_exporter'
# 覆盖全局的 scrape_interval
scrape_interval: 5s
static_configs:
- targets: ['127.0.0.1:9116']
创建挂载目录结构
将volumn的目录结构创建齐全,此处略过。
运行docker-compose.yml
dock-compose -f docker-compose.yml up -d
如果不出意外的话会出现三个容器:
访问主机9116出现类似:
访问:9090/targets出现
访问:3000出现
说明成功了。
配置grafana可视化
、、
882是某位大神为clickhouse-exporter编写的grafana仪表板的json,可以直接从grafana的json库中找到。
至此,可以了。
介绍
- clickhouse-exporter是GO语言编写的一台简单的服务器,它会定期抓取ClickHouse统计信息,并通过HTTP导出它们,以用于Prometheus消耗。感谢编写它的大神。集群可以考虑chproxy,它更加强大。
- Prometheus 是由 SoundCloud 开源监控告警解决方案,从 2012 年开始编写代码,再到 2015 年 github 上开源以来,已经吸引了 9k+ 关注,以及很多大公司的使用;2016 年 Prometheus 成为继 k8s 后,第二名 CNCF(Cloud Native Computing Foundation) 成员。
- grafana grafana 是一款采用 go 语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具,目前已经支持绝大部分常用的时序数据库。
===============================================
更新:
新增指标:clickhouse慢查询以及占内存查询TOP10
- clickhouse的查询log记录在query_log表里,此表需要在users.yml文件中添加配置log_queries=1。重启clickhouseserver。然后去grafana新建仪表板,数据源为clickhouse的ip:port,如果有密码选择basic auth
- import 仪表板,网址在这,编号2515。使用方法在此也有介绍。