我們不用Prometheus了?
引言
上次說到我們不用docker,而是使用containerd作為CRI了。沒想到,連監(jiān)控告警這一塊也換了。以前我們使用的prometheus進行監(jiān)控數(shù)據(jù)的采集、存儲和提供查詢,alertmanager進行告警推送,同時使用了grafana做數(shù)據(jù)展示。那么現(xiàn)在呢,我們選擇使用OpenTelemetry和VictoriaMetrics。那么這兩者究竟是何方神圣呢?請允許我慢慢道來??紤]到我也是剛接觸,所以今天先給大家介紹一下VictoriaMetrics。OpenTelemetry后續(xù)再做介紹。
注:后續(xù)VictoriaMetrics簡稱為vm
什么是VM
這里我們看官網(wǎng)的描述。如下:
- VictoriaMetrics is a fast, cost-effective and scalable monitoring solution
- and time series database
翻譯過來就是說,vm是一個快速、實用和可擴展的監(jiān)控方案和時序數(shù)據(jù)庫。思考一下:prometheus也是時序數(shù)據(jù)庫,兩者會不會有什么不一樣呢?
VM特性
要說vm的特性,可太多了。舉幾個例子:
- 可以作為prometheus長期存儲的一個方案。我們知道prometheus默認只會保留最近15天的數(shù)據(jù),如果要保留更長時間的數(shù)據(jù),需要把數(shù)據(jù)寫到遠端存儲中去
- 當(dāng)使用grafana時,可以把其數(shù)據(jù)源prometheus可以被替換為vm,因為vm也支持prometheus查詢APi
- 它實現(xiàn)了基于PromQL的查詢語言,即MetricsQL,并且在PromQL基礎(chǔ)上做了改進
- 在處理百萬比別數(shù)據(jù)時,使用內(nèi)存資源比Thanos、Promtheus更少
- ...
VM組件
那么vm有哪些組件呢,(cluster)架構(gòu)又是怎么樣的呢?
主要組件說明:
- vmstorage負責(zé)存儲時序數(shù)據(jù)以及提供查詢
- vmselect從vmstorage獲取數(shù)據(jù)返回給查詢數(shù)據(jù)的客戶端,支持PromeQL
- vminsert通過remote write API將數(shù)據(jù)存儲到vmstorage
其他組件說明:
- vmui提供了一個UI供查詢數(shù)據(jù)和問題排查
- vmalert用戶告警
- vmagent用戶數(shù)據(jù)采集
- vmbackup用于數(shù)據(jù)備份
- vmrestore用于數(shù)據(jù)恢復(fù)
- ...
VM安裝注意事項
vm可以通過多種方式安裝,如二進制、docker鏡像以及源碼??筛鶕?jù)場景進行選擇。如果在k8s中進行安裝,我們可以直接使用operator來進行安裝。下面重點說一下安裝過程中的一些注意事項。
一個最小的集群必須包含以下節(jié)點:
- 一個vmstorage單節(jié)點,另外要指定-retentionPeriod和-storageDataPath兩個參數(shù)
- 一個vminsert單節(jié)點,要指定-storageNode=
- 一個vmselect單節(jié)點,要指定-storageNode=
注:高可用情況下,建議每個服務(wù)至少有個兩個節(jié)點
在vmselect和vminsert前面需要一個負載均衡,比如vmauth、nginx,同時要求:
- 以/insert開頭的請求必須要被路由到vminsert節(jié)點的8480端口
- 以/select開頭的請求必須要被路由到vmselect節(jié)點的8481端口
注:各服務(wù)的端口可以通過-httpListenAddr進行指定
建議為集群安裝監(jiān)控
如果是在一個主機上進行安裝測試集群,vminsert、vmselect和vmstorage各自的-httpListenAddr參數(shù)必須唯一,vmstorage的-storageDataPath、-vminsertAddr、-vmselectAddr這幾個參數(shù)必須有唯一的值。
當(dāng)vmstorage通過-storageDataPath目錄大小小于通過-storage.minFreeDiskSpaceBytes指定的可用空間時,會切換到只讀模式;vminsert停止向這類節(jié)點發(fā)送數(shù)據(jù),轉(zhuǎn)而將數(shù)據(jù)發(fā)送到其他可用vmstorage節(jié)點。