格式化Graphite的logstash数据

时间:2016-05-16 15:17:58

标签: logstash graphite

我以json格式从多个服务器创建事件计数器的日志,然后使用logstash将计数器放入Graphite / Grafana。这有效,但我没有在Grafana中看到所需的格式。我希望能够根据服务器一起显示多个计数器。现在一切都显示在第一个指标(包括服务器)中。如果我选择服务器,则没有可用于显示计数器的第二个度量标准。我想我发送给Graphite的格式不正确。

这是一个日志。每一行都是服务器(每个日志中的服务器相同),日期和计数器。如果需要,我可以更改日志格式。

{"Server":"10.254.70.52","@timestamp":"2016-05-13T20:58:24.0920228Z","oneLevelSearchOps":"11.07"}
{"Server":"10.254.70.52","@timestamp":"2016-05-13T20:58:24.0920228Z","searchOps":"12.92"}
{"Server":"10.254.70.52","@timestamp":"2016-05-13T20:58:24.0920228Z","errors":"0"}

这是logstash .conf文件

input {
 file {
  path => "/home/local/scott/difData-10.254.70.51.txt"
  codec => "json"
  sincedb_path => "/dev/null"
  start_position => "beginning"
 }
}
output {
 stdout { codec => rubydebug }
 graphite{
  codec => "plain"
  fields_are_metrics => true
  host => "127.0.0.1"
  port => "2003"
 }
}

需要使用fields_are_metrics或不向Graphite发送任何内容。 sincebd_path和start_position用于调试。

这是stdout中的一行

{
         "Server" => "10.254.70.51",
     "@timestamp" => "2016-05-13T21:28:40.918Z",
 "modifyEntryOps" => "0.10",
       "@version" => "1",
           "path" => "/home/local/NV/sfoley/difData-10.254.70.51.txt",
           "host" => "lab-graphite"
}

Graphite能否正确解释?由于我要向日志添加更多数据,我宁愿更改json格式的日志,而不是在每个计数器的logstash .conf文件中添加过滤器(如果需要),但我可以这样做。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我更多地关注Graphite并将日志更改为只有一个条目(除了日期),服务器名称和计数器数据用句点分隔。所以server.counter这给了我想要的东西。

{"@timestamp":"2016-05-13T20:59:37.5815457Z","predr01.oneLevelSearchOps":"5.6"}