以前有简单说明过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_bytes
metrics查看 - vmagent 支持数据的本地cache,好多时候对于大量数据可能会有磁盘空间的问题,我们可以通过
-remoteWrite.maxDiskUsagePerURL
参数调整
说明
以上内容来自官方文档,通过文档我们可以了解vmagent的场景,同时也可以学习到很多不错的设计理念,可以看看源码
参考资料
https://github.com/VictoriaMetrics/VictoriaMetrics/tree/master/app/vmagent