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