下面介绍一下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

如果不出意外的话会出现三个容器:

prometheus监控Clickhouse容器_click


访问主机9116出现类似:

prometheus监控Clickhouse容器_prometheus_02


访问:9090/targets出现

prometheus监控Clickhouse容器_prometheus_03


访问:3000出现

prometheus监控Clickhouse容器_prometheus_04


说明成功了。

配置grafana可视化

prometheus监控Clickhouse容器_prometheus_05


prometheus监控Clickhouse容器_grafana_06


、、

prometheus监控Clickhouse容器_grafana_07


prometheus监控Clickhouse容器_grafana_08


prometheus监控Clickhouse容器_json_09


882是某位大神为clickhouse-exporter编写的grafana仪表板的json,可以直接从grafana的json库中找到。

至此,可以了。

prometheus监控Clickhouse容器_grafana_10

介绍

  • 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。使用方法在此也有介绍。