为什么grok {match => {“message”=> “%{DATA:class}:%{GREEDYDATA:message}”}}重复我的消息?

时间:2017-04-10 20:22:04

标签: logstash logstash-grok

如何避免重复:

  "message": [
    "clientErrorHandler: Erro não previsto ou mapeado durante chamada dos serviços.",
    " Erro não previsto ou mapeado durante chamada dos serviços."
  ],

我做错了什么(可能是从Grok的角度来看,每条消息中都有两行)?

logstash.conf:

input {
  file {
    path => "/.../logsreais.log"
    start_position => "beginning"
    codec => "json"
  }
}

filter {
    grok {
        match => { "message" => "%{DATA:class}:%{GREEDYDATA:message}" }
    }
}

output {
 stdout {
    # This codec gives your more details about the event.
   codec => rubydebug
 }

  elasticsearch {
    hosts => "http://127.0.0.1:9200"
    index => "indice"
  }
}

logsreais.log

{"meta":"","level":"error","message":"clientErrorHandler: Erro não previsto ou mapeado durante chamada dos serviços.","timestamp":"2017-04-06T16:08:37.861Z"}
{"meta":"","level":"error","message":"clientErrorHandler: Erro não previsto ou mapeado durante chamada dos serviços.","timestamp":"2017-04-06T19:40:17.682Z"}

Kibana Sense查询:

  {
    "_index": "indice170410g",
    "_type": "logs",
    "_id": "AVtZeRktljzknEE8qoSv",
    "_score": 1,
    "_source": {
      "path": "/.../logsreais.log",
      "@timestamp": "2017-04-10T20:06:00.203Z",
      "level": "error",
      "meta": "",
      "@version": "1",
      "host": "nodejs",
      "message": [
        "clientErrorHandler: Erro não previsto ou mapeado durante chamada dos serviços.",
        " Erro não previsto ou mapeado durante chamada dos serviços."
      ],
      "class": "clientErrorHandler",
      "timestamp": "2017-04-06T16:08:37.861Z"
    }
  }

1 个答案:

答案 0 :(得分:0)

您应该将grok过滤器设置为覆盖message字段,因为默认情况下它会附加数据(如您的情况所示)。

grok {
    match => { "message" => "%{DATA:class}:%{GREEDYDATA:message}" }
    overwrite => ["message"]
}