clickhouse(七、集羣監控)

介紹

集羣監控對於一個生產應用的重要性不言而喻。今天我們就來看下clickhouse集羣監控的實踐。對於還不熟悉clickhouse相關組件的朋友,本節有必要先介紹一些工具。

chproxy

首先在使用ck集羣時,我們通常會利用到 chproxy 這個開源的代理工具,主要用於負載均衡、併發控制、用戶權限控制等操作。

grafana

grafana支持多種數據源,豐富的圖表展示,是一款美觀、強大的可視化監控指標展示工具。

prometheus

監控需要我們採集系統數據,那麼源源不斷採集的數據我們也需要有個地方進行存儲,所以這裏採用prometheus這款優秀的時序數據庫。

安裝配置

chproxy

  • 下載
    我們在releases中選擇最新的版本。
# 下載
wget https://github.com/Vertamedia/chproxy/releases/download/v1.14.0/chproxy-linux-amd64-v1.14.0.tar.gz

# 解壓
tar zxvf chproxy-linux-amd64-v1.14.0.tar.gz
  • 配置
    然後新建一個配置文件config.ymlgithub 中有樣例配置參考。
    我這裏配置兩個節點,用戶名是default,密碼爲空。可以自定義監聽的端口,我這裏配置的19000,後續的prometheus中會用到。
# config.yml簡單配置,
server:
  http:
      listen_addr: ":19000"
      allowed_networks: ["192.168.9.225","192.168.9.226"]

users:
  - name: "default"
    to_cluster: "dc_sit"
    to_user: "default"
    password: "" 


clusters:
  - name: "dc_sit"

    nodes: [
      "dc-sit-225:8123",
      "dc-sit-226:8123"
    ]

    heartbeat_interval: 30s

    users:
      - name: "default"
        password: ""
  • 啓動
    命令:./chproxy -config=config.yml
    如果日誌打印如下successful則爲正常啓動。否則根據提示處理下異常。
INFO: 2020/05/12 04:58:13 main.go:53: Loading config "config.yml": successful
INFO: 2020/05/12 04:58:13 main.go:152: Serving http on ":19000"
  • 測試
# 外網限制
sun_mac:~ sun$  echo 'SELECT 1' | curl 'http://dc-sit-225:19000/?user=default' --data-binary @-
http connections are not allowed from 192.168.64.49:62164

# 內網通過
[root@dc-sit-225 ~]# echo 'SELECT 1' | curl 'http://dc-sit-225:19000/?user=default' --data-binary @-
1

prometheus

wget https://github.com/prometheus/prometheus/releases/download/v2.18.1/prometheus-2.18.1.linux-amd64.tar.gz
  • 配置
    解壓後修改配置文件prometheus.yml,主要修改scrape_configs部分配置,這裏的命名我們指定clickhouse-chproxy

scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'clickhouse-chproxy'
    scrape_interval: 10s
    static_configs:
    - targets: ['dc-sit-225:19000']
      labels:
          instance: 'dc_sit'
  • 啓動
    命令:./prometheus --config.file=prometheus.yml
  • 校驗
    啓動後打開 http://localhost:9090/targets,查看chproxy狀態是否正常。
    在這裏插入圖片描述

grafana

  • 安裝
    grafana我們可以採用簡潔的docker安裝。
# 獲取鏡像
docker pull grafana/grafana
# 後臺啓動容器,將23000映射到容器的3000
docker run -d -p 23000:3000 --name=my-grafana -v /data/grafana:/var/lib/grafana grafana/grafana

監控配置

配置DataSources

設置 -> Data Sources -> Add data source -> 選擇prometheus類型。
在這裏插入圖片描述

  • settings
    根據自身配置修改,我這裏命名的Prometheus-225,然後Save & Test
    在這裏插入圖片描述

導入模板

首先下載chproxy的exporter模板,保存爲chproxy.json。之前在grafana中選擇 + 號import,
在這裏插入圖片描述
名稱可以自定義、prometheus數據源選擇上面我們配置的Prometheus-225,然後導入。
在這裏插入圖片描述

查看效果

dashboard可以看到各時段的請求數、請求時長、用戶併發數、各節點狀態等多項指標。非常方便我們獲取到集羣的運行狀況。
在這裏插入圖片描述

結尾

因爲控制篇幅的因素,本節主要描述集羣監控部分。還有些重要的模塊、如prometheus提供的報警組件alertmanager,報警hook服務等之後再介紹。
另外grafana和prometheus的組合還常用來監控集羣各節點的狀態,node_exporter,以及clickhouse單個組件監控clickhouse_exporter,如果上述集羣能配置出來,相信單個節點大家也不會有太大問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章