在Logstash中匹配完整输入的模式是什么?

时间:2016-07-18 07:04:47

标签: logstash logstash-grok elastic-stack

我正在使用带有filebeat的ELK堆栈。

filebeat.conf

filebeat:
  prospectors:
    -
      paths:
        - /home/ubuntu/logs_*
      input_type: log
output:
  logstash:
    hosts: [${LOGSTASH_PORT_5044_TCP_ADDR}]
    index: filebeat
  console:
    pretty: true

这是从文件 logs_test

传递日志

示例日志

{"name":"test","statusCode":0,"deployment":"production","hostname":"ip-random-address","level":30,"jobName":"testJob","date":"2016-07-18T03:15:02.075Z","jobType":"script","msg":"","time":"2016-07-18T03:15:02.076Z","v":0}

我想在字段statusCode为1

时对外部URL进行HTTP调用

整个日志对象正在传递给logstash。

我的 logstash配置

input {
    beats { 
        port => 5044
        codec => "json"
    }
}



output {
  if ([statusCode] and [statusCode] == 1) {
        http {
            format=>"message"
            http_method=>"post"
            url=>"http://www.example.com"
            message=>'{"text": "%{some_pattern_matcher}"}'
             }
      }
}

[问题] " some_pattern_matcher" 应该将所有字段发送到HTTP请求。

PS:%{mesage}不起作用。

1 个答案:

答案 0 :(得分:0)

input {
    beats { 
        port => 5044
        codec => "json"
    }
}
filter{
     grok{
          match => { "message" => "%{GREEDYDATA:data}" }
     }
}
output {
  if ([statusCode] and [statusCode] == 1) {
        http {
            format=>"message"
            http_method=>"post"
            url=>"http://www.example.com"
            message=> %{data}
           }
      }
}

我还没有尝试过。所以尝试这个,让我知道这个解决方案是否有效。如果没有,请发布你得到的错误。