如何使用 fluentd 解析来自 syslog 的 JSON 数据?
How to parse JSON data from syslog with fluentd?
我的自定义 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?
您可以通过 syslog plugin 直接在 elasticsearch 中接收日志(甚至不必将它们格式化为 json)。这可能是解决您问题的最直接的方法。
如果出于某种原因您需要使用某种日志聚合器,我个人不会推荐 fluentd,因为它可以带来不必要的复杂性。
但是你可以使用 elasticsearch 支持的 logstash,你可以找到很多关于它的 documentation。
我的自定义 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?
您可以通过 syslog plugin 直接在 elasticsearch 中接收日志(甚至不必将它们格式化为 json)。这可能是解决您问题的最直接的方法。
如果出于某种原因您需要使用某种日志聚合器,我个人不会推荐 fluentd,因为它可以带来不必要的复杂性。
但是你可以使用 elasticsearch 支持的 logstash,你可以找到很多关于它的 documentation。