以前有簡單說明過vmagent,實際上vmagent可以替代我們做好多事情.以下是一個說明
vmagent的作用
主要目的是實現metrics 的收集然后存儲到VictoriaMetrics以及prometheus兼容的存儲系統(主要支持remote_write 協議即可,有好多實現)
同時一個好處是實現了metrics 的push,而不是prometheus 的pull(比如無法pull 的場景)
參考架構圖

特性
- 替換prometheus 的scraping target(比如node export)
- 基於prometheus relabeling 的模式添加,移除,修改labels ,可以方便在數據發送到遠端存儲之前進行數據的過濾
- 支持多種數據協議,influx line 協議,grapgite 文本協議,opentsdb 協議,prometheus remote write 協議,json lines協議,csv 數據
- 支持收集數據的同時,並復制到多種遠端存儲系統
- 支持不可靠遠端存儲(通過本地存儲 -remoteWrite.tmpDataPath ),同時支持最大磁盤占用
- 相比prometheus使用較少的內存,cpu,磁盤io,以及網絡帶寬
啟動模式
- 參考命令
/path/to/vmagent -promscrape.config=/path/to/prometheus.yml -remoteWrite.url=https://victoria-metrics-host:8428/api/v1/write
使用場景
- iot 以及邊緣監控
- 替換prometheus
- 數據復制以及高可用
- 標簽重命名以及過濾
- 多種存儲系統系統數據流的切分(比如到kafka,timescaledb,cratedb,es。。。)
- prometheus remote_write 的proxy (promxy 也是一個可選方案)
收集 prometheus 格式數據
- 配置說明
類似prometheus,主要使用了global以及scrape_configs,注意remote_write 會被忽略,應該使用-remoteWrite.*替換 - scrape_config 支持的配置
- static_configs - 靜態配置
- file_sd_configs - 基於文件的服務發現
- kubernetes_sd_configs - k8s 服務發現
- ec2_sd_configs - ec2 服務發現
- gce_sd_configs - gce_sd 服務發現
- dns_sd_configs - consul 服務發現
添加label 到metrics
支持的模式為
- promscrape.config 文件中的 global -> external_labels 配置節點
- 通過remoteWrite.label 命令行參數,當然為添加到所有的metrics到 remoteWrite.url 支持的存儲
標簽重命名
- 支持的操作
replace_all:替換的所有OCCURENCES regex中的值source_labels與replacement和結果存儲在target_label。
labelmap_all:將所有regex標簽名稱中所有出現的內容替換
- 支持的配置位置
在文件promscrape.config scrape_config -> relabel_configs部分。此重新標記將應用於目標標簽。
在文件promscrape.config scrape_config -> metric_relabel_configs部分。此重新標記將應用於給定中的所有已抓取指標scrape_config。
在-remoteWrite.relabelConfig文件。在將所有收集到的度量標准發送到遠程存儲之前,會將其重新貼標簽。
在-remoteWrite.urlRelabelConfig文件。將此重新標記應用於發送到相應的-remoteWrite.url
監控
vmagent 暴露了一些metrics 以及 http://vmagent-host:8429/targets 方便查看target
常見問題
- 推薦增加ulimit 限制
- 當住區大量不可達target的時候會有錯誤提示,可以通過
-promscrape.suppressScrapeErrors命令行參數禁止 - 推薦增加
-remoteWrite.queues對於如果有超過10萬的采樣,我們可以通過暴露的vmagent_remotewrite_pending_data_bytesmetrics查看 - vmagent 支持數據的本地cache,好多時候對於大量數據可能會有磁盤空間的問題,我們可以通過
-remoteWrite.maxDiskUsagePerURL參數調整
說明
以上內容來自官方文檔,通過文檔我們可以了解vmagent的場景,同時也可以學習到很多不錯的設計理念,可以看看源碼
參考資料
https://github.com/VictoriaMetrics/VictoriaMetrics/tree/master/app/vmagent
