0

所以我看到还有其他一些此类问题,但似乎没有一个可以解决我的问题。

我试图从文件中获取 Springboot 日志,解析出有用的信息,并将结果发送到 Elasticsearch,最终从 Kibana 中读取。我的 fluentd.conf 如下所示:

<source>
  type tail
  read_from_head true
  path /path/to/log/
  pos_file /path/to/pos_file
  format /^(?<date>[0-9]+-[0-9]+-[0-9]+\s+[0-9]+:[0-9]+:[0-9]+.[0-9]+)\s+(?<log_level>[Aa]lert|ALERT|[Tt]race|TRACE|[Dd]ebug|DEBUG|[Nn]otice|NOTICE|[Ii]nfo|INFO|[Ww]arn?(?:ing)?|WARN?(?:ING)?|[Ee]rr?(?:or)?|ERR?(?:OR)?|[Cc]rit?(?:ical)?|CRIT?(?:ICAL)?|[Ff]atal|FATAL|[Ss]evere|SEVERE|EMERG(?:ENCY)?|[Ee]merg(?:ency)?)\s+(?<pid>[0-9]+)\s+---\s+(?<message>.*)$/
  tag my.app
</source>
<match my.app>
 type stdout
</match>
<match my.app>
 type elasticsearch
 logstash_format true
 host myhosthere
 port 9200
 index_name fluentd-app
 type_name fluentd
</match>

给定一个典型的 Springboot 日志行:

2015-07-16 19:20:04.074 INFO 16649 --- [ main] {springboot message}

通过也写入标准输出作为测试,我看到我的解析器导致:

{
 "date":"2015-07-16 19:20:04.074",
 "log_level":"INFO",
 "pid":"16649",
 "message":"[ main] {springboot message}"
}

但是,当它被写入 Elasticsearch 时,所有结果都是:

{
 _index: "fluentd-app-2015.07.16",
 _type: "fluentd",
 _id: "AU6YT5sjvkxiJXWCxeM8",
 _score: 1,
 _source: {
  message: "2015-07-16 19:20:04.074 INFO 16649 --- [ main] {springboot message}",
  @timestamp: "2015-07-16T19:20:04+00:00"
 }
},

根据我对fluentd-plugin-elasticsearch 的阅读,我希望 _source 包含我在标准输出中看到的所有已解析字段。我也尝试过 grok 解析器——尽管问题显然在于对 fluentd elasticsearch 插件的理解。如何让我解析的字段持久保存到 elasticsearch?

4

0 回答 0