我正在尝试使用jmxtrans来收集JVM指标,并需要将数据输入InfluxDB . 虽然我能够收集数据,但我不确定将数据输入数据库所需的标记和语法 .
我已经尝试过JSON教程以及写入涌入DB的方法:https://docs.influxdata.com/influxdb/v0.8/api/reading_and_writing_data/但无法找到具体答案,因此发布了帖子 .
需要帮助修改json文件以将数据输入InfluxDB . 请指教 . 用于检索另一个服务器的堆内存使用情况的示例代码:
{
"servers" : [ {
"port" : "<PORT>",
"host" : "<IP>",
"queries" : [ {
"obj" : "java.lang:type=Memory",
"attr" : [ "HeapMemoryUsage", "NonHeapMemoryUsage" ],
"outputWriters" : [ {
"@class" : "com.googlecode.jmxtrans.model.output.GraphiteWriter",
"settings" : {
"templateFile" : "heapmemory-rrd-template.xml",
"outputFile" : "target/heap.rrd",
"binaryPath" : "/opt/local/bin",
"debug" : true,
"generate" : true
}
} ]
} ]
} ]
}
3 回答
在jmxtrans Wiki上有一个确切这个问题的例子 - 注意这个例子使用特定的InfluxDbWriter而不是GraphiteWriter
我注意到你正在使用现在已弃用的v0.8 . v0.9与v0.8不向后兼容 . 因此,我建议您尽可能选择最新版本,因为写入数据的结构在这两个版本之间有所不同 .
如果你必须使用v0.8,那么你去:
“名字” - >时间序列的名字
“列” - >时间序列中的列“名称”
“points” - >数据点cpr对应于上面提到的列
资料来源:https://github.com/icclab/cyclops-udr/wiki/OpenStack
我正在研究一个类似的解决方案,我使用jmxtrans来轮询在每个主机上运行的JVM . JMXTrans将“增强”statsD表单中的结果发送到该主机上的Telegraf代理 . Telegraf代理将指标发送到InfluxDB . (在下一个Telegraf版本中,它们将支持从许多电报代理到一个集中实例的收集) . 这样可以尽可能降低对InfluxDB摄入的需求 .
我写了一个新的JmxTrans编写器,它包含在最新的快照构建中 . 它发送给telegraf的一个例子是:
JVMMemory,jmxport=1234,attribute=NonHeapMemoryUsage,resultKey=committed:12345|c
这利用了Telegraf / InfluxDB的标记功能,并支持StatsD的采样功能和简单性