怎麼監控存儲陳列運行狀態_ClickHouse的運行指標監控可以怎麼玩?

一般來說,當咱們的 ClickHouse 要在生產環境上線的時候,關於對 CH 的運行監控工作就必須提到議程上來了。

ClickHouse 在工作的過程中,會將一些個自身的運行狀態記錄到衆多系統表中( sysytem.*)。所以我們對於 CH 自身的一些運行指標的監控數據,也主要來自這些系統表。

但是直接查詢這些系統表會有一些不足之處:

首先,這種方式太過底層,不夠直觀,我們還需要在此之上加入一些可視化的直觀表達;

其次,系統表只記錄了CH自己的運行指標,有些時候我們需要外部系統的指標進行關聯分析,例如 ZooKeeper、服務器 CPU、IO 等等。

現在比較主流的監控組合拳是 Prometheus + Grafana, 其中 Prometheus 負責收集各類系統的運行指標; Grafana 負責可視化的部分。

ClickHouse 從 v20.1.2.4 開始,內置了對接 Prometheus 的功能,可以將其作爲 Prometheus 的 Endpoint 服務,從而自動的將 metrics、events 和 asynchronous_metrics 三張系統的表的數據發送給 Prometheus。

而配置的方式也很簡單,接下來我們用一個簡單示例說明:

首先,我們需要在 CH 的 config.xml 中增加 prometheus 配置:

  <prometheus>        <endpoint>/metricsendpoint>        <port>9363port>        <metrics>truemetrics>        <events>trueevents>        <asynchronous_metrics>trueasynchronous_metrics>        <status_info>truestatus_info>  prometheus>
之後,我們就可以訪問到 CH 實例的 /metrics 服務,例如:

nauu@Boness-MBP ~ % curl http://10.37.129.9:9363/metrics# HELP ClickHouseProfileEvents_Query Number of queries to be interpreted and potentially executed. Does not include queries that failed to parse or were rejected due to AST size limits, quota limits or limits on the number of simultaneously running queries. May include internal queries initiated by ClickHouse itself. Does not count subqueries.# TYPE ClickHouseProfileEvents_Query counterClickHouseProfileEvents_Query 218# HELP ClickHouseProfileEvents_SelectQuery Same as Query, but only for SELECT queries.# TYPE ClickHouseProfileEvents_SelectQuery counterClickHouseProfileEvents_SelectQuery 186# HELP ClickHouseProfileEvents_InsertQuery Same as Query, but only for INSERT queries.# TYPE ClickHouseProfileEvents_InsertQuery counterClickHouseProfileEvents_InsertQuery 0# HELP ClickHouseProfileEvents_FailedQuery Number of failed queries.# TYPE ClickHouseProfileEvents_FailedQuery counterClickHouseProfileEvents_FailedQuery 46# HELP ClickHouseProfileEvents_FailedSelectQuery Same as FailedQuery, but only for SELECT queries.# TYPE ClickHouseProfileEvents_FailedSelectQuery counterClickHouseProfileEvents_FailedSelectQuery 36# HELP ClickHouseProfileEvents_FailedInsertQuery Same as FailedQuery, but only for INSERT queries.# TYPE ClickHouseProfileEvents_FailedInsertQuery counterClickHouseProfileEvents_FailedInsertQuery 0
Prometheus 就是通過這個服務收集 CH 系統的相關指標。

接着,我們安裝 Prometheus:

docker pull prom/prometheus
在 prometheus.yml 中增加 CH 的 Endpoint 地址:

  - job_name: 'prometheus'    # metrics_path defaults to '/metrics'    # scheme defaults to 'http'.    static_configs:    - targets: ['localhost:9090']  - job_name: clickhouse-1    static_configs:      - targets: ['10.37.129.9:9363']
啓動 Prometheus:

docker run --name prometheus -d -p 127.0.0.1:9090:9090   -v /Users/nauu/clickhouse/storage4docker/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml  prom/prometheus
啓動之後,我們在 Targets 菜單裏面就能看到 CH 的 Endpoint 了。 

現在我們進行最後一步,安裝 Grafana :

docker pull grafana/grafanadocker run -d \  -p 3000:3000 \  --name=grafana \  -v /Users/nauu/clickhouse/storage4docker/grafana:/var/lib/grafana \  grafana/grafana
登入 Grafana 後,在 Data Sources 中 添加 Prometheus 數據源:

之後新建 dashboard, 我們就能夠通過 Prometheus 的數據源選取到 ClickHouse 的運行指標了:

至此,通過 ClickHouse 內置 Endpoint + Prometheus + Grafana 的監控組合拳就成型了。至於我們常見的一些監控指標,今後我再專門用一篇文章來聊一聊吧。
————————————————
 

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