1

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

我已经尝试过 JSON 教程以及写入 influx 数据库的方法: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
      } 
     } ]
   } ]
 } ]
}
4

3 回答 3

0

jmxtrans Wiki上有一个关于这个问题的例子——注意这个例子使用了特定的 InfluxDbWriter 而不是 GraphiteWriter

于 2016-02-08T15:09:48.763 回答
0

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

我编写了一个新的 JmxTrans 编写器,它包含在最新的快照版本中。它发送给电报的一个例子是: JVMMemory,jmxport=1234,attribute=NonHeapMemoryUsage,resultKey=committed:12345|c

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

于 2016-10-30T21:21:17.390 回答
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" --> 时间序列的名称

"columns" --> 时间序列中的列 "name"

"points" --> 对应于上述列的数据点

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

于 2016-02-08T15:26:11.357 回答