1

我在 Windows 机器上使用 logstash 1.5.1。我必须打个休息电话,它会为我提供 JSON 输出。

因此,我正在使用 exec。结果不再是 json :-(。

此事件的@message 将作为一个事件将命令的整个标准输出。 https://www.elastic.co/guide/en/logstash/current/plugins-inputs-exec.html

我的logstash配置

input {
    exec {
        command => "C:\bin\curl\curl.exe http://localhost:8080/jolokia/read/metrics:name=trx.process.approved" 
        interval => 10
        codec => json { charset => "CP1252" }
    }
}
output {
  elasticsearch {
    node_name => test
    host => myhost  
  }
}

cmd下的输出

{"request":{"mbean":"metrics:name=trx.process.approved","type":"read"},"value":{"Count":14},"timestamp":1434643572,"status":200}

elasticsearch 上无法解析的输出(3 行!)

C:\Daten\tools\logstash-1.5.1\bin>C:\bin\curl\curl.exe http://localhost:8080/jolokia/read/metrics:name=trx.process.approved
{"request":"mbean":"metrics:name=trx.process.approved","type":"read"},"value":{"Count":14},"timestamp":1434641808,"status ":200}

通常我会尝试只削减 JSON 输出,但不知何故,我对 Windows 的了解有限。

我试过过滤器插件拆分,将这三行分开,但不知道如何删除第 1 行和第 2 行。

filter {
    split {     
    }
}

任何指针表示赞赏。

最后,我只想将此行发送到elasticsearch:

{"request":{"mbean":"metrics:name=trx.process.approved","type":"read"},"value":{"Count":14},"timestamp":1434641808,"status":200}
4

1 回答 1

2

自己找到了解决方案

filter {
    split { 
    }
    if  [message] !~ "^{" {
        drop {}
    }
}

如果字符串不以“{”开头,则使用带有正则表达式的条件,该行将被删除。

于 2015-06-19T08:02:49.297 回答