Logstash exec输入插件 - 从@message中删除命令

时间:2015-06-18 16:16:23

标签: batch-file logstash logstash-configuration

我在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}

1 个答案:

答案 0 :(得分:2)

自己找到解决方案

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

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