一、ClickHouse 監控概述
- ClickHouse 運行時會將一些個自身的運行狀態記錄到眾多系統表中(
system.*
)。所以對于 ClickHouse 自身的一些運行指標的監控數據,也主要來自這些系統表。 - 直接查詢這些系統表進行監控會有一些不足之處:
- 這種方式太過底層,監控結果不夠直觀,還需要在此之上實現可視化展示
- 系統表只記錄了 ClickHouse 自身的運行指標,有些時候還需要外部系統的指標進行關聯分析,例如 ZooKeeper、服務器 CPU、IO 等。
- 目前市面上 Prometheus + Grafana 的組合進行監控比較流行,安裝簡單易上手,可以集成很多框架,包括服務器的負載,其中 Prometheus 負責收集各類系統的運行指標,Grafana 負責可視化的部分。
- ClickHouse 從 v20.1.2.4 開始,內置了對接 Prometheus 的功能,配置的方式也很簡單,可以將其作為 Prometheus 的 Endpoint 服務,從而自動的將 metrics 、 events 和 asynchronous_metrics 三張系統的表的數據發送給 Prometheus。
二、Prometheus 和 Grafana 的安裝
1. Prometheus 安裝
Prometheus 下載地址:https://prometheus.io/download/
-
將 Prometheus 的安裝包 prometheus-2.26.0.linux-amd64.tar.gz 上傳到虛擬機節點
-
解壓安裝包
cd /opt/softwaretar -zxvf prometheus-2.26.0.linux-amd64.tar.gz -C /opt/modulecd /opt/modulemv prometheus-2.26.0.linux-amd64 prometheus-2.26.0
-
修改配置文件
cd /opt/module/prometheus-2.26.0 vim prometheus.yml#添加 ClickHouse 監控配置(注意縮進)- job_name: 'clickhouse-1'static_configs:- targets: ['hadoop102:9363']#配置說明: #1、global 配置塊:控制 Prometheus 服務器的全局配置#1.1 scrape_interval:配置拉取數據的時間間隔,默認為 1 分鐘。#1.2 evaluation_interval:規則驗證(生成 alert)的時間間隔,默認為 1 分鐘。 #2、rule_files 配置塊:規則配置文件 #3、scrape_configs 配置塊:配置采集目標相關, prometheus 監視的目標。Prometheus 自身的運行信息可以通過 HTTP 訪問,所以 Prometheus 可以監控自己的運行數據。#3.1 job_name:監控作業的名稱#3.2 static_configs:表示靜態目標配置,就是固定從某個 target 拉取數據#3.3 targets:指定監控的目標,其實就是從哪兒拉取數據。Prometheus 會從http://hadoop1:9090/metrics 上拉取數據。 #Prometheus 是可以在運行時自動加載配置的。啟動時需要添加:--web.enable-lifecycle
-
啟動 Prometheus Server
cd /opt/module/prometheus-2.26.0nohup ./prometheus --config.file=prometheus.yml > ./prometheus.log 2>&1 &
-
登錄 web 端查看:http://[host]:9090/,點擊 Status,選中 Targets
2. Grafana 安裝
Grafana 下載地址:https://grafana.com/grafana/download
-
將 Grafana 的安裝包 grafana-7.5.2.linux-amd64.tar.gz 上傳到虛擬機節點
-
解壓安裝包
cd /opt/software tar -zxvf grafana-7.5.2.linux-amd64.tar.gz -C /opt/modulecd /opt/modulemv grafana-7.5.2.linux-amd64.tar.gz grafana-7.5.2
-
啟動 Grafana
cd /opt/module/grafana-7.5.2nohup ./bin/grafana-server web > ./grafana.log 2>&1 &
-
登錄 web 端查看:http://[host]:3000,默認用戶名和密碼為 admin
三、ClickHouse 配置
-
修改 ClickHouse 配置文件
sudo vim /etc/clickhouse-server/config.xml#打開prometheus注釋 <prometheus><endpoint>/metrics</endpoint><port>9363</port><metrics>true</metrics><events>true</events><asynchronous_metrics>true</asynchronous_metrics><status_info>true</status_info> </prometheus>#如果有多個 CH 節點,分發配置
-
啟動 ClickHouse 服務
sudo clickhouse restart
-
訪問 web 查看:http://[host]:9363/metrics,看到信息說明 ClickHouse 開啟 Metrics 服務成功
四、Grafana 集成 Prometheus
- 在 Grafana 的 web 頁面上添加 Prometheus 數據源
- 在首頁左側菜單欄點擊配置菜單,然后點擊 Data Sources 按鈕
- 在 Data Sources 頁面點擊 Add data source 按鈕
- 在搜索框查找 Prometheus,在展示結果里選擇點擊 select 按鈕
- 在 Prometheus 設置頁面填寫名稱、url 等相關配置信息,然后點擊 save&test 按鈕
- 出現綠色的提示框,表示與 Prometheus 正常聯通,點擊 back 按鈕返回 Data Sources 頁面,出現了添加的 Prometheus
- 添加 ClickHouse 監控看板
- 通過 https://grafana.com/dashboards 網站,可以找到大量可直接使用的 Dashboard 模板,選擇一個下載,下載內容為一個 json 文件
- 在 Grafana 首頁左側菜單欄點擊 + 按鈕,然后點擊 import 按鈕
- 在導入頁面點擊 upload json file 按鈕,上傳下載的 Dashboard 模板
- 配置關聯已經添加的 Prometheus 數據源
- 查看監控看板內容并保存看板
五、備份及恢復
官網:https://clickhouse.tech/docs/en/operations/backup/
1. 手動恢復及備份
-
創建備份路徑
sudo mkdir -p /var/lib/clickhouse/shadow/sudo chown clickhouse:clickhouse /var/lib/clickhouse/shadow/ #如果目錄存在,先清空目錄下的數據
-
執行備份命令
echo -n 'alter table t_order_mt freeze' | clickhouse-client
-
將備份數據保存到其他路徑
#創建備份存儲路徑 sudo mkdir -p /var/lib/clickhouse/backup/ sudo chown clickhouse:clickhouse /var/lib/clickhouse/backup/#拷貝數據到備份路徑 sudo cp -r /var/lib/clickhouse/shadow/ /var/lib/clickhouse/backup/my-backup-name#為下次備份準備,刪除 shadow 下的數據 sudo rm -rf /var/lib/clickhouse/shadow/*
-
恢復數據
#拷貝t_order_mt的建表語句到 events.sql 文件#模擬刪除備份過的表 echo 'drop table t_order_mt' | clickhouse-client#重新創建表 cat events.sql | clickhouse-client#將之前備份的表分區目錄復制到新創建表的 detached 目錄 sudo cp -rl /var/lib/clickhouse/backup/my-backup-name/1/store/cb1/cb176503-cd88-4ea8-8b17-6503cd888ea8/* /var/lib/clickhouse/data/default/t_order_mt/detached/#執行 attach echo 'alter table t_order_mt attach partition 20200601' | clickhouse-client#在 clickhouse 中查看數據 select * from t_order_mt;
2. 使用 clickhouse-backup 自動備份及恢復
工具地址:https://github.com/AlexAkulov/clickhouse-backup/