目前1.68.0版本的vmagent还处持续改进中,从文档中得出,其有内存占用小优势,支持多种开源组件的上游和下游。对于kafka的集成只在企业版的vmagent提供支持。
如果只是简单收集信息,建议当前使用telegraf直写vm。
使用建议:持续观察,谨慎落地。
翻译
下面为英文文档的翻译
vmagent 是一个小巧但功能强大的代理,可帮助您从各种来源收集指标并将它们存储在 VictoriaMetrics 或任何其他支持 remote_write 协议的 Prometheus 兼容存储系统中。
开发vmagent的起因
虽然 VictoriaMetrics 提供了一种有效的解决方案来存储和观察指标,但我们的用户需要一些快速且 RAM 友好的东西来将指标从 Prometheus 兼容的导出器抓取到 VictoriaMetrics。 此外,我们发现我们用户的基础设施就像雪花,没有两个是相同的。 因此,我们决定为 vmagent 添加更多灵活性,例如推送而不是拉取指标的能力。 我们已尽力并将继续改进 vmagent。
特性
列出了可能会使用的特性:
可用作 Prometheus 的替代品,用于抓取 node_exporter 等目标。
可以从Kafka读取数据。(企业版支持)
可以向Kafka写入数据。 (企业版支持)
可以通过 Prometheus 重新标记添加、删除和修改标签。 可以在将数据发送到远程存储之前过滤数据。通过 VictoriaMetrics 支持的所有摄取协议接受数据:
InfluxDB line protocol通过 http://<vmagent>:8429/write。
Prometheus 远程写入协议通过 http://<vmagent>:8429/api/v1/write。
JSON 行通过 http://<vmagent>:8429/api/v1/import 导入协议。
本机数据导入协议通过http://<vmagent>:8429/api/v1/import/native。
Prometheus 展示格式通过 http://<vmagent>:8429/api/v1/import/prometheus。
通过 http://<vmagent>:8429/api/v1/import/csv 获取任意 CSV 数据。
可以将收集的指标同时复制到多个远程存储系统。
在与远程存储连接不稳定的环境中顺利工作。如果远程存储不可用,则收集的指标缓存在 -remoteWrite.tmpDataPath。一旦与远程存储的连接修复,缓冲的指标就会发送到远程存储。可以使用 -remoteWrite.maxDiskUsagePerURL 限制缓冲区的最大磁盘使用量。
与 Prometheus 相比,使用更少的 RAM、CPU、磁盘 IO 和网络带宽。
当必须抓取大量目标时,抓取目标可以分布在多个 vmagent 实例中。请参阅这些文档。可以有效地抓取暴露数百万个时间序列的目标,例如 Prometheus 中的 /federate 端点。
可以通过在抓取时和将它们发送到远程存储系统之前限制唯一时间序列的数量来处理高基数和高流失率问题。
可以从多个文件加载抓取配置。
特性截图:
实践
启动vmagent(与prometheus.yml结合)
/path/to/vmagent -promscrape.config=/path/to/prometheus.yml -remoteWrite.url=https://victoria-metrics-host:8428/api/v1/write
todo...
启动vmagent(专门收集InfluxDB信息)
Mac OS系统,Docker容器方式,收集InfluxDB数据信息
docker pull victoriametrics/vmagent
docker run --name vmagent -p 8429:8429 -d victoriametrics/vmagent -remoteWrite.url=http://docker.for.mac.host.internal:8428/api/v1/write
使用docker.for.mac.host.internal域名,保证docker从容器内部访问宿主机
curl写vmagent
通过curl写入数据到vmagent,然后vmagent转发到vm中
curl -d 'strawberry,tag1=value1,tag2=value2 field1=123,field2=1.23' -X POST 'http://localhost:8429/write'
查看数据:
curl -G 'http://localhost:8428/api/v1/export' -d 'match={__name__=~"strawberry.*"}'
数据结果:
{"metric":{"__name__":"strawberry_field2","tag1":"value1","tag2":"value2"},"values":[1.23],"timestamps":[1635493351441]}
{"metric":{"__name__":"strawberry_field1","tag1":"value1","tag2":"value2"},"values":[123],"timestamps":[1635493351441]}
telegraf写vmagent
启动influxdb的telegraf,将数据写入vmagent,vmagent在remote write到vm
编写telegraf配置脚本,telegraf2vmagent.conf
[agent]
interval = "500ms"
flush_interval = "500ms"
[[inputs.cpu]]
percpu = false
totalcpu = true
[[outputs.influxdb]]
urls = ["http://localhost:8429"]
输入为本机Mac的cpu信息,输出为vmagent地址
启动telegraf
telegraf -config telegraf2vmagent.conf
Linux中,直接下载vmutils-amd64-v1.68.0.tar.gz,其中包含了vmagent-prod。
nohup ./vmagent-prod -remoteWrite.url=http://127.0.0.1:8428/api/v1/write >va.log 2>&1 &
常用命令
查看vmagent的help命令
docker run victoriametrics/vmagent -help
进入vmagent容器中
docker exec -it vmagent bin/sh