ClickHouse 作為用于聯(lián)機(jī)分析(OLAP)的列式數(shù)據(jù)庫管理系統(tǒng)(DBMS), 最核心的特點(diǎn)是極致壓縮率和極速查詢性能。同時,ClickHouse 支持 SQL 查詢,在基于大寬表的聚合分析查詢場景下展現(xiàn)出優(yōu)異的性能。因此,獲得了廣泛的應(yīng)用。本文旨在分享阿里云可觀測監(jiān)控 Prometheus 版對開源 ClickHouse 的監(jiān)控實踐。
在執(zhí)行數(shù)據(jù)查詢時,列式存儲可以減少數(shù)據(jù)掃描范圍和數(shù)據(jù)傳輸大小,提高數(shù)據(jù)查詢的效率。
可按照用戶粒度設(shè)置數(shù)據(jù)庫或表的操作權(quán)限,保障數(shù)據(jù)安全性。
(資料圖)
提供數(shù)據(jù)備份導(dǎo)出與導(dǎo)入恢復(fù)機(jī)制,滿足生產(chǎn)環(huán)境要求。
提供集群模式,自動管理多個數(shù)據(jù)庫節(jié)點(diǎn)。
在物理構(gòu)成上,ClickHouse 集群是由多個 ClickHouse Server 實例組成的分布式數(shù)據(jù)庫。這些 ClickHouse Server 根據(jù)規(guī)格的不同可以包含 1 個或多個副本(Replica)、1 個或多個分片(Shard)。在邏輯構(gòu)成上,一個ClickHouse 集群可以包含多個數(shù)據(jù)庫(Database)對象。
在超大規(guī)模海量數(shù)據(jù)處理場景下,單臺服務(wù)器的存儲、計算資源會成為瓶頸。為了進(jìn)一步提高效率,ClickHouse 將海量數(shù)據(jù)分散存儲到多臺服務(wù)器上,每臺服務(wù)器只存儲和處理海量數(shù)據(jù)的一部分,在這種架構(gòu)下,每臺服務(wù)器被稱為一個分片(Shard)。
為了在異常情況下保證數(shù)據(jù)的安全性和服務(wù)的高可用性,ClickHouse 提供副本機(jī)制,將單臺服務(wù)器的數(shù)據(jù)冗余存儲在2臺或多臺服務(wù)器上。
數(shù)據(jù)庫是云數(shù)據(jù)庫 ClickHouse 集群中的最高級別對象,內(nèi)部包含表(Table)、列(Column)、視圖(View)、函數(shù)、數(shù)據(jù)類型等。
表是數(shù)據(jù)的組織形式,由多行、多列構(gòu)成。
我們從 Metrics 采集、監(jiān)控大盤、告警規(guī)則等三個方面定義 ClickHouse Metrics 監(jiān)控的參考模型,以便實現(xiàn)監(jiān)控閉環(huán)。
select * from system.metrics
;select * from system.events
--> 64個指標(biāo);select * from system.asynchronous_metrics
--> 500個指標(biāo);system.query_log
。該部分指標(biāo)主要來源于 Node-Exporter , 提供集群/ ECS 節(jié)點(diǎn) CPU、內(nèi)存、磁盤、inode 等監(jiān)控指標(biāo)。
ClikckHouse 內(nèi)置 Metrics、events 和 asynchronous_metrics 三張系統(tǒng)表用于存放其監(jiān)控指標(biāo),通過預(yù)先安裝 clickhouse-exporter 將這三張系統(tǒng)表中的數(shù)據(jù)轉(zhuǎn)化、發(fā)送給阿里云可觀測監(jiān)控 Prometheus 版。
??注意: 以上列出的為關(guān)鍵指標(biāo),更多詳細(xì)指標(biāo)詳見: 應(yīng)用實時監(jiān)控服務(wù)ARMS控制臺
-Prometheus監(jiān)控
-Prometheus實例列表
-選擇實例
-集成中心
-ClickHouse
我們默認(rèn)提供了arms-clickhouse-ecs
和arms-clickhouse-k8s
兩個大盤,分別針對 ClickHouse 安裝在ACK 集群/ ECS 中兩個場景,這兩個大盤中圖標(biāo)均來自于上述 Metrics 指標(biāo)。
??注意: 主機(jī)節(jié)點(diǎn)監(jiān)控需提前安裝 Node-Exporter,以下大盤圖示數(shù)值僅為展示作用,不具備參考價值,實際數(shù)值依 ClickHouse 環(huán)境而定
(1)主機(jī)節(jié)點(diǎn)指標(biāo)
(2)ClickHouse Server指標(biāo)
(3)MergeTree 指標(biāo)
(4)消息隊列指標(biāo)
參考前面對各項主要指標(biāo)介紹,針對 ClickHouse 可以重點(diǎn)配置以下告警項,這些告警項已內(nèi)置到arms-clickhouse
告警規(guī)則中,可依據(jù)自身業(yè)務(wù)情況及經(jīng)驗調(diào)整告警閾值:
top -H -p xxx
查看系統(tǒng)的 CPU 占用率,找出占用 CPU 比較高的進(jìn)程。如果發(fā)現(xiàn) ClickHouse 進(jìn)程占用了大量 CPU 資源,那么就需要進(jìn)一步排查。SHOW PROCESSLIST query WHERE query NOT LIKE "%SYSTEM%" ORDER BY elapsed DESC LIMIT 10
這個查詢可以列出最耗時的查詢,找到可能引起 CPU 占用過高的查詢語句。
SELECT * FROM system.metrics WHERE metric LIKE "%memory%";
這個查詢會列出 ClickHouse 的各個內(nèi)存指標(biāo),包括總內(nèi)存、已用內(nèi)存、緩存內(nèi)存等。可以根據(jù)這些指標(biāo)來判斷內(nèi)存占用是否過高。
free -m
查看系統(tǒng)的內(nèi)存使用情況。df -h
來查看系統(tǒng)的磁盤使用情況,查看是否有磁盤空間不足的情況。SELECT database, table, sum(bytes) AS total_size FROM system.parts WHERE active GROUP BY database, table ORDER BY total_size DESC
這個查詢會列出 ClickHouse 的各個表的占用磁盤空間情況,可以根據(jù)這個查詢來判斷磁盤占用是否過高。
根據(jù) ClickHouse 安裝方式:
Prometheus for 容器服務(wù)
;Prometheus for ECS
。在Prometheus for 容器服務(wù)
實例中,ClickHouse 已經(jīng)默認(rèn)在集成中心中展示,用戶可以在應(yīng)用實時監(jiān)控服務(wù)ARMS控制臺
-Prometheus監(jiān)控
-Prometheus實例列表
-選擇Prometheus for 容器服務(wù)實例
-集成中心
中找到入口,點(diǎn)擊 ClickHouse 圖標(biāo),可以看到常見的指標(biāo)列表和大盤縮略圖。點(diǎn)擊+安裝
可以接入 ClickHouse 監(jiān)控,配置如下圖:
點(diǎn)擊確定后, clickhouse-exporter-填入的名稱
的 Exporter 會被安裝到 arms-prom 命名空間下,并自動完成采集 job 的配置。
可以在應(yīng)用實時監(jiān)控服務(wù)ARMS控制臺
-Prometheus監(jiān)控
-Prometheus實例列表
-選擇Prometheus for 容器服務(wù)實例
-集成中心
-已安裝
-ClikckHouse
中快速瀏覽相關(guān)的 Target/指標(biāo)/大盤/告警/服務(wù)發(fā)現(xiàn)/ Exporter 等信息。
安裝 ClickHouse 相同 VPC 的Prometheus for ECS
實例,由于Prometheus for ECS
實例中 ClickHouse 的主機(jī)節(jié)點(diǎn)監(jiān)控來自于Node-Exportor
,所以先安裝 Node-Exportor
。用戶可以在
應(yīng)用實時監(jiān)控服務(wù)ARMS控制臺
-Prometheus監(jiān)控
-Prometheus實例列表
-選擇Prometheus for ECS實例
-集成中心
中找到入口,點(diǎn)擊Node-Exporter
圖標(biāo),點(diǎn)擊+安裝
可以接入 Node-Exporter 監(jiān)控,然后選擇對應(yīng) ECS 實例安裝即可。
用戶可以在應(yīng)用實時監(jiān)控服務(wù)ARMS控制臺
-Prometheus監(jiān)控
-Prometheus實例列表
-選擇Prometheus for ECS實例
-集成中心
中找到入口,點(diǎn)擊 ClickHouse 圖標(biāo),點(diǎn)擊+安裝
可以接入 ClickHouse 監(jiān)控,配置與上述Prometheus for 容器服務(wù)
相同。
??注意: 下面是Prometheus for 容器
實例的排查方法,Prometheus for ECS
實例請聯(lián)系Prometheus值班-美娜
ClickHouse-Exporter 本身的主要工作是指標(biāo)映射,需要填入正確 ClickHouse 抓取 URL及登陸用戶名、密碼。如果出現(xiàn)指標(biāo)采集不到的問題,可以參考如下的排查思路。
Unhealthy
狀態(tài),請排查clickhouse-exporter
Pod 運(yùn)行狀態(tài);如果 Target 狀態(tài)正常,繼續(xù)下一步。go_
相關(guān)查看clickhouse-exporter
Pod 日志,確認(rèn)日志中是否有報錯信息。clickhouse-exporter
Pod 日志,確定 Exporter 抓取目標(biāo) URL 是否正常。如需要查看 ClickHouse 相關(guān)大盤,可以從應(yīng)用實時監(jiān)控服務(wù)ARMS控制臺
-Prometheus監(jiān)控
-Prometheus實例列表
-實例詳情頁
-集成中心
-已安裝
-ClikckHouse
中點(diǎn)選大盤
,列出兩類大盤arms-clickhouse-ecs
和arms-clickhouse-k8s
,根據(jù)環(huán)境選擇對應(yīng)的大盤模板。
以下是arms-clickhouse-k8s
Variables 參數(shù)說明:
以下是arms-clickhouse-ecs
Variables參數(shù)說明:
在集成中心安裝 ClickHouse 監(jiān)控時,已經(jīng)默認(rèn)增加了arms-clickhouse告警分組
的相關(guān)規(guī)則,但未啟用,您只需要簡單修改參數(shù)并確認(rèn)啟用即可。
可以從應(yīng)用實時監(jiān)控服務(wù)ARMS控制臺
-Prometheus監(jiān)控
-Prometheus實例列表
-實例詳情頁
-集成中心
-已安裝
-ClikckHouse
中選擇告警
-創(chuàng)建告警規(guī)則
進(jìn)入規(guī)則新增頁面,在其中告警分組選擇arms-clickhouse告警分組
并根據(jù)環(huán)境選擇您需要啟用的告警指標(biāo)
,確認(rèn)參數(shù)閾值并保存,即可完成告警規(guī)則的創(chuàng)建。
Prometheus 作為目前主流可觀測開源項目之一,已被眾多企業(yè)所廣泛應(yīng)用,但還會遇到不少困難與挑戰(zhàn):
針對以上問題,阿里云可觀測監(jiān)控 Prometheus 版進(jìn)行了以下優(yōu)化:
阿里云可觀測監(jiān)控 Prometheus 版與阿里云容器服務(wù)無縫集成,提供了開源 ClickHouse 的指標(biāo)采集、用戶大盤、告警規(guī)則等項目的一鍵集成,用戶免運(yùn)維,開箱即用,目前 ClickHouse 指標(biāo)采集功能仍在不斷演進(jìn)中,歡迎大家試用和提出改進(jìn)意見。
關(guān)鍵詞:
版權(quán)與免責(zé)聲明:
1 本網(wǎng)注明“來源:×××”(非商業(yè)周刊網(wǎng))的作品,均轉(zhuǎn)載自其它媒體,轉(zhuǎn)載目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對其真實性負(fù)責(zé),本網(wǎng)不承擔(dān)此類稿件侵權(quán)行為的連帶責(zé)任。
2 在本網(wǎng)的新聞頁面或BBS上進(jìn)行跟帖或發(fā)表言論者,文責(zé)自負(fù)。
3 相關(guān)信息并未經(jīng)過本網(wǎng)站證實,不對您構(gòu)成任何投資建議,據(jù)此操作,風(fēng)險自擔(dān)。
4 如涉及作品內(nèi)容、版權(quán)等其它問題,請在30日內(nèi)同本網(wǎng)聯(lián)系。