介紹
集羣監控對於一個生產應用的重要性不言而喻。今天我們就來看下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.yml
,github 中有樣例配置參考。
我這裏配置兩個節點,用戶名是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
- 登錄
打開http://localhost:23000/ ,賬號/密碼: admin/admin。
監控配置
配置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,如果上述集羣能配置出來,相信單個節點大家也不會有太大問題。