如何使用 fluentd 解析来自 syslog 的 JSON 数据?

分享于2022年07月17日 elasticsearch fluentd logging parsing rsyslog 问答
【问题标题】:如何使用 fluentd 解析来自 syslog 的 JSON 数据?(How to parse JSON data from syslog with fluentd?)
【发布时间】:2022-01-22 08:50:55
【问题描述】:

我的自定义 rsyslog 模板:

template(name="outfmt" type="list" option.jsonf="on") {
         property(outname="@timestamp"
                  name="timereported" 
                  dateFormat="rfc3339" format="jsonf")
         property(outname="host"
                  name="hostname" format="jsonf")
         property(outname="severity"
                  name="syslogseverity-text" caseConversion="upper" format="jsonf")
         property(outname="facility"
                  name="syslogfacility-text" format="jsonf")
         property(outname="syslog-tag"
                  name="syslogtag" format="jsonf")
         property(outname="source"
                  name="app-name" format="jsonf")
         property(outname="message"
                  name="msg" format="jsonf")

     }

我的 rsyslog 示例输出:

{
  "@timestamp": "2018-03-01T01:00:00+00:00",
  "host": "172.20.245.8",
  "severity": "DEBUG",
  "facility": "local4",
  "syslog-tag": "app[1666]",
  "source": "app",
  "message": " this is my syslog message"
}

如何用fluentd解析这个日志并发送到elasticsearch?


【解决方案1】:

为什么要将输出解析为 JSON?如果我没记错的话,您可以将标准 syslog 格式的日志发送到 elasticsearch。查看此 syslog plugin 以了解弹性搜索。

请提供一些示例代码,说明您在尝试解析日志数据方面所做的努力 - 以及您究竟想用它做什么。否则这里是 guide ,您可能已经找到了。