通过logstash进行日志解析后,没有生成任何字段

时间:2016-08-15 10:08:05

标签: logstash kibana logstash-grok

由于重复了类似的问题,我已经注意查看以前的答案,遗憾的是它没有解决我的问题。

通过下面提到的logstash的过滤器配置,我希望在解析日志之后生成字段线程,日志级别和消息。

我已在https://grokdebug.herokuapp.com/上尝试过此过滤器,输出会生成过滤器中提到的字段。

然而,除了消息之外,输出JSON / Kibana上没有显示任何字段。解析时没有错误。

如果有人能在这里指出错误,那会有所帮助。谢谢!

过滤配置

filter {
  if [type] == "reporting" {
    grok {
      match => { "message" => "\[(?<timestamp>%{TIMESTAMP_ISO8601})\] - %{NOTSPACE:thread} - %{LOGLEVEL:loglevel} (?<logger>[A-Za-z0-9$_.]+) - %{GREEDYDATA:message}$"}
    }
  }
}

记录示例

[2016-08-15 09:44:36,858] - RServer - INFO transformation - [01] starting the process for day 2016-06-06

生成JSON

 {
  "_index": "filebeat-2016.08.15",
  "_type": "log",
  "_id": "xxx",
  "_score": null,
  "_source": {
    "message": "[2016-08-15 09:44:36,858] - RServer - INFO transformation - [01] starting the process for day 2016-06-06",
    "@version": "1",
    "@timestamp": "2016-08-15T09:44:37.700Z",
    "source": "/xxx/yyy/main.log",
    "count": 1,
    "fields": {
      "application": "reporting",
      "category": "main"
    },
    "beat": {
      "hostname": "xxx",
      "name": "xxx"
    },
    "offset": 5033597,
    "type": "log",
    "input_type": "log",
    "host": "xxx",
    "tags": [
      "beats_input_codec_plain_applied"
    ]
  },
  "fields": {
    "@timestamp": [
      1471254277700
    ]
  },
  "sort": [
    1471254277700
  ]
}

1 个答案:

答案 0 :(得分:0)

感谢@pandaadb的评论,我想到了检查FileBeat的配置并实现了一个字段,&#34; output_type&#34;失踪。这意味着进入的日志没有被过滤,因为过滤器期望某种类型。

使用&#34; output_type&#34;,将添加一个关键字,并由过滤器用于根据提到的GROK表达式解析日志。由于FileBeat的同一实例转发不同类别的日志,因此它在转发器本身而不是Logstash的输入配置中被标记。