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

### 回答1: 这是一个 Java 虚拟机错误,表示在初始化 VM 代理库时发生错误,无法初始化检测工具。这可能是由于内存不足、系统环境不支持或其他原因导致的。建议检查系统配置、内存使用情况以及其他可能导致错误的因素,并尝试重新启动程序或系统。 ### 回答2: 出现“error occurred during initialization of vm agent library failed to init: instrument”错误,一般是因为Java虚拟机(JVM)在初始化过程中无法加载或者初始化instrumentation agent。这个错误可能会导致无法正常启动Java程序,需要进行排查和解决。 解决方法: 1. 检查JVM版本 首先,检查JVM的版本是否与程序要求的版本匹配。如果不匹配,可能会导致无法正常启动。可以执行jps命令查看当前JVM进程列表,通过它确定当前JVM版本。确保程序需要的JVM版本号与当前使用的JVM版本一致。 2. 检查环境变量 环境变量是影响JDK的重要因素之一。遇到此问题时,检查JAVA_HOME是否设置正确,并且确保在PATH路径下可以找到JAVA_HOME目录和相关库文件。此外,还可以检查CLASSPATH环境变量,确保它没有设置为与JVM相关的jar包路径,否则可能会导致冲突。 3. 更新Java版本 如果以上两种情况都不是问题所在,可以考虑更新JVM版本。根据具体情况选择合适的JDK版本,排除版本问题。同时也可以查看日志文件,找到相关错误信息来确定问题所在。 4. 禁用instrumentation agent 如果以上操作仍未解决问题,可以尝试禁用instrumentation agent。这可以通过在JVM启动时添加参数“-Xint”来实现,该参数会禁用JIT优化,并禁用Istrumentation。但这会降低程序运行效率,所以只应该在无法解决问题的情况下才采用。 总之,要解决这个问题,应该从多个方面入手进行排查。排除JVM版本不匹配、环境变量错误、JDK版本问题等多重问题,寻找解决问题的方法。在此基础上,再结合具体情况进行操作,准确解决问题。 ### 回答3: 这个错误提示是Java虚拟机初始化过程中出现的一种错误,原因可能很多,比如缺少某些必要的类文件、配置文件不正确、环境变量设置错误等。其中,agent library failed to init: instrument错误提示是指Java Virtual Machine无法使用一个标准接口来实现类和资源的转化,通常是由于Class文件不完整或者损坏引起的。 解决这个问题的方法也有很多种,比如: 1.确保Java环境变量设置正确:在环境变量中,JAVA_HOME应该指向正确的JDK安装路径,PATH中应该包含JDK的bin目录。 2.检查JAR包是否缺少某些依赖的类或配置文件:如果是使用某个第三方库或框架,要确保相关的JAR包和配置文件完整。 3.重新安装Java虚拟机:如果上述方法都无法解决问题,可能需要重新安装Java虚拟机,确保安装时没有出现错误。 4.升级Java版本:如果是因为Java版本过低或者过旧的问题导致的错误,可以尝试升级Java版本。 总的来说,要解决这个问题,需要深入了解Java虚拟机的相关知识,同时要根据具体情况具体分析。如果遇到了类似的问题,可以参考上述方法来尝试解决。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值