用于将数据从jmxtrans输入到InfluxDB的JSON脚本

时间:2016-02-03 08:40:20

标签: json influxdb jmxtrans

我尝试使用jmxtrans收集JVM指标,并需要将数据输入InfluxDB。虽然我能够收集数据,但我不确定将数据输入数据库所需的标记和语法。

我已尝试过JSON教程以及写入涌入数据库的方法: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 个答案:

答案 0 :(得分:0)

jmxtrans Wiki上有一个确切问题的例子 - 注意这个例子使用特定的InfluxDbWriter而不是GraphiteWriter

答案 1 :(得分:0)

我注意到您正在使用现在已弃用的v0.8。 v0.9与v0.8不向后兼容。所以我建议你尽可能选择最新的版本,因为写这些数据的结构在这两个版本之间有所不同。

如果您必须使用v0.8,那么请转到:

{
        "name": "cpu_util",
        "columns": [
          "time",
          "sequence_number",
          "avg",
          "unit"
        ],
        "points": [
          [
            1421024460734,
            124666640001,
            74.31932,
            "%"
          ],
          [
            1421024460734,
            124666550001,
            0.7899716,
            "%"
          ]
        ]
      }

“name” - &gt;时间序列'名称

“列” - &gt;时间序列中的列“名称”

“积分” - &gt;数据点cpr对应上面提到的列

来源:https://github.com/icclab/cyclops-udr/wiki/OpenStack

答案 2 :(得分:0)

我正在开发一个类似的解决方案,我正在使用jmxtrans来轮询在每个主机上运行的JVM。 JMXTrans将“增强”statsD表单中的结果发送到该主机上的Telegraf代理。 Telegraf代理将指标发送到InfluxDB。 (在下一个Telegraf版本中,它们将支持从许多电报代理到一个集中实例的收集)。这样可以尽可能降低对InfluxDB摄入的需求。

我写了一个新的JmxTrans编写器,它包含在最新的快照构建中。它发送给telegraf的一个例子是: 0

这利用了Telegraf / InfluxDB的标记功能,并支持StatsD的采样功能和简单性