我正在使用以下配置来流利地读取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通过(uid = 0)” 2019-04-16 08:00:50 +0000 [警告]:#0模式不匹配:“ 4月16日08:00:50主机名-1415 systemd-logind [1138]:用户ubuntu的新会话10。” >
答案 0 :(得分: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>
对于以下身份验证日志模式:
Apr 16 18:02:02 host-1415 sshd[11111]: Accepted password for ubuntu from 111.11.111.11 port 11111 ssh2
答案 1 :(得分:0)
How about using parser_syslog? If /var/log/auth.log has syslog format(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>