1

我正在使用以下配置让 fluentd 读取 auth.logs 并将其发送到弹性搜索,但我遇到一个错误,提示模式不匹配并且日志未推送到 ES。

我正在使用 fluentd syslog 解析器插件rfc3164-pattern中定义的模式

<source>
  @type tail
  path /var/log/auth.log
  pos_file /var/log/auth.pos
  format /^\<(?<pri>[0-9]+)\>(?<time>[^ ]* {1,2}[^ ]* [^ ]*) (?<host>[^ ]*) (?<ident>[a-zA-Z0-9_\/\.\-]*)(?:\[(?<pid>[0-9]+)\]) *(?<message>.*)$/
  tag authlog
</source>
<match authlog.**>
  @type elasticsearch
  hosts "ESHOST:PORT"
  logstash_format true
  logstash_prefix "server-authlogs"
  include_tag_key true
  flush_interval 5s
  logstash_dateformat %Y.%m.%d
  time_precision 3
</match>

输出错误:

2019-04-16 08:00:50 +0000 [警告]:#0 模式不匹配:“4 月 16 日 08:00:50 主机名-1415 sshd [15134]:pam_unix(sshd:session):为用户 ubuntu 打开会话by (uid=0)" 2019-04-16 08:00:50 +0000 [警告]: #0 模式不匹配: "Apr 16 08:00:50 hostname-1415 systemd-logind [1138]: 新会话 10用户 ubuntu。”

4

2 回答 2

0

使用parser_syslog怎么样?如果 /var/log/auth.log 具有 syslog 格式(RFC3164)。

<source> 
  @type tail 
  path /var/log/auth.log 
  pos_file /var/log/auth.pos 
  tag authlog
  <parse>
    @type syslog
    message_format rfc3164
    with_priority false
  </parse>
</source>
于 2019-04-17T00:36:57.420 回答
0

对于那些正在寻找类似东西的人来说,这里是运行良好的配置。

<source> 
 type tail 
 path /var/log/foo/auth.log 
 pos_file /var/log/auth.pos 
 tag authlog
 format /^(?<time>[^ ]* {1,2}[^ ]* [^ ]*) (?<host>[^ ]*) (?<ident>[a-zA-Z0-9_\/\.\-]*)(?:\[(?<pid>[0-9]+)\])?(?:[^\:]*\:)? *(?<message>.*)$/ 
</source>
<match authlog.**>
 @type elasticsearch
 hosts "ESHOST:PORT"
 logstash_format true
 logstash_prefix "server-authlogs"
 include_tag_key true
 flush_interval 5s
 logstash_dateformat %Y.%m.%d
 time_precision 3
</match>

对于 auth.log 模式:

Apr 16 18:02:02 host-1415 sshd[11111]: Accepted password for ubuntu from 111.11.111.11 port 11111 ssh2
于 2019-04-16T19:09:55.590 回答