vmagent入门(一)

目前1.68.0版本的vmagent还处持续改进中,从文档中得出,其有内存占用小优势,支持多种开源组件的上游和下游。对于kafka的集成只在企业版的vmagent提供支持。

如果只是简单收集信息,建议当前使用telegraf直写vm。

使用建议:持续观察,谨慎落地。

翻译

下面为英文文档的翻译

    vmagent 是一个小巧但功能强大的代理,可帮助您从各种来源收集指标并将它们存储在 VictoriaMetrics 或任何其他支持 remote_write 协议的 Prometheus 兼容存储系统中。 

文档引用:vmagent · VictoriaMetrics

开发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

这个错误提示通常在Java虚拟机(JVM)启动期间遇到,特别是涉及到JVM代理(Agent)加载时。"Error occurred during initialization of VM" 表示在虚拟机初始化阶段出现了问题,而 "agent library failed Agent_OnLoad:instrument" 更详细地指出是与Agent的加载和初始化函数"Agent_OnLoad:instrument"相关的失败。 "instrument"通常是字节码增强的一种手段,比如AspectJ或Java热部署工具(JDK的jmxmp或JProfiler等)会在程序运行前对字节码进行修改以添加额外的功能。如果这个函数在尝试装载和初始化过程中出错,可能是由于以下几个原因: 1. **权限不足**:JVM可能没有足够的权限去加载或操作指定的代理库。 2. **路径问题**:代理库文件路径不正确,或者在Classpath中找不到。 3. **依赖冲突**:如果有其他库已经注册了相同的钩子函数,可能导致冲突。 4. **代码损坏**:代理库自身可能存在代码错误或格式问题。 5. **版本不兼容**:如果JVM版本、代理库版本和其他应用组件版本之间存在不匹配。 要解决这个问题,你需要检查日志详情以了解具体的错误信息,并尝试按照以下步骤排查: 1. 检查JVM的权限设置。 2. 确保代理库的路径正确并包含在Classpath中。 3. 如果有多个代理,确认它们之间的依赖关系和加载顺序。 4. 更新或修复有问题的代理库文件。 5. 卸载已有的代理,或者确认代理与当前环境的兼容性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值