https://zahui.fan/posts/0cebb8ae/
victoriametrics原生支持水平擴展,並且大部分兼容Prometheus語法,官方文檔地址:https://docs.victoriametrics.com/
這個是victoriametrics官方的集羣架構
我公司用到的集羣架構
目前用到3臺機器
IP | 部署的服務 |
---|---|
10.200.4.74 | vmauth、vmselect、vminsert、vmstorage、vmalert |
10.200.4.75 | vmselect、vminsert、vmstorage |
10.200.4.76 | vmselect、vminsert、vmstorage |
vmstorage
首先需要把存儲部署上,多個存儲之間數據是不同步的,也就是說所有的storege組件之間是感知不到彼此的。通過vmselect和vminsert採用一致性hash算法來確定讀取/寫入哪臺節點。
vmstorage啓動命令
1
|
./vmstorage-prod -httpListenAddr "0.0.0.0:8482" \ # vmstorage監聽端口
|
vminsert
1
|
./vminsert-prod -httpListenAddr "0.0.0.0:8480" \
|
vmselect
vmselect啓動命令
1
|
./vmselect-prod -httpListenAddr "0.0.0.0:8481" \
|
vmalert
1
|
./vmalert-prod -rule=./rules/* \ # 告警規則目錄
|
負載均衡配置
vmauth負載均衡配置
1
|
./vmauth-prod -auth.config=./vmauth.yml
|
其中vmauth.yml的配置
1
|
users:
|
nginx負載均衡配置
如果你不想用vmauth,nginx功能可以完全覆蓋vmauth
nginx配置示例:
1
|
upstream vmselect {
|
.htpasswd文件格式:
1
|
admin:$1$QYnl4A1Q$I8Q712.eKtG9m7sAb9oeM1
|
admin是用戶名, :後面的是密碼, 密碼可以使用
openssl passwd -1 123456
來生成(假設原始密碼是123456)
常用的配置
Prometheus通過remote_write寫入vm集羣
官方文檔:https://prometheus.io/docs/prometheus/latest/configuration/configuration/#remote_write
1
|
remote_write:
|
參數說明:
-
capacity
定義:每個內存隊列(shard:分片)的容量。
一旦WAL被阻塞,就無法將樣本附加到任何分片,並且所有吞吐量都將停止。所以在大多數情況下,單個隊列容量應足夠打以避免阻塞其他分片,但是太大的容量可能會導致過多的內存消耗,並導致重新分片期間清除隊列的時間更長。
容量建議:將容量設置爲3-10倍
max_samples_per_send
-
max_shards
顧名思義,最大的分片數(即隊列數),也可以理解爲遠程寫的並行度。peometheus遠程寫的時候會使用所有的分片,只有在寫隊列落後於遠程寫的速度,使用的隊列數會達到max_shards,目的在於提高遠程寫的吞吐量。
PS:在操作過程中,Prometheus將根據傳入的採樣率,未發送的未處理樣本數以及發送每個樣本所花費的時間,連續計算要使用的最佳分片數。(實際的分片數是動態調整的)
-
min_shards
最小分片配置Prometheus使用的最小分片數量,並且是遠程寫入開始時使用的分片數量。如果遠程寫入落後,Prometheus將自動擴大分片的數量,因此大多數用戶不必調整此參數。但是,增加最小分片數將使Prometheus在計算所需分片數時避免在一開始就落後。
-
max_samples_per_send
定義:每次遠程寫發送的最大指標數量,即批處理;
這個值依賴於遠程存儲系統,對於一些系統而言,在沒有顯著增加延遲的情況下發送更多指標數據而運行良好,然而,對於另外一些系統而言,每次請求中發送大量指標數據可能導致其出現故障,使用的默認值是適用於絕大多數系統的。
-
batch_send_deadline
定義:單一分片批量發送指標數據的最大等待時間;
即使排隊的分片尚未達到max_samples_per_send,也會發送請求。 對於對延遲不敏感的小批量系統,可以增加批量發送的截止時間,以提高請求效率。
-
min_backoff
定義:遠程寫失敗的最小等待時間;
min_backoff是第一次的重試等待時間,第二次等待時間是其2倍,以此類推,直到max_backoff的值;
-
max_backoff
定義:遠程寫失敗的最大等待時間;
Grafana直接查詢VM集羣
Grafana配置地址:
說明 | 地址 |
---|---|
負載均衡地址 | http://10.200.4.74:8000 |
vmselect地址 | http://10.200.4.74:8481/select/0/prometheus |
其他API地址
目錄:http://10.200.4.74:8481/select/0/
vmui:http://10.200.4.74:8481/select/0/vmui/
每個組件都有/metrics
,可以接入監控