哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用VictoriaMetrics的Prometheus遠(yuǎn)程存儲(chǔ)方案

馬哥Linux運(yùn)維 ? 來(lái)源:馬哥Linux運(yùn)維 ? 2026-02-26 16:30 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

VictoriaMetrics高性能時(shí)序數(shù)據(jù)庫(kù):Prometheus遠(yuǎn)程存儲(chǔ)方案

Prometheus單機(jī)存儲(chǔ)在生產(chǎn)環(huán)境跑到一定規(guī)模就會(huì)碰壁——單節(jié)點(diǎn)磁盤(pán)容量有限,TSDB默認(rèn)保留15天數(shù)據(jù),想存半年以上的監(jiān)控?cái)?shù)據(jù)基本不現(xiàn)實(shí)。更麻煩的是Prometheus沒(méi)有原生的高可用方案,兩個(gè)Prometheus實(shí)例各采各的,數(shù)據(jù)不一致,查詢時(shí)還得靠Thanos或者聯(lián)邦來(lái)聚合。我們團(tuán)隊(duì)在2022年從Thanos遷移到VictoriaMetrics,集群穩(wěn)定運(yùn)行至今,存儲(chǔ)成本降了約60%,查詢延遲從秒級(jí)降到毫秒級(jí)。這篇文章把部署、對(duì)接、調(diào)優(yōu)的完整流程寫(xiě)出來(lái)。

一、概述

1.1 背景介紹

Prometheus的本地TSDB設(shè)計(jì)目標(biāo)是短期存儲(chǔ),官方建議保留時(shí)間不超過(guò)15-30天。一旦監(jiān)控規(guī)模上去(比如我們的場(chǎng)景:200+節(jié)點(diǎn)、5萬(wàn)+活躍時(shí)間序列、每秒采集樣本數(shù)約50萬(wàn)),單機(jī)Prometheus的內(nèi)存和磁盤(pán)壓力就很大。常見(jiàn)的解決思路有三種:

Thanos:Sidecar模式對(duì)接Prometheus,數(shù)據(jù)上傳到對(duì)象存儲(chǔ)。架構(gòu)復(fù)雜,組件多(Sidecar、Store Gateway、Compactor、Query),運(yùn)維成本高。

Cortex/Mimir:Grafana Labs的方案,依賴Consul/etcd做服務(wù)發(fā)現(xiàn),還需要對(duì)象存儲(chǔ),部署門(mén)檻不低。

VictoriaMetrics:?jiǎn)味M(jìn)制部署,兼容PromQL,壓縮率比Prometheus高7-10倍,查詢速度快,資源消耗低。

我們實(shí)測(cè)對(duì)比過(guò):同樣存儲(chǔ)3個(gè)月的監(jiān)控?cái)?shù)據(jù),Prometheus+Thanos占用約800GB磁盤(pán),VictoriaMetrics只用了120GB左右。查詢30天范圍的聚合數(shù)據(jù),Thanos需要3-5秒,VictoriaMetrics在200ms內(nèi)返回。

1.2 技術(shù)特點(diǎn)

極高的壓縮率:VictoriaMetrics使用自研的壓縮算法,實(shí)測(cè)壓縮比在10:1到15:1之間,比Prometheus的gorilla編碼高出數(shù)倍。100萬(wàn)個(gè)時(shí)間序列、每15秒采集一次、存儲(chǔ)1個(gè)月,磁盤(pán)占用約20-30GB。

完全兼容PromQL:支持MetricsQL(PromQL的超集),現(xiàn)有的Grafana Dashboard和告警規(guī)則可以直接遷移,不用改查詢語(yǔ)句。額外支持了一些實(shí)用函數(shù)如range_median()、histogram_quantile()的優(yōu)化版本。

部署運(yùn)維簡(jiǎn)單:?jiǎn)螜C(jī)版就是一個(gè)二進(jìn)制文件,啟動(dòng)參數(shù)配好就能跑。集群版也只有三個(gè)組件(vminsert、vmselect、vmstorage),沒(méi)有外部依賴,不需要Consul、etcd、Kafka這些中間件。

1.3 適用場(chǎng)景

Prometheus長(zhǎng)期存儲(chǔ):需要保留3個(gè)月以上監(jiān)控?cái)?shù)據(jù)的場(chǎng)景,直接用remote_write對(duì)接VictoriaMetrics,Prometheus只保留短期數(shù)據(jù)做熱查詢。

大規(guī)模監(jiān)控集群:?jiǎn)渭撼^(guò)500個(gè)節(jié)點(diǎn)、活躍時(shí)間序列超過(guò)1000萬(wàn)的場(chǎng)景,VictoriaMetrics集群版可以水平擴(kuò)展,實(shí)測(cè)單集群支撐過(guò)5000萬(wàn)活躍序列。

多租戶監(jiān)控平臺(tái):集群版原生支持多租戶,通過(guò)URL路徑區(qū)分租戶,不同業(yè)務(wù)線的數(shù)據(jù)隔離存儲(chǔ)和查詢,適合平臺(tái)化的監(jiān)控中臺(tái)。

1.4 環(huán)境要求

組件 版本要求 說(shuō)明
操作系統(tǒng) CentOS 7+ / Ubuntu 18.04+ / Debian 10+ 推薦Ubuntu 22.04 LTS
VictoriaMetrics v1.93.0+ 本文基于v1.102.0,建議用最新穩(wěn)定版
Prometheus v2.40+ 需要支持remote_write協(xié)議
Grafana v9.0+ 用于可視化查詢,需要Prometheus數(shù)據(jù)源
CPU 單機(jī)版4核+,集群版每節(jié)點(diǎn)8核+ vmstorage對(duì)CPU要求不高,vmselect查詢時(shí)CPU消耗大
內(nèi)存 單機(jī)版8GB+,集群版每節(jié)點(diǎn)16GB+ 內(nèi)存主要用于緩存和合并寫(xiě)入
磁盤(pán) SSD推薦,容量按壓縮后估算 HDD也能跑,但查詢延遲會(huì)高2-3倍

二、詳細(xì)步驟

2.1 準(zhǔn)備工作

2.1.1 系統(tǒng)檢查

# 檢查系統(tǒng)版本
cat /etc/os-release

# 檢查CPU和內(nèi)存
nproc
free -h

# 檢查磁盤(pán)空間,數(shù)據(jù)盤(pán)建議預(yù)留200GB以上
df -h

# 檢查系統(tǒng)時(shí)間同步狀態(tài),時(shí)序數(shù)據(jù)庫(kù)對(duì)時(shí)間敏感
timedatectl status

# 如果時(shí)間不同步,配置chrony
sudo apt install -y chrony
sudo systemctlenable--now chrony
chronyc tracking

2.1.2 創(chuàng)建用戶和目錄

# 創(chuàng)建專用用戶,不給登錄shell
sudo useradd -r -s /sbin/nologin victoriametrics

# 創(chuàng)建數(shù)據(jù)目錄,生產(chǎn)環(huán)境建議掛載獨(dú)立磁盤(pán)
sudo mkdir -p /data/victoriametrics
sudo mkdir -p /etc/victoriametrics
sudo mkdir -p /var/log/victoriametrics

# 設(shè)置目錄權(quán)限
sudo chown -R victoriametrics:victoriametrics /data/victoriametrics
sudo chown -R victoriametrics:victoriametrics /var/log/victoriametrics

2.1.3 下載安裝

# 設(shè)置版本號(hào)
VM_VERSION="v1.102.0"

# 下載單機(jī)版
cd/tmp
wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/${VM_VERSION}/victoria-metrics-linux-amd64-${VM_VERSION}.tar.gz

# 解壓安裝
tar xzf victoria-metrics-linux-amd64-${VM_VERSION}.tar.gz
sudo mv victoria-metrics-prod /usr/local/bin/victoria-metrics
sudo chmod +x /usr/local/bin/victoria-metrics

# 驗(yàn)證安裝
victoria-metrics --version

如果要部署集群版,需要額外下載集群組件:

# 下載集群版組件
wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/${VM_VERSION}/victoria-metrics-linux-amd64-${VM_VERSION}-cluster.tar.gz

tar xzf victoria-metrics-linux-amd64-${VM_VERSION}-cluster.tar.gz
sudo mv vminsert-prod /usr/local/bin/vminsert
sudo mv vmselect-prod /usr/local/bin/vmselect
sudo mv vmstorage-prod /usr/local/bin/vmstorage
sudo chmod +x /usr/local/bin/vm{insert,select,storage}

# 下載vmagent(可選,替代Prometheus做采集)
wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/${VM_VERSION}/vmutils-linux-amd64-${VM_VERSION}.tar.gz
tar xzf vmutils-linux-amd64-${VM_VERSION}.tar.gz
sudo mv vmagent-prod /usr/local/bin/vmagent
sudo mv vmctl-prod /usr/local/bin/vmctl
sudo chmod +x /usr/local/bin/vmagent /usr/local/bin/vmctl

2.2 核心配置

2.2.1 單機(jī)版部署

單機(jī)版適合中小規(guī)模場(chǎng)景(活躍時(shí)間序列500萬(wàn)以內(nèi)),一個(gè)進(jìn)程搞定讀寫(xiě)存儲(chǔ)。

# 創(chuàng)建systemd服務(wù)文件
sudo tee /etc/systemd/system/victoriametrics.service > /dev/null <

參數(shù)說(shuō)明(這些都是踩過(guò)坑調(diào)出來(lái)的):

-retentionPeriod=6:數(shù)據(jù)保留6個(gè)月,單位是月。改成6而不是180d,因?yàn)榘丛掠?jì)算更直觀。

-memory.allowedPercent=60:限制VictoriaMetrics使用系統(tǒng)60%的內(nèi)存。默認(rèn)不限制,在16GB內(nèi)存的機(jī)器上跑,不設(shè)這個(gè)參數(shù)會(huì)把內(nèi)存吃滿導(dǎo)致OOM Killer干掉進(jìn)程。生產(chǎn)環(huán)境必須設(shè)。

-dedup.minScrapeInterval=15s:去重間隔設(shè)為采集間隔。如果你跑了兩個(gè)Prometheus做HA,兩邊都remote_write到VM,這個(gè)參數(shù)會(huì)自動(dòng)去重,只保留一份數(shù)據(jù)。

-search.maxUniqueTimeseries=5000000:?jiǎn)未尾樵冏畲蠓祷氐臅r(shí)間序列數(shù)。默認(rèn)30萬(wàn),在大集群里查{__name__=~".+"}這種寬泛查詢會(huì)報(bào)錯(cuò),按需調(diào)大。

-maxLabelsPerTimeseries=40:每個(gè)時(shí)間序列最大標(biāo)簽數(shù)。默認(rèn)30,有些業(yè)務(wù)自定義標(biāo)簽多的會(huì)超限,40基本夠用。

2.2.2 集群版部署

集群版由三個(gè)組件組成,生產(chǎn)環(huán)境建議每個(gè)組件至少2個(gè)實(shí)例:

vmstorage:存儲(chǔ)節(jié)點(diǎn),負(fù)責(zé)數(shù)據(jù)持久化。部署在有SSD的機(jī)器上。

vminsert:寫(xiě)入網(wǎng)關(guān),接收remote_write請(qǐng)求,按一致性哈希分發(fā)到vmstorage。無(wú)狀態(tài),可以隨意擴(kuò)縮。

vmselect:查詢網(wǎng)關(guān),接收PromQL查詢,從所有vmstorage拉數(shù)據(jù)聚合。無(wú)狀態(tài)。

假設(shè)我們有3臺(tái)機(jī)器:

角色 IP 端口
vmstorage-1 10.0.1.11 8482(http) / 8400(vminsert) / 8401(vmselect)
vmstorage-2 10.0.1.12 8482(http) / 8400(vminsert) / 8401(vmselect)
vmstorage-3 10.0.1.13 8482(http) / 8400(vminsert) / 8401(vmselect)
vminsert 10.0.1.21 8480
vmselect 10.0.1.22 8481

vmstorage服務(wù)配置(三臺(tái)存儲(chǔ)節(jié)點(diǎn)都部署):

sudo tee /etc/systemd/system/vmstorage.service > /dev/null <

vminsert服務(wù)配置

sudo tee /etc/systemd/system/vminsert.service > /dev/null <

-replicationFactor=2表示每條數(shù)據(jù)寫(xiě)入2個(gè)存儲(chǔ)節(jié)點(diǎn)。這樣掛掉1個(gè)vmstorage不丟數(shù)據(jù)。代價(jià)是存儲(chǔ)空間翻倍,但數(shù)據(jù)安全比省磁盤(pán)重要。

vmselect服務(wù)配置

sudo tee /etc/systemd/system/vmselect.service > /dev/null <

vmselect的-replicationFactor=2要和vminsert一致,這樣查詢時(shí)vmselect知道數(shù)據(jù)有副本,會(huì)自動(dòng)去重。

2.2.3 Prometheus remote_write對(duì)接

在Prometheus配置文件中添加remote_write段:

# /etc/prometheus/prometheus.yml
global:
scrape_interval:15s
evaluation_interval:15s

remote_write:
-url:"http://10.0.1.21:8480/insert/0/prometheus/api/v1/write"
 queue_config:
  max_samples_per_send:10000
  capacity:20000
  max_shards:30
  min_shards:1
  batch_send_deadline:5s
 write_relabel_configs:
  -source_labels:[__name__]
   regex:"go_.*"
   action:drop

# 如果是單機(jī)版VM,URL改為:
# url: "http://VM_IP:8428/api/v1/write"

URL路徑中的/insert/0/prometheus/里的0是租戶ID。單租戶場(chǎng)景用0就行,多租戶按業(yè)務(wù)分配不同的數(shù)字。

queue_config的參數(shù)是調(diào)過(guò)的:

max_samples_per_send=10000:每批發(fā)送1萬(wàn)個(gè)樣本,默認(rèn)500太小,網(wǎng)絡(luò)開(kāi)銷(xiāo)大。

max_shards=30:最大并發(fā)發(fā)送協(xié)程數(shù)。如果Prometheus采集量大(每秒超過(guò)10萬(wàn)樣本),這個(gè)值要調(diào)到50以上。

batch_send_deadline=5s:批次發(fā)送超時(shí)。默認(rèn)5s夠用,網(wǎng)絡(luò)差的環(huán)境調(diào)到10s。

write_relabel_configs用來(lái)過(guò)濾不需要遠(yuǎn)程存儲(chǔ)的指標(biāo)。go_*這類(lèi)Go運(yùn)行時(shí)指標(biāo)一般不需要長(zhǎng)期存儲(chǔ),直接drop掉能減少約10-15%的寫(xiě)入量。

2.2.4 vmagent替代Prometheus采集

如果你不需要Prometheus的告警功能(告警交給VMAlert或者獨(dú)立的Alertmanager),可以用vmagent替代Prometheus做采集。vmagent內(nèi)存占用只有Prometheus的1/3左右,支持同樣的服務(wù)發(fā)現(xiàn)和relabel配置。

# vmagent配置文件
sudo tee /etc/victoriametrics/vmagent.yml > /dev/null <
# vmagent systemd服務(wù)
sudo tee /etc/systemd/system/vmagent.service > /dev/null <

-remoteWrite.maxDiskUsagePerURL=1GB這個(gè)參數(shù)很關(guān)鍵:當(dāng)遠(yuǎn)端VM不可用時(shí),vmagent會(huì)把數(shù)據(jù)緩存到本地磁盤(pán),等VM恢復(fù)后自動(dòng)重傳。默認(rèn)不限制,磁盤(pán)可能被寫(xiě)滿。設(shè)成1GB,按每秒10萬(wàn)樣本算,大約能緩存2-3小時(shí)的數(shù)據(jù),足夠覆蓋大多數(shù)故障恢復(fù)時(shí)間。

2.3 啟動(dòng)和驗(yàn)證

2.3.1 啟動(dòng)服務(wù)

# 單機(jī)版啟動(dòng)
sudo systemctl daemon-reload
sudo systemctlenable--now victoriametrics
sudo systemctl status victoriametrics

# 集群版啟動(dòng)(按順序:先storage,再insert和select)
# 在三臺(tái)存儲(chǔ)節(jié)點(diǎn)上執(zhí)行
sudo systemctl daemon-reload
sudo systemctlenable--now vmstorage
sudo systemctl status vmstorage

# 在vminsert節(jié)點(diǎn)執(zhí)行
sudo systemctlenable--now vminsert
sudo systemctl status vminsert

# 在vmselect節(jié)點(diǎn)執(zhí)行
sudo systemctlenable--now vmselect
sudo systemctl status vmselect

# 啟動(dòng)vmagent(如果使用)
sudo systemctlenable--now vmagent

2.3.2 功能驗(yàn)證

# 1. 檢查VM單機(jī)版健康狀態(tài)
curl -s http://localhost:8428/health
# 預(yù)期輸出:空響應(yīng),HTTP 200

# 2. 檢查集群各組件
curl -s http://10.0.1.11:8482/health # vmstorage
curl -s http://10.0.1.21:8480/health # vminsert
curl -s http://10.0.1.22:8481/health # vmselect

# 3. 手動(dòng)寫(xiě)入測(cè)試數(shù)據(jù)(單機(jī)版)
curl -d'test_metric{job="test",instance="localhost"} 42'
 http://localhost:8428/api/v1/import/prometheus

# 4. 查詢驗(yàn)證
curl -s'http://localhost:8428/api/v1/query?query=test_metric'| python3 -m json.tool
# 預(yù)期看到 test_metric 值為42

# 5. 集群版寫(xiě)入測(cè)試(通過(guò)vminsert)
curl -d'test_metric{job="test"} 42'
 http://10.0.1.21:8480/insert/0/prometheus/api/v1/import/prometheus

# 6. 集群版查詢測(cè)試(通過(guò)vmselect)
curl -s'http://10.0.1.22:8481/select/0/prometheus/api/v1/query?query=test_metric'| python3 -m json.tool

# 7. 檢查Prometheus remote_write是否正常
# 在Prometheus的Web UI(:9090)查看 Status -> Runtime & Build Information
# 確認(rèn) remote_storage_samples_total 計(jì)數(shù)器在增長(zhǎng)

# 8. 查看VM的內(nèi)置監(jiān)控指標(biāo)
curl -s http://localhost:8428/metrics | grep vm_rows_inserted_total
# 這個(gè)計(jì)數(shù)器應(yīng)該在持續(xù)增長(zhǎng)

2.3.3 Grafana數(shù)據(jù)源配置

在Grafana中添加Prometheus類(lèi)型的數(shù)據(jù)源:

單機(jī)版:URL填http://VM_IP:8428

集群版:URL填http://vmselect_IP:8481/select/0/prometheus

其他配置保持默認(rèn)即可。添加完數(shù)據(jù)源后,導(dǎo)入一個(gè)Dashboard驗(yàn)證查詢是否正常,推薦導(dǎo)入ID為11176的VictoriaMetrics官方Dashboard。

三、示例代碼和配置

3.1 完整配置示例

3.1.1 集群版生產(chǎn)級(jí)部署配置

以下是我們線上跑了14個(gè)月的集群配置,3個(gè)vmstorage + 2個(gè)vminsert + 2個(gè)vmselect,承載約800萬(wàn)活躍時(shí)間序列,每秒寫(xiě)入約80萬(wàn)樣本。

vmstorage啟動(dòng)參數(shù)(生產(chǎn)調(diào)優(yōu)版)

# 文件路徑:/etc/systemd/system/vmstorage.service
[Unit]
Description=VictoriaMetrics vmstorage - production
After=network.target
Wants=network-online.target

[Service]
Type=simple
User=victoriametrics
Group=victoriametrics
ExecStart=/usr/local/bin/vmstorage 
  -storageDataPath=/data/vmstorage 
  -retentionPeriod=6 
  -httpListenAddr=:8482 
  -vminsertAddr=:8400 
  -vmselectAddr=:8401 
  -dedup.minScrapeInterval=15s 
  -memory.allowedPercent=60 
  -search.maxUniqueTimeseries=10000000 
  -snapshotsMaxAge=72h 
  -finalMergeDelay=10s 
  -bigMergeConcurrency=2 
  -smallMergeConcurrency=4 
  -loggerTimezone=Asia/Shanghai 
  -loggerOutput=stderr 
  -loggerLevel=INFO
Restart=always
RestartSec=5
LimitNOFILE=131072
LimitNPROC=32000
# 防止OOM Killer殺掉進(jìn)程
OOMScoreAdjust=-500
# 限制core dump大小
LimitCORE=0

[Install]
WantedBy=multi-user.target

參數(shù)解釋:

-bigMergeConcurrency=2:大合并并發(fā)數(shù)。默認(rèn)值等于CPU核數(shù)的一半,在32核機(jī)器上會(huì)起16個(gè)合并線程,IO壓力很大。設(shè)成2,合并速度慢一點(diǎn)但不影響讀寫(xiě)性能。

-smallMergeConcurrency=4:小合并并發(fā)數(shù)。小合并頻繁但每次數(shù)據(jù)量小,4個(gè)線程夠用。

-snapshotsMaxAge=72h:快照最大保留時(shí)間。做備份時(shí)會(huì)創(chuàng)建快照,72小時(shí)后自動(dòng)清理,防止忘記刪快照撐爆磁盤(pán)。

-finalMergeDelay=10s:最終合并延遲。數(shù)據(jù)寫(xiě)入后等10秒再做最終合并,減少寫(xiě)放大。

vminsert生產(chǎn)配置

# 文件路徑:/etc/systemd/system/vminsert.service
[Unit]
Description=VictoriaMetrics vminsert - production
After=network.target

[Service]
Type=simple
User=victoriametrics
Group=victoriametrics
ExecStart=/usr/local/bin/vminsert 
  -httpListenAddr=:8480 
  -storageNode=10.0.1.11:8400,10.0.1.12:8400,10.0.1.13:8400 
  -replicationFactor=2 
  -maxLabelsPerTimeseries=40 
  -maxConcurrentInserts=64 
  -insert.maxQueueDuration=30s 
  -loggerTimezone=Asia/Shanghai
Restart=always
RestartSec=5
LimitNOFILE=131072

[Install]
WantedBy=multi-user.target

vmselect生產(chǎn)配置

# 文件路徑:/etc/systemd/system/vmselect.service
[Unit]
Description=VictoriaMetrics vmselect - production
After=network.target

[Service]
Type=simple
User=victoriametrics
Group=victoriametrics
ExecStart=/usr/local/bin/vmselect 
  -httpListenAddr=:8481 
  -storageNode=10.0.1.11:8401,10.0.1.12:8401,10.0.1.13:8401 
  -dedup.minScrapeInterval=15s 
  -search.maxQueryDuration=120s 
  -search.maxConcurrentRequests=64 
  -search.maxUniqueTimeseries=10000000 
  -search.maxSamplesPerQuery=500000000 
  -search.cacheTimestampOffset=5m 
  -replicationFactor=2 
  -selectNode=10.0.1.22:8481 
  -loggerTimezone=Asia/Shanghai
Restart=always
RestartSec=5
LimitNOFILE=131072

[Install]
WantedBy=multi-user.target

-search.maxSamplesPerQuery=500000000:?jiǎn)未尾樵冏畲髽颖緮?shù)。默認(rèn)10億,但如果有人寫(xiě)了個(gè)查全量數(shù)據(jù)的PromQL,會(huì)把vmselect內(nèi)存打爆。5億是個(gè)比較安全的上限。

3.1.2 vmagent生產(chǎn)級(jí)采集配置

# 文件路徑:/etc/victoriametrics/vmagent-prod.yml
# 這個(gè)配置在我們的K8s集群上跑了10個(gè)月,采集200+節(jié)點(diǎn)
global:
scrape_interval:15s
scrape_timeout:10s
external_labels:
 cluster:prod-bj-01
 env:production
 region:cn-north-1

scrape_configs:
# 節(jié)點(diǎn)監(jiān)控
-job_name:"node-exporter"
 file_sd_configs:
  -files:
    -/etc/victoriametrics/targets/nodes/*.yml
   refresh_interval:30s
 metric_relabel_configs:
  # 丟棄不需要的高基數(shù)指標(biāo)
  -source_labels:[__name__]
   regex:"node_scrape_collector_duration_seconds|node_scrape_collector_success"
   action:drop
  # 丟棄不需要的文件系統(tǒng)指標(biāo)(tmpfs等)
  -source_labels:[__name__,fstype]
   regex:"node_filesystem_.+;(tmpfs|devtmpfs|rootfs)"
   action:drop

# Kubernetes API Server
-job_name:"kubernetes-apiservers"
 kubernetes_sd_configs:
  -role:endpoints
 scheme:https
 tls_config:
  ca_file:/var/run/secrets/kubernetes.io/serviceaccount/ca.crt
 bearer_token_file:/var/run/secrets/kubernetes.io/serviceaccount/token
 relabel_configs:
  -source_labels:[__meta_kubernetes_namespace,__meta_kubernetes_service_name,__meta_kubernetes_endpoint_port_name]
   action:keep
   regex:default;kubernetes;https

# kubelet和cAdvisor
-job_name:"kubelet"
 kubernetes_sd_configs:
  -role:node
 scheme:https
 tls_config:
  ca_file:/var/run/secrets/kubernetes.io/serviceaccount/ca.crt
  insecure_skip_verify:true
 bearer_token_file:/var/run/secrets/kubernetes.io/serviceaccount/token
 relabel_configs:
  -action:labelmap
   regex:__meta_kubernetes_node_label_(.+)

-job_name:"cadvisor"
 kubernetes_sd_configs:
  -role:node
 scheme:https
 tls_config:
  ca_file:/var/run/secrets/kubernetes.io/serviceaccount/ca.crt
  insecure_skip_verify:true
 bearer_token_file:/var/run/secrets/kubernetes.io/serviceaccount/token
 metrics_path:/metrics/cadvisor
 metric_relabel_configs:
  # cAdvisor指標(biāo)非常多,只保留核心的
  -source_labels:[__name__]
   regex:"container_cpu_usage_seconds_total|container_memory_working_set_bytes|container_memory_rss|container_network_receive_bytes_total|container_network_transmit_bytes_total|container_fs_usage_bytes|container_fs_limit_bytes"
   action:keep

# 自動(dòng)發(fā)現(xiàn)帶prometheus注解的Pod
-job_name:"kubernetes-pods"
 kubernetes_sd_configs:
  -role:pod
 relabel_configs:
  -source_labels:[__meta_kubernetes_pod_annotation_prometheus_io_scrape]
   action:keep
   regex:true
  -source_labels:[__meta_kubernetes_pod_annotation_prometheus_io_scheme]
   action:replace
   target_label:__scheme__
   regex:(https?)
  -source_labels:[__meta_kubernetes_pod_annotation_prometheus_io_path]
   action:replace
   target_label:__metrics_path__
   regex:(.+)
  -source_labels:[__address__,__meta_kubernetes_pod_annotation_prometheus_io_port]
   action:replace
   regex:([^:]+)(?::d+)?;(d+)
   replacement:$1:$2
   target_label:__address__
  -action:labelmap
   regex:__meta_kubernetes_pod_label_(.+)
  -source_labels:[__meta_kubernetes_namespace]
   action:replace
   target_label:namespace
  -source_labels:[__meta_kubernetes_pod_name]
   action:replace
   target_label:pod

3.1.3 vmctl數(shù)據(jù)遷移腳本

從Prometheus遷移歷史數(shù)據(jù)到VictoriaMetrics:

#!/bin/bash
# 文件名:migrate_prometheus_to_vm.sh
# 功能:將Prometheus歷史數(shù)據(jù)遷移到VictoriaMetrics
# 實(shí)測(cè)遷移200GB Prometheus數(shù)據(jù)耗時(shí)約4小時(shí)

set-euo pipefail

PROM_URL="http://10.0.1.50:9090"
VM_URL="http://10.0.1.21:8480/insert/0/prometheus"
# 遷移時(shí)間范圍:最近90天
START_TIME=$(date -d"90 days ago"+%s)
END_TIME=$(date +%s)
LOG_FILE="/var/log/victoriametrics/migration_$(date +%Y%m%d_%H%M%S).log"

echo"[$(date)] 開(kāi)始遷移 Prometheus -> VictoriaMetrics"| tee -a"$LOG_FILE"
echo"[$(date)] 時(shí)間范圍:$(date -d @$START_TIME)->$(date -d @$END_TIME)"| tee -a"$LOG_FILE"

# vmctl native模式遷移,速度最快
/usr/local/bin/vmctl prometheus 
  --prom-snapshot="/data/prometheus/snapshots/$(ls -t /data/prometheus/snapshots/ | head -1)"
  --vm-addr="$VM_URL"
  --vm-concurrency=8 
  --vm-batch-size=200000 
  2>&1 | tee -a"$LOG_FILE"

# 如果沒(méi)有快照,用API模式遷移(速度慢但不需要停Prometheus)
# /usr/local/bin/vmctl prometheus 
#   --prom-addr="$PROM_URL" 
#   --vm-addr="$VM_URL" 
#   --prom-start="$START_TIME" 
#   --prom-end="$END_TIME" 
#   --vm-concurrency=4 
#   --prom-concurrency=4 
#   2>&1 | tee -a "$LOG_FILE"

EXIT_CODE=$?
if[$EXIT_CODE-eq 0 ];then
 echo"[$(date)] 遷移完成"| tee -a"$LOG_FILE"
else
 echo"[$(date)] 遷移失敗,退出碼:$EXIT_CODE"| tee -a"$LOG_FILE"
 exit$EXIT_CODE
fi

# 驗(yàn)證遷移結(jié)果:對(duì)比源和目標(biāo)的時(shí)間序列數(shù)
PROM_SERIES=$(curl -s"$PROM_URL/api/v1/label/__name__/values"| python3 -c"import sys,json; print(len(json.load(sys.stdin)['data']))")
VM_SERIES=$(curl -s"http://10.0.1.22:8481/select/0/prometheus/api/v1/label/__name__/values"| python3 -c"import sys,json; print(len(json.load(sys.stdin)['data']))")
echo"[$(date)] Prometheus指標(biāo)數(shù):$PROM_SERIES, VictoriaMetrics指標(biāo)數(shù):$VM_SERIES"| tee -a"$LOG_FILE"

3.2 實(shí)際應(yīng)用案例

案例一:多租戶監(jiān)控平臺(tái)

場(chǎng)景描述:公司有5個(gè)業(yè)務(wù)線,每個(gè)業(yè)務(wù)線有獨(dú)立的Prometheus集群,需要統(tǒng)一存儲(chǔ)和查詢。用VictoriaMetrics集群版的多租戶功能,每個(gè)業(yè)務(wù)線分配一個(gè)租戶ID。

實(shí)現(xiàn)配置

# 業(yè)務(wù)線A的Prometheus配置
# 租戶ID: 1
remote_write:
-url:"http://vminsert-lb:8480/insert/1/prometheus/api/v1/write"
 queue_config:
  max_samples_per_send:10000
  max_shards:20

# 業(yè)務(wù)線B的Prometheus配置
# 租戶ID: 2
remote_write:
-url:"http://vminsert-lb:8480/insert/2/prometheus/api/v1/write"
 queue_config:
  max_samples_per_send:10000
  max_shards:20

# 業(yè)務(wù)線C的Prometheus配置
# 租戶ID: 3
remote_write:
-url:"http://vminsert-lb:8480/insert/3/prometheus/api/v1/write"
 queue_config:
  max_samples_per_send:10000
  max_shards:15

Grafana中為每個(gè)業(yè)務(wù)線配置獨(dú)立的數(shù)據(jù)源:

業(yè)務(wù)線A數(shù)據(jù)源URL: http://vmselect-lb:8481/select/1/prometheus
業(yè)務(wù)線B數(shù)據(jù)源URL: http://vmselect-lb:8481/select/2/prometheus
業(yè)務(wù)線C數(shù)據(jù)源URL: http://vmselect-lb:8481/select/3/prometheus

# 如果需要跨租戶查詢(運(yùn)維團(tuán)隊(duì)全局視圖):
全局?jǐn)?shù)據(jù)源URL: http://vmselect-lb:8481/select/multitenant/prometheus

跨租戶查詢需要vmselect啟動(dòng)時(shí)加-search.tenantCacheExpireDuration=10s參數(shù)。實(shí)測(cè)跨5個(gè)租戶查詢聚合數(shù)據(jù),延遲在500ms以內(nèi)。

案例二:Prometheus HA + VictoriaMetrics去重

場(chǎng)景描述:兩個(gè)Prometheus實(shí)例采集相同的目標(biāo)做高可用,都remote_write到VictoriaMetrics。VM自動(dòng)去重,Grafana只查VM。

架構(gòu)

Prometheus-A (10.0.1.51) ──remote_write──> VictoriaMetrics
                       ↑
Prometheus-B (10.0.1.52) ──remote_write──────┘
                       │
                  Grafana <─┘ (查詢)

Prometheus-A配置

# /etc/prometheus/prometheus.yml (Prometheus-A)
global:
scrape_interval:15s
external_labels:
 replica:prom-a
 cluster:prod

remote_write:
-url:"http://10.0.1.21:8480/insert/0/prometheus/api/v1/write"
 queue_config:
  max_samples_per_send:10000
  max_shards:30

Prometheus-B配置(只有replica標(biāo)簽不同):

# /etc/prometheus/prometheus.yml (Prometheus-B)
global:
scrape_interval:15s
external_labels:
 replica:prom-b
 cluster:prod

remote_write:
-url:"http://10.0.1.21:8480/insert/0/prometheus/api/v1/write"
 queue_config:
  max_samples_per_send:10000
  max_shards:30

VictoriaMetrics端配置-dedup.minScrapeInterval=15s,VM會(huì)按時(shí)間戳對(duì)齊去重,兩個(gè)Prometheus寫(xiě)入的相同指標(biāo)只保留一份。去重后存儲(chǔ)量和單Prometheus一樣,但任何一個(gè)Prometheus掛了數(shù)據(jù)都不會(huì)斷。

我們線上用這個(gè)方案跑了一年多,中間Prometheus-A因?yàn)闄C(jī)器故障重啟過(guò)3次,每次都是Prometheus-B無(wú)縫接管,Grafana上看不到任何數(shù)據(jù)斷點(diǎn)。

四、最佳實(shí)踐和注意事項(xiàng)

4.1 最佳實(shí)踐

4.1.1 存儲(chǔ)容量規(guī)劃

容量規(guī)劃是上線前必須做的事,算錯(cuò)了要么磁盤(pán)爆滿丟數(shù)據(jù),要么浪費(fèi)錢(qián)買(mǎi)了用不上的SSD。

計(jì)算公式:

磁盤(pán)用量 = 活躍時(shí)間序列數(shù) × 每個(gè)樣本壓縮后大小 × 每天采樣次數(shù) × 保留天數(shù) × 副本數(shù)

實(shí)際例子:
- 活躍時(shí)間序列:500萬(wàn)
- 采集間隔:15秒(每天5760次采樣)
- 每個(gè)樣本壓縮后大?。杭s0.5-1.5字節(jié)(VM的壓縮率)
- 保留6個(gè)月(180天)
- 副本數(shù):2

磁盤(pán)用量 = 5,000,000 × 1.0 × 5,760 × 180 × 2 = 約10.4TB

實(shí)際使用中,VM的壓縮率會(huì)隨數(shù)據(jù)特征變化。我們的經(jīng)驗(yàn)值:

計(jì)數(shù)器類(lèi)指標(biāo)(Counter):壓縮后每樣本約0.4字節(jié)

儀表盤(pán)類(lèi)指標(biāo)(Gauge):壓縮后每樣本約1.0-1.5字節(jié)

直方圖類(lèi)指標(biāo)(Histogram):壓縮后每樣本約0.8字節(jié)

# 查看當(dāng)前VM的實(shí)際壓縮率
curl -s http://localhost:8428/api/v1/status/tsdb | python3 -m json.tool

# 查看磁盤(pán)使用詳情
curl -s http://localhost:8428/internal/force_flush
du -sh /data/victoriametrics/data/

生產(chǎn)環(huán)境建議磁盤(pán)預(yù)留30%的余量,因?yàn)楹喜⒉僮鲿?huì)臨時(shí)占用額外空間。

4.1.2 降采樣(Downsampling)配置

長(zhǎng)期存儲(chǔ)的數(shù)據(jù)不需要保持原始精度。比如3個(gè)月前的數(shù)據(jù),1分鐘一個(gè)點(diǎn)就夠了,沒(méi)必要保留15秒的原始精度。VictoriaMetrics企業(yè)版支持降采樣,開(kāi)源版可以用vmalert做recording rules實(shí)現(xiàn)類(lèi)似效果。

# vmalert降采樣規(guī)則
# 文件路徑:/etc/victoriametrics/downsampling_rules.yml
groups:
-name:downsampling_5m
 interval:5m
 rules:
  # 將CPU使用率降采樣為5分鐘平均值
  -record:cpu_usage_avg:5m
   expr:avg_over_time(node_cpu_seconds_total{mode!="idle"}[5m])

  # 將內(nèi)存使用降采樣為5分鐘平均值
  -record:memory_usage_avg:5m
   expr:avg_over_time(node_memory_MemAvailable_bytes[5m])

  # 將網(wǎng)絡(luò)流量降采樣為5分鐘速率
  -record:network_receive_rate:5m
   expr:rate(node_network_receive_bytes_total[5m])

-name:downsampling_1h
 interval:1h
 rules:
  # 1小時(shí)粒度的聚合,用于月度報(bào)表
  -record:cpu_usage_avg:1h
   expr:avg_over_time(cpu_usage_avg:5m[1h])
  -record:memory_usage_avg:1h
   expr:avg_over_time(memory_usage_avg:5m[1h])

4.1.3 去重策略

跑雙Prometheus HA時(shí),去重配置不對(duì)會(huì)導(dǎo)致數(shù)據(jù)翻倍或者查詢結(jié)果不穩(wěn)定。

# VM端去重配置(單機(jī)版或vmstorage)
-dedup.minScrapeInterval=15s

# vmselect端也要配(集群版)
-dedup.minScrapeInterval=15s

去重的原理:VM按時(shí)間戳對(duì)齊,同一個(gè)時(shí)間序列在同一個(gè)時(shí)間窗口(15秒)內(nèi)只保留一個(gè)樣本。兩個(gè)Prometheus采集同一個(gè)target,時(shí)間戳可能差幾百毫秒,但在15秒窗口內(nèi)會(huì)被合并。

踩坑經(jīng)驗(yàn):-dedup.minScrapeInterval的值必須等于或大于Prometheus的scrape_interval。如果Prometheus是15秒采集,這里設(shè)成10秒,會(huì)導(dǎo)致部分?jǐn)?shù)據(jù)沒(méi)被去重,查詢時(shí)出現(xiàn)毛刺。

4.1.4 性能調(diào)優(yōu)

# 1. 調(diào)整系統(tǒng)參數(shù)
# 增大文件描述符限制
echo"victoriametrics soft nofile 131072">> /etc/security/limits.conf
echo"victoriametrics hard nofile 131072">> /etc/security/limits.conf

# 調(diào)整內(nèi)核參數(shù)
cat >> /etc/sysctl.conf < /sys/block/sda/queue/scheduler
echo256 > /sys/block/sda/queue/nr_requests

4.1.5 安全加固

# 1. 用Nginx做反向代理,加上基礎(chǔ)認(rèn)證
sudo apt install -y nginx apache2-utils

# 創(chuàng)建認(rèn)證文件
sudo htpasswd -bc /etc/nginx/.htpasswd vmuser'StrongP@ssw0rd'

# Nginx配置
cat > /etc/nginx/conf.d/victoriametrics.conf <
# 2. 限制VM的監(jiān)聽(tīng)地址(不要監(jiān)聽(tīng)0.0.0.0)
# 在systemd服務(wù)文件中修改
-httpListenAddr=10.0.1.11:8482 # 只監(jiān)聽(tīng)內(nèi)網(wǎng)IP

# 3. 關(guān)閉不需要的API端點(diǎn)
# vmselect啟動(dòng)參數(shù)加上
-search.resetCacheAuthKey=your-secret-key # 重置緩存需要密鑰
-deleteAuthKey=your-delete-key       # 刪除數(shù)據(jù)需要密鑰
-snapshotAuthKey=your-snapshot-key     # 創(chuàng)建快照需要密鑰
# 4. 配置防火墻規(guī)則
# 只允許特定IP訪問(wèn)VM端口
sudo ufw allow from 10.0.1.0/24 to any port 8428
sudo ufw allow from 10.0.1.0/24 to any port 8480
sudo ufw allow from 10.0.1.0/24 to any port 8481
sudo ufw allow from 10.0.1.0/24 to any port 8482
sudo ufw deny 8428
sudo ufw deny 8480
sudo ufw deny 8481
sudo ufw deny 8482

4.2 注意事項(xiàng)

4.2.1 配置注意事項(xiàng)

改retentionPeriod之前先算好磁盤(pán):把保留時(shí)間從3個(gè)月改成12個(gè)月,磁盤(pán)用量會(huì)翻4倍。改之前先用上面的公式算一下,確認(rèn)磁盤(pán)夠用再改。改完重啟VM,舊數(shù)據(jù)不會(huì)立即刪除,要等到過(guò)期時(shí)間才會(huì)清理。

-retentionPeriod改小不會(huì)立即釋放空間,VM的數(shù)據(jù)按月份分目錄存儲(chǔ),只有整個(gè)月份過(guò)期后才會(huì)刪除對(duì)應(yīng)目錄。比如從6個(gè)月改成3個(gè)月,要等3個(gè)月后才能看到空間釋放。

集群版擴(kuò)容vmstorage節(jié)點(diǎn)后,新節(jié)點(diǎn)不會(huì)自動(dòng)均衡舊數(shù)據(jù)。新數(shù)據(jù)會(huì)均勻分布到所有節(jié)點(diǎn),但舊數(shù)據(jù)還在原來(lái)的節(jié)點(diǎn)上。如果需要均衡,得用vmctl做數(shù)據(jù)遷移。

vminsert的-storageNode列表順序很重要,改變順序會(huì)導(dǎo)致數(shù)據(jù)分布變化。擴(kuò)容時(shí)只在末尾追加新節(jié)點(diǎn),不要調(diào)整已有節(jié)點(diǎn)的順序。

4.2.2 常見(jiàn)錯(cuò)誤

錯(cuò)誤現(xiàn)象 原因分析 解決方案
cannot allocate memory VM進(jìn)程被OOM Kill 沒(méi)設(shè)-memory.allowedPercent,VM吃滿了系統(tǒng)內(nèi)存 設(shè)置-memory.allowedPercent=60,同時(shí)檢查是否有大范圍查詢
too many open files 文件描述符限制太低 systemd配置LimitNOFILE=131072,同時(shí)改/etc/security/limits.conf
Prometheus remote_write報(bào)context deadline exceeded VM寫(xiě)入隊(duì)列滿了或網(wǎng)絡(luò)延遲高 增大vminsert的-maxConcurrentInserts,檢查網(wǎng)絡(luò)延遲
查詢返回the number of unique timeseries exceeds 查詢命中的時(shí)間序列數(shù)超過(guò)限制 調(diào)大-search.maxUniqueTimeseries,或優(yōu)化PromQL縮小查詢范圍
集群版查詢數(shù)據(jù)不一致 vmselect的-replicationFactor和vminsert不一致 確保兩端的-replicationFactor值相同
磁盤(pán)空間持續(xù)增長(zhǎng)不釋放 快照沒(méi)清理或合并操作積壓 檢查/data/vmstorage/snapshots/目錄,清理過(guò)期快照

4.2.3 兼容性問(wèn)題

PromQL兼容性:VictoriaMetrics兼容99%的PromQL語(yǔ)法,但有少數(shù)邊界情況行為不同。比如rate()函數(shù)在數(shù)據(jù)有間斷時(shí),VM和Prometheus的插值邏輯略有差異。遷移后建議對(duì)比關(guān)鍵告警規(guī)則的查詢結(jié)果。

remote_write協(xié)議版本:VM支持Prometheus remote_write v1和v2協(xié)議。Prometheus 2.47+默認(rèn)用v2,如果VM版本低于1.93.0不支持v2,需要在Prometheus端強(qiáng)制用v1:remote_write.protocol_version: 1。

Grafana版本:Grafana 9.x以上對(duì)VM的兼容性最好。8.x版本在使用$__rate_interval變量時(shí)可能有問(wèn)題,建議升級(jí)到9.x+。

五、故障排查和監(jiān)控

5.1 故障排查

5.1.1 日志查看

# 查看VM單機(jī)版日志
sudo journalctl -u victoriametrics -f --no-pager

# 查看集群各組件日志
sudo journalctl -u vmstorage -f --no-pager
sudo journalctl -u vminsert -f --no-pager
sudo journalctl -u vmselect -f --no-pager

# 查看最近的錯(cuò)誤日志
sudo journalctl -u victoriametrics --since"1 hour ago"| grep -i"error|warn|fatal"

# 查看vmagent日志
sudo journalctl -u vmagent -f --no-pager

# 如果配置了日志文件輸出
tail -f /var/log/victoriametrics/vm.log | grep -v"DEBUG"

5.1.2 常見(jiàn)問(wèn)題排查

問(wèn)題一:數(shù)據(jù)寫(xiě)入延遲,Prometheus remote_write隊(duì)列積壓

# 在Prometheus端查看remote_write隊(duì)列狀態(tài)
curl -s http://localhost:9090/api/v1/query?query=prometheus_remote_storage_pending_samples | python3 -m json.tool

# 如果pending_samples持續(xù)增長(zhǎng),說(shuō)明寫(xiě)入速度跟不上
# 檢查vminsert的寫(xiě)入延遲
curl -s http://10.0.1.21:8480/metrics | grep vm_http_request_duration

# 檢查vmstorage的磁盤(pán)IO
iostat -x 1 5

# 檢查網(wǎng)絡(luò)延遲
ping -c 10 10.0.1.21

解決方案

增大Prometheus的max_shards(從30調(diào)到50)

檢查vmstorage所在機(jī)器的磁盤(pán)IO,如果IO util超過(guò)80%,考慮換SSD或增加存儲(chǔ)節(jié)點(diǎn)

檢查vminsert到vmstorage的網(wǎng)絡(luò)延遲,超過(guò)5ms就需要排查網(wǎng)絡(luò)問(wèn)題

用write_relabel_configs過(guò)濾掉不需要的指標(biāo),減少寫(xiě)入量

問(wèn)題二:查詢慢,Grafana Dashboard加載超時(shí)

# 查看vmselect的查詢延遲分布
curl -s http://10.0.1.22:8481/metrics | grep vm_request_duration_seconds

# 查看慢查詢?nèi)罩荆ㄐ枰獑?dòng)時(shí)加參數(shù))
# -search.logSlowQueryDuration=5s 記錄超過(guò)5秒的查詢
sudo journalctl -u vmselect | grep"slow query"

# 查看當(dāng)前正在執(zhí)行的查詢
curl -s http://10.0.1.22:8481/api/v1/status/active_queries | python3 -m json.tool

解決方案

優(yōu)化PromQL查詢,避免{__name__=~".+"}這種全量匹配

縮小查詢時(shí)間范圍,30天的數(shù)據(jù)用step=5m而不是默認(rèn)的15s

增加vmselect實(shí)例數(shù),用Nginx做負(fù)載均衡

檢查是否有高基數(shù)標(biāo)簽(比如把request_id作為標(biāo)簽),用/api/v1/status/tsdb查看top標(biāo)簽

問(wèn)題三:磁盤(pán)空間不足,VM拒絕寫(xiě)入

# 查看磁盤(pán)使用
df -h /data/victoriametrics/

# 查看各月份數(shù)據(jù)目錄大小
du -sh /data/victoriametrics/data/big/*/
du -sh /data/victoriametrics/data/small/*/

# 檢查是否有未清理的快照
ls -la /data/victoriametrics/snapshots/

# 強(qiáng)制清理過(guò)期數(shù)據(jù)(謹(jǐn)慎操作)
curl -s http://localhost:8428/internal/force_merge?partition_prefix=2024_01

解決方案

清理過(guò)期快照:curl http://localhost:8428/snapshot/delete_all

縮短保留時(shí)間(臨時(shí)措施):改-retentionPeriod后重啟

擴(kuò)容磁盤(pán)或增加存儲(chǔ)節(jié)點(diǎn)

檢查是否有異常的高基數(shù)指標(biāo)占用大量空間

問(wèn)題四:集群節(jié)點(diǎn)故障恢復(fù)

# 檢查集群狀態(tài)
# vminsert會(huì)自動(dòng)跳過(guò)不可用的vmstorage節(jié)點(diǎn)
curl -s http://10.0.1.21:8480/metrics | grep vm_rpc_connection

# 查看哪些存儲(chǔ)節(jié)點(diǎn)不可用
curl -s http://10.0.1.21:8480/metrics | grep"vm_rpc_dial_errors_total"

# 節(jié)點(diǎn)恢復(fù)后,檢查數(shù)據(jù)完整性
# 如果replicationFactor=2,單節(jié)點(diǎn)故障不丟數(shù)據(jù)
# 節(jié)點(diǎn)恢復(fù)后自動(dòng)重新加入集群,不需要手動(dòng)操作

5.1.3 調(diào)試模式

# 開(kāi)啟詳細(xì)日志
# 在systemd服務(wù)文件中修改啟動(dòng)參數(shù)
-loggerLevel=INFO # 改為 -loggerLevel=DEBUG(排查完記得改回來(lái))

# 開(kāi)啟慢查詢?nèi)罩?-search.logSlowQueryDuration=5s

# 開(kāi)啟HTTP請(qǐng)求日志(會(huì)產(chǎn)生大量日志,只在排查時(shí)開(kāi)啟)
-httpLogRequests

# 查看內(nèi)部狀態(tài)
curl -s http://localhost:8428/api/v1/status/tsdb | python3 -m json.tool
curl -s http://localhost:8428/api/v1/status/active_queries | python3 -m json.tool

# 查看內(nèi)存使用詳情
curl -s http://localhost:8428/metrics | grep process_resident_memory_bytes
curl -s http://localhost:8428/metrics | grep go_memstats_alloc_bytes

5.2 性能監(jiān)控

5.2.1 關(guān)鍵指標(biāo)監(jiān)控

# 寫(xiě)入速率(每秒插入的行數(shù))
curl -s http://localhost:8428/metrics | grep vm_rows_inserted_total

# 查詢速率
curl -s http://localhost:8428/metrics | grep vm_http_requests_total

# 活躍時(shí)間序列數(shù)
curl -s http://localhost:8428/metrics | grep vm_cache_entries.*metricName

# 磁盤(pán)使用
curl -s http://localhost:8428/metrics | grep vm_data_size_bytes

# 合并操作狀態(tài)
curl -s http://localhost:8428/metrics | grep vm_merges

5.2.2 監(jiān)控指標(biāo)說(shuō)明

指標(biāo)名稱 正常范圍 告警閾值 說(shuō)明
vm_rows_inserted_total rate 根據(jù)采集量而定 突降50%以上 寫(xiě)入速率突降說(shuō)明數(shù)據(jù)源異常
vm_slow_queries_total 0-5/min >10/min 慢查詢過(guò)多說(shuō)明需要優(yōu)化查詢或擴(kuò)容
process_resident_memory_bytes >80%系統(tǒng)內(nèi)存 內(nèi)存使用過(guò)高有OOM風(fēng)險(xiǎn)
vm_free_disk_space_bytes >20%總?cè)萘?/td> <10%總?cè)萘?/td> 磁盤(pán)空間不足會(huì)導(dǎo)致拒絕寫(xiě)入
vm_merge_need_free_disk_space 0 >0 合并操作因磁盤(pán)不足被阻塞
vm_http_request_duration_seconds p99 <1s >5s 查詢延遲過(guò)高影響用戶體驗(yàn)

5.2.3 Prometheus監(jiān)控規(guī)則

# 文件路徑:/etc/prometheus/rules/victoriametrics.yml
groups:
-name:victoriametrics_alerts
 interval:30s
 rules:
  # 寫(xiě)入速率突降
  -alert:VMWriteRateDrop
   expr:|
     rate(vm_rows_inserted_total[5m]) < 0.5 * rate(vm_rows_inserted_total[5m] offset 1h)
? ? ? ??for:10m
? ? ? ??labels:
? ? ? ? ??severity:warning
? ? ? ??annotations:
? ? ? ? ??summary:"VictoriaMetrics寫(xiě)入速率下降超過(guò)50%"
? ? ? ? ??description:"當(dāng)前寫(xiě)入速率:?{{ $value | humanize }}/s"

? ? ??# 磁盤(pán)空間不足
? ? ??-alert:VMDiskSpaceLow
? ? ? ??expr:|
? ? ? ? ? vm_free_disk_space_bytes / vm_available_disk_space_bytes < 0.15
? ? ? ??for:5m
? ? ? ??labels:
? ? ? ? ??severity:critical
? ? ? ??annotations:
? ? ? ? ??summary:"VictoriaMetrics磁盤(pán)剩余空間不足15%"
? ? ? ? ??description:"剩余空間:?{{ $value | humanize1024 }}B"

? ? ??# 查詢延遲過(guò)高
? ? ??-alert:VMSlowQueries
? ? ? ??expr:|
? ? ? ? ? histogram_quantile(0.99, rate(vm_request_duration_seconds_bucket[5m])) > 5
   for:10m
   labels:
    severity:warning
   annotations:
    summary:"VictoriaMetrics P99查詢延遲超過(guò)5秒"

  # 內(nèi)存使用過(guò)高
  -alert:VMHighMemoryUsage
   expr:|
     process_resident_memory_bytes{job="victoriametrics"} / node_memory_MemTotal_bytes > 0.8
   for:5m
   labels:
    severity:critical
   annotations:
    summary:"VictoriaMetrics內(nèi)存使用超過(guò)80%"

  # vmstorage節(jié)點(diǎn)不可用(集群版)
  -alert:VMStorageNodeDown
   expr:|
     up{job="vmstorage"} == 0
   for:2m
   labels:
    severity:critical
   annotations:
    summary:"vmstorage節(jié)點(diǎn){{ $labels.instance }}不可用"

  # 合并操作積壓
  -alert:VMMergeQueueFull
   expr:|
     vm_assisted_merges_total > 0
   for:15m
   labels:
    severity:warning
   annotations:
    summary:"VictoriaMetrics合并操作積壓,可能影響查詢性能"

5.3 備份與恢復(fù)

5.3.1 備份策略

#!/bin/bash
# 文件名:vm_backup.sh
# VictoriaMetrics備份腳本
# 利用VM的快照功能做一致性備份

set-euo pipefail

VM_URL="http://localhost:8428"
BACKUP_DIR="/backup/victoriametrics"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_PATH="${BACKUP_DIR}/${DATE}"
RETENTION_DAYS=7
LOG_FILE="/var/log/victoriametrics/backup_${DATE}.log"

log() {
 echo"[$(date '+%Y-%m-%d %H:%M:%S')]$1"| tee -a"$LOG_FILE"
}

log"開(kāi)始VictoriaMetrics備份"

# 1. 創(chuàng)建快照
SNAPSHOT_RESPONSE=$(curl -s"${VM_URL}/snapshot/create")
SNAPSHOT_NAME=$(echo"$SNAPSHOT_RESPONSE"| python3 -c"import sys,json; print(json.load(sys.stdin)['snapshot'])")
log"創(chuàng)建快照:$SNAPSHOT_NAME"

SNAPSHOT_PATH="/data/victoriametrics/snapshots/${SNAPSHOT_NAME}"

# 2. 用rsync備份快照目錄
mkdir -p"$BACKUP_PATH"
rsync -a --progress"$SNAPSHOT_PATH/""$BACKUP_PATH/"2>&1 | tee -a"$LOG_FILE"
log"備份完成:$BACKUP_PATH"

# 3. 刪除快照(釋放空間)
curl -s"${VM_URL}/snapshot/delete?snapshot=${SNAPSHOT_NAME}"| tee -a"$LOG_FILE"
log"快照已刪除:$SNAPSHOT_NAME"

# 4. 清理過(guò)期備份
find"$BACKUP_DIR"-maxdepth 1 -typed -mtime +${RETENTION_DAYS}-execrm -rf {} ;
log"已清理${RETENTION_DAYS}天前的備份"

# 5. 記錄備份大小
BACKUP_SIZE=$(du -sh"$BACKUP_PATH"| awk'{print $1}')
log"備份大小:$BACKUP_SIZE"

5.3.2 恢復(fù)流程

# 1. 停止VictoriaMetrics服務(wù)
sudo systemctl stop victoriametrics

# 2. 備份當(dāng)前數(shù)據(jù)目錄(以防恢復(fù)出問(wèn)題)
sudo mv /data/victoriametrics /data/victoriametrics.bak.$(date +%Y%m%d)

# 3. 恢復(fù)備份數(shù)據(jù)
sudo mkdir -p /data/victoriametrics
sudo rsync -a /backup/victoriametrics/20250115_020000/ /data/victoriametrics/

# 4. 修復(fù)權(quán)限
sudo chown -R victoriametrics:victoriametrics /data/victoriametrics

# 5. 啟動(dòng)服務(wù)
sudo systemctl start victoriametrics

# 6. 驗(yàn)證數(shù)據(jù)完整性
sleep 10
curl -s'http://localhost:8428/api/v1/query?query=count({__name__=~".+"})'| python3 -m json.tool
# 對(duì)比恢復(fù)前后的時(shí)間序列總數(shù)

# 7. 確認(rèn)恢復(fù)成功后刪除舊數(shù)據(jù)備份
# sudo rm -rf /data/victoriametrics.bak.*

六、總結(jié)

6.1 技術(shù)要點(diǎn)回顧

單機(jī)版一個(gè)二進(jìn)制搞定:中小規(guī)模(500萬(wàn)活躍序列以內(nèi))用單機(jī)版就夠了,部署簡(jiǎn)單,運(yùn)維成本低。別一上來(lái)就搞集群,單機(jī)版的性能已經(jīng)超過(guò)大多數(shù)場(chǎng)景的需求。

集群版三組件架構(gòu):vminsert/vmselect/vmstorage各司其職,vminsert和vmselect無(wú)狀態(tài)可以隨意擴(kuò)縮,vmstorage有狀態(tài)需要謹(jǐn)慎操作。擴(kuò)容vmstorage時(shí)只在storageNode列表末尾追加,不要改變已有節(jié)點(diǎn)順序。

去重機(jī)制是HA的基礎(chǔ):-dedup.minScrapeInterval必須等于或大于Prometheus的采集間隔,vminsert和vmselect兩端都要配。雙Prometheus HA + VM去重的方案經(jīng)過(guò)生產(chǎn)驗(yàn)證,穩(wěn)定可靠。

內(nèi)存限制必須設(shè):-memory.allowedPercent=60是生產(chǎn)環(huán)境必配參數(shù),不設(shè)的話VM會(huì)吃滿內(nèi)存被OOM Killer干掉。這個(gè)坑我們踩過(guò)兩次。

壓縮率決定存儲(chǔ)成本:實(shí)測(cè)壓縮比在10:1到15:1之間,同樣的數(shù)據(jù)量,VM的磁盤(pán)占用只有Prometheus的1/7到1/10。做容量規(guī)劃時(shí)按每樣本1字節(jié)估算比較安全。

remote_write調(diào)優(yōu)不能忽略:Prometheus端的queue_config參數(shù)直接影響寫(xiě)入性能,max_shards和max_samples_per_send要根據(jù)實(shí)際采集量調(diào)整,默認(rèn)值在大規(guī)模場(chǎng)景下不夠用。

6.2 進(jìn)階學(xué)習(xí)方向

VMAlert + 告警管理:用VMAlert替代Prometheus的告警評(píng)估,支持從VictoriaMetrics直接查詢數(shù)據(jù)做告警判斷,減少對(duì)Prometheus的依賴。VMAlert支持recording rules和alerting rules,語(yǔ)法和Prometheus完全兼容。

學(xué)習(xí)資源:https://docs.victoriametrics.com/vmalert/

實(shí)踐建議:先把現(xiàn)有的Prometheus告警規(guī)則遷移到VMAlert,驗(yàn)證告警結(jié)果一致后再下線Prometheus的告警功能

VictoriaMetrics Operator(K8s部署):如果你的基礎(chǔ)設(shè)施跑在Kubernetes上,用VM Operator可以通過(guò)CRD聲明式管理VM集群,自動(dòng)處理擴(kuò)縮容、滾動(dòng)更新、備份等操作。

學(xué)習(xí)資源:https://docs.victoriametrics.com/operator/

實(shí)踐建議:先在測(cè)試集群部署VMCluster CRD,熟悉各參數(shù)后再遷移生產(chǎn)環(huán)境

VictoriaLogs(日志存儲(chǔ)):VictoriaMetrics團(tuán)隊(duì)推出的日志存儲(chǔ)方案,和VictoriaMetrics指標(biāo)存儲(chǔ)配合使用,可以在Grafana中實(shí)現(xiàn)指標(biāo)和日志的關(guān)聯(lián)查詢。目前還在快速迭代中,適合技術(shù)預(yù)研。

學(xué)習(xí)資源:https://docs.victoriametrics.com/victorialogs/

6.3 參考資料

VictoriaMetrics官方文檔- 最權(quán)威的參考,更新及時(shí)

VictoriaMetrics GitHub- 源碼和Issue討論

Prometheus remote_write配置- remote_write協(xié)議和參數(shù)說(shuō)明

VictoriaMetrics vs Thanos性能對(duì)比- 官方的Benchmark數(shù)據(jù)

附錄

A. 命令速查表

# 單機(jī)版啟停
sudo systemctl start victoriametrics
sudo systemctl stop victoriametrics
sudo systemctl restart victoriametrics
sudo systemctl status victoriametrics

# 集群版啟停(按順序)
sudo systemctl start vmstorage && sudo systemctl start vminsert && sudo systemctl start vmselect
sudo systemctl stop vmselect && sudo systemctl stop vminsert && sudo systemctl stop vmstorage

# 健康檢查
curl -s http://localhost:8428/health          # 單機(jī)版
curl -s http://localhost:8480/health          # vminsert
curl -s http://localhost:8481/health          # vmselect
curl -s http://localhost:8482/health          # vmstorage

# 查看TSDB狀態(tài)
curl -s http://localhost:8428/api/v1/status/tsdb | python3 -m json.tool

# 查看活躍查詢
curl -s http://localhost:8428/api/v1/status/active_queries | python3 -m json.tool

# 創(chuàng)建快照(備份用)
curl -s http://localhost:8428/snapshot/create

# 刪除所有快照
curl -s http://localhost:8428/snapshot/delete_all

# 強(qiáng)制合并(減少磁盤(pán)碎片)
curl -s http://localhost:8428/internal/force_merge

# 手動(dòng)寫(xiě)入測(cè)試數(shù)據(jù)
curl -d'test{job="test"} 123'http://localhost:8428/api/v1/import/prometheus

# 查詢測(cè)試
curl -s'http://localhost:8428/api/v1/query?query=up'| python3 -m json.tool

# 查看標(biāo)簽值
curl -s'http://localhost:8428/api/v1/label/__name__/values'| python3 -m json.tool

# 刪除時(shí)間序列(需要配置deleteAuthKey)
curl -d'match[]={job="test"}'http://localhost:8428/api/v1/admin/tsdb/delete_series

B. 配置參數(shù)詳解

參數(shù) 默認(rèn)值 建議值 說(shuō)明
-retentionPeriod 1(月) 按需設(shè)置 數(shù)據(jù)保留時(shí)間,支持月(數(shù)字)和天(如180d)
-memory.allowedPercent 不限制 60 內(nèi)存使用上限百分比,生產(chǎn)必設(shè)
-dedup.minScrapeInterval 0(不去重) 等于scrape_interval HA場(chǎng)景必設(shè)
-search.maxUniqueTimeseries 300000 5000000-10000000 單次查詢最大時(shí)間序列數(shù)
-search.maxQueryDuration 30s 60s-120s 單次查詢最大執(zhí)行時(shí)間
-search.maxConcurrentRequests 16 32-64 最大并發(fā)查詢數(shù)
-maxLabelsPerTimeseries 30 40 每個(gè)時(shí)間序列最大標(biāo)簽數(shù)
-replicationFactor 1 2 集群版數(shù)據(jù)副本數(shù)
-bigMergeConcurrency CPU/2 2 大合并并發(fā)數(shù),降低IO壓力
-smallMergeConcurrency CPU/2 4 小合并并發(fā)數(shù)
-search.logSlowQueryDuration 5s 5s 慢查詢?nèi)罩鹃撝?/td>
-remoteWrite.maxDiskUsagePerURL 不限制 1GB vmagent本地緩存上限

C. 術(shù)語(yǔ)表

術(shù)語(yǔ) 英文 解釋
時(shí)間序列 Time Series 由指標(biāo)名和標(biāo)簽集唯一標(biāo)識(shí)的一組按時(shí)間排列的數(shù)據(jù)點(diǎn)
活躍序列 Active Time Series 最近一個(gè)采集周期內(nèi)有新數(shù)據(jù)寫(xiě)入的時(shí)間序列
遠(yuǎn)程寫(xiě)入 Remote Write Prometheus將采集的數(shù)據(jù)通過(guò)HTTP協(xié)議發(fā)送到遠(yuǎn)端存儲(chǔ)的機(jī)制
去重 Deduplication 多個(gè)數(shù)據(jù)源寫(xiě)入相同時(shí)間序列時(shí),只保留一份數(shù)據(jù)的機(jī)制
降采樣 Downsampling 高精度數(shù)據(jù)聚合為低精度數(shù)據(jù)以節(jié)省存儲(chǔ)空間
高基數(shù) High Cardinality 某個(gè)標(biāo)簽的取值種類(lèi)非常多(如用戶ID),導(dǎo)致時(shí)間序列數(shù)爆炸
合并 Merge/Compaction 將多個(gè)小數(shù)據(jù)塊合并為大數(shù)據(jù)塊,提高查詢效率和壓縮率
租戶 Tenant 集群版中用于隔離不同業(yè)務(wù)數(shù)據(jù)的邏輯單元,通過(guò)URL路徑中的數(shù)字ID區(qū)分
快照 Snapshot 數(shù)據(jù)目錄的只讀副本,用于一致性備份
MetricsQL MetricsQL VictoriaMetrics擴(kuò)展的查詢語(yǔ)言,兼容PromQL并增加了額外函數(shù)

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 集群
    +關(guān)注

    關(guān)注

    0

    文章

    150

    瀏覽量

    17684
  • 數(shù)據(jù)庫(kù)
    +關(guān)注

    關(guān)注

    7

    文章

    4077

    瀏覽量

    68504
  • Prometheus
    +關(guān)注

    關(guān)注

    0

    文章

    36

    瀏覽量

    2072

原文標(biāo)題:VictoriaMetrics高性能時(shí)序數(shù)據(jù)庫(kù):Prometheus遠(yuǎn)程存儲(chǔ)方案

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Prometheus的架構(gòu)原理從“監(jiān)控”談起

    Prometheus是繼Kubernetes(k8s)之后,CNCF畢業(yè)的第二個(gè)開(kāi)源項(xiàng)目,其來(lái)源于Google的Borgmon。本文從監(jiān)控這件事說(shuō)起,深入淺出Prometheus的架構(gòu)原理、目標(biāo)發(fā)現(xiàn)
    的頭像 發(fā)表于 10-10 15:47 ?5406次閱讀
    <b class='flag-5'>Prometheus</b>的架構(gòu)原理從“監(jiān)控”談起

    Prometheus的基本原理與開(kāi)發(fā)指南

    PromQL高級(jí)實(shí)戰(zhàn) 告警引擎深度解析 本地存儲(chǔ)遠(yuǎn)程存儲(chǔ) 梯度運(yùn)維管理平臺(tái)監(jiān)控模塊架構(gòu) 01監(jiān)控系統(tǒng)概述 導(dǎo)讀:本章從監(jiān)控的作用、架構(gòu)分類(lèi)、指標(biāo)監(jiān)控發(fā)展史、指標(biāo)監(jiān)控典型架構(gòu)等4個(gè)方面介紹監(jiān)控系統(tǒng)的相關(guān)概念。 1.1.監(jiān)控的作
    的頭像 發(fā)表于 11-09 10:45 ?2332次閱讀
    <b class='flag-5'>Prometheus</b>的基本原理與開(kāi)發(fā)指南

    prometheus做監(jiān)控服務(wù)的整個(gè)流程介紹

    ;然后介紹如何收集監(jiān)控?cái)?shù)據(jù),如何展示監(jiān)控?cái)?shù)據(jù),如何觸發(fā)告警;最后展示一個(gè)業(yè)務(wù)系統(tǒng)監(jiān)控的demo。監(jiān)控架構(gòu)Prometheus的整個(gè)架構(gòu)流程可以參考如下圖片:整個(gè)流程大致分為收集數(shù)據(jù),存儲(chǔ)數(shù)據(jù),展示監(jiān)控
    發(fā)表于 12-23 17:34

    看西部數(shù)據(jù)企業(yè)級(jí)存儲(chǔ)解決方案如何助力遠(yuǎn)程辦公

    疫情催生了遠(yuǎn)程辦公的浪潮,然后隨著新常態(tài)的來(lái)臨,這些對(duì)于企業(yè)級(jí)硬盤(pán)又有哪些新要求?業(yè)界主流的存儲(chǔ)解決方案有哪些代表品牌和產(chǎn)品?
    發(fā)表于 07-01 18:54 ?1941次閱讀

    django-prometheus數(shù)據(jù)監(jiān)控

    django-prometheus.zip
    發(fā)表于 04-26 11:07 ?1次下載
    django-<b class='flag-5'>prometheus</b>數(shù)據(jù)監(jiān)控

    Prometheus服務(wù)監(jiān)控系統(tǒng)

    prometheus.zip
    發(fā)表于 04-26 10:23 ?3次下載
    <b class='flag-5'>Prometheus</b>服務(wù)監(jiān)控系統(tǒng)

    使用Thanos+Prometheus+Grafana構(gòu)建監(jiān)控系統(tǒng)

    對(duì)于彈性伸縮和高可用的系統(tǒng)來(lái)說(shuō),一般有大量的指標(biāo)數(shù)據(jù)需要收集和存儲(chǔ),如何為這樣的系統(tǒng)打造一個(gè)監(jiān)控方案呢?本文介紹了如何使用 Thanos+Prometheus+Grafana 構(gòu)建監(jiān)控系統(tǒng)。
    的頭像 發(fā)表于 05-05 21:14 ?3652次閱讀

    prometheus-book Prometheus操作指南

    ./oschina_soft/prometheus-book.zip
    發(fā)表于 05-16 09:11 ?5次下載
    <b class='flag-5'>prometheus</b>-book <b class='flag-5'>Prometheus</b>操作指南

    監(jiān)控神器:Prometheus

    Prometheus發(fā)展速度很快,12年開(kāi)發(fā)完成,16年加入CNCF,成為繼K8s 之后第二個(gè)CNCF托管的項(xiàng)目,目前Github 42k的,而且社區(qū)很活躍,維護(hù)頻率很高,基本穩(wěn)定在1個(gè)月1個(gè)小版本的迭代速度。
    的頭像 發(fā)表于 07-31 11:55 ?1958次閱讀

    prometheus下載安裝教程

    Prometheus 是一個(gè)開(kāi)放性的監(jiān)控解決方案,用戶可以非常方便的安裝和使用 Prometheus 并且能夠非常方便的對(duì)其進(jìn)行擴(kuò)展。 在Prometheus的架構(gòu)設(shè)計(jì)中,
    的頭像 發(fā)表于 01-13 16:07 ?9978次閱讀
    <b class='flag-5'>prometheus</b>下載安裝教程

    Prometheus存儲(chǔ)引擎簡(jiǎn)析

    Prometheus 作為云原生時(shí)代的時(shí)序數(shù)據(jù)庫(kù), 是當(dāng)下最流行的監(jiān)控平臺(tái)之一,盡管其整體架構(gòu)一直沒(méi)怎么變,但其底層的存儲(chǔ)引擎卻演進(jìn)了幾個(gè)版本。
    的頭像 發(fā)表于 03-28 17:57 ?1507次閱讀

    基于Prometheus開(kāi)源的完整監(jiān)控解決方案

    每一個(gè)被 Prometheus 監(jiān)控的服務(wù)都是一個(gè) Job,Prometheus 為這些 Job 提供了官方的 SDK ,利用這個(gè) SDK 可以自定義并導(dǎo)出自己的業(yè)務(wù)指標(biāo),也可以
    發(fā)表于 10-18 09:15 ?1386次閱讀
    基于<b class='flag-5'>Prometheus</b>開(kāi)源的完整監(jiān)控解決<b class='flag-5'>方案</b>

    從零入門(mén)Prometheus:構(gòu)建企業(yè)級(jí)監(jiān)控與報(bào)警系統(tǒng)的最佳實(shí)踐指南

    測(cè)試環(huán)境 prometheus-2.26.0.linux-amd64.tar.gz下載地址:https://github.com/prometheus/prometheus/releases
    的頭像 發(fā)表于 02-10 11:28 ?1383次閱讀
    從零入門(mén)<b class='flag-5'>Prometheus</b>:構(gòu)建企業(yè)級(jí)監(jiān)控與報(bào)警系統(tǒng)的最佳實(shí)踐指南

    詳解Prometheus的數(shù)據(jù)類(lèi)型

    對(duì)于 Prometheus 生態(tài)的監(jiān)控系統(tǒng),PromQL 是必備技能,本文著重點(diǎn)講解這個(gè)查詢語(yǔ)言,摻雜一些生產(chǎn)實(shí)踐場(chǎng)景,希望對(duì)你有所幫助。
    的頭像 發(fā)表于 05-13 09:50 ?1567次閱讀
    詳解<b class='flag-5'>Prometheus</b>的數(shù)據(jù)類(lèi)型

    Zabbix與Prometheus運(yùn)維監(jiān)控系統(tǒng)的對(duì)比

    在當(dāng)今云原生和微服務(wù)架構(gòu)盛行的時(shí)代,監(jiān)控系統(tǒng)已成為運(yùn)維工程師不可或缺的核心工具。面對(duì)市場(chǎng)上眾多監(jiān)控解決方案,Zabbix和Prometheus作為兩大主流選擇,各自擁有獨(dú)特的優(yōu)勢(shì)和適用場(chǎng)景。本文將從架構(gòu)設(shè)計(jì)、性能表現(xiàn)、功能特性、運(yùn)維成本等多個(gè)維度進(jìn)行深入對(duì)比,為你的監(jiān)控系
    的頭像 發(fā)表于 09-18 14:57 ?787次閱讀
    柯坪县| 且末县| 岳普湖县| 江源县| 斗六市| 思南县| 登封市| 鹤岗市| 文化| 四川省| 扎赉特旗| 简阳市| 交城县| 仙桃市| 车致| 从化市| 麻阳| 汉川市| 综艺| 都昌县| 绿春县| 正镶白旗| 电白县| 科技| 永修县| 治县。| 靖边县| 万荣县| 湖州市| 镇平县| 惠东县| 潞西市| 卓尼县| 博野县| 望奎县| 丽水市| 大余县| 高青县| 万载县| 五莲县| 封丘县|