【clickhouse】docker 下 搭建 clickhouse 监控

139 篇文章 635 订阅 ¥19.90 ¥99.00
本文档介绍了如何在docker环境下利用chproxy、prometheus和grafana搭建Clickhouse监控系统。首先阐述了选择chproxy作为exporter的原因,然后详细说明了docker-compose配置、prometheus与grafana的设置,以及解决在导入dashboard模板后数据未显示的问题。最后提到了通过修改prometheus配置使数据源生效,并提到可以在grafana中直接添加Clickhouse数据源。
摘要由CSDN通过智能技术生成

文章目录


在这里插入图片描述

1.概述

转载:搭建clickhouse监控

原由与方案
为了更好地优化clickhouse的性能,需要对clickhouse集群进行监控。网上很多监控方案都是clickhouse + grafana + prometheus,因此打算使用此方案。

要想使用prometheus就得先安装exporter,clickhouse有第三方提供的clickhouse_exporter,也有容器版本,并且提供了grafana的dashboard版本: https://grafana.net/dashboards/882。由于我们在集群中使用了代理CHproxy,但CHproxy也同时实现了exporter的功能,并且提供了更多的特性以及grafana dashboard模板https://github.com/Vertamedia/chproxy/blob/master/chproxy_overview.json,所以我们也就直接使用。

安装部署
我们使用了docker进行部署,并且使用docker-compose进行编排,并且将配置文件和重要数据挂载到宿主机。

docker-compose如下:

version: '3'
services:
  prometheus:
    image: prom/prometheus:latest
    restart: always
    network_mode: host
    user: root
    container_name: prometheus
    ports:
      - "9090:9090"
    depends_on:
      - chproxy
    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
    volumes:
      - ./grafana-data/var/lib/grafana:/var/lib/grafana
      - ./grafana-data/etc/grafana:/etc/grafana

  chproxy:
    image: tacyuuhon/clickhouse-chproxy:1.13.2
    restart: always
    network_mode: host
    container_name: chproxy
    ports:
      - 9092:9092
    volumes:
      - ./config.yml:/opt/config.yml

CHproxy的配置文件config.xml,省略,参考上篇文章。

prometheus的配置文件prometheus.xml如下:

# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['localhost:9090']

  - job_name: 'clickhouse-chproxy'

    # 覆盖全局的 scrape_interval
    scrape_interval: 10s

    static_configs:
    - targets: ['localhost:9092']

可通过http://ip:9090/targets查看prometheus配置文件中配置的job是否成功。

请注意:

因为docker-compose中使用的网络模式为host,所以在prometheus的配置文件中ip地址都写为localhost,并且要填上对应容器的端口。
grafana容器可将/var/lib/grafana和/etc/grafana目录拷贝出来放到宿主机上并且重新挂载到容器中这样的话删除并且重启容器时不会导致数据丢失。docker-compose中grafana和prometheus容器可能需要将user设为root,这样的话当宿主机的用户为root时就有权限写mount的目录。
当通过docker-compose编排好之后,通过’http://ip:3000’登录grafana,并且配置好prometheus数据源,再将dashboard模板https://github.com/Vertamedia/chproxy/blob/master/chproxy_overview.json导入之后发现没有数据,连左上角的job下拉框都没有任何数据。然后我通过当前dashboard的Variables发现下拉框job的内容是通过prometheus中go_info来获取的,但是我通过promql查询go_info中没有prometheus.yml中配置的-job_nameclickhouse-chproxy的内容。但是我发现go_goroutines中有,于是我将go_info替换成了go_goroutines
经过测试返现只有CHproxy至少经过一次的使用查询之后go_goroutines中才有-job_name为clickhouse-chproxy的内容,其他metrics也是才会出现。
go_goroutines

go_info没有别的信息,需要使用接口发送一次查询

grafana mount 需要 root user 当前host 为root

题外话
我直接在grafana容器中安装了clickhouse DataSource插件,并且制作成了镜像,这样的话grafana也可以直接查询clickhouse了哦,参考:https://github.com/Vertamedia/clickhouse-grafana,https://grafana.com/plugins/vertamedia-clickhouse-datasource/installation。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值