上QQ阅读APP看书,第一时间看更新
3.3 Postfix日志
Postfix是Linux平台上最常用的邮件服务器软件。邮件服务的运维复杂度一向较高,在此提供一个针对Postfix日志的解析处理方案。方案出自:https://github.com/whyscream/postfix-grok-patterns。
因为Postfix默认通过syslog方式输出日志,所以可以选择通过rsyslog直接转发给Logstash,也可以由Logstash读取rsyslog记录的文件。
Postfix会根据实际日志的不同,主动设置好不同的syslogtag,有anvil、bounce、cleanup、dnsblog、local、master、pickup、pipe、postdrop、postscreen、qmgr、scache、sendmail、smtp、lmtp、smtpd、tlsmgr、tlsproxy、trivial-rewrite和discard等20个不同的后缀,而在Logstash中,syslogtag通常被解析为program字段。本节以第一种anvil日志的处理配置作为示例:
input { syslog { } } filter { if [program] =~ /^postfix.*\/anvil$/ { grok { patterns_dir =>“/etc/logstash/patterns.d” match => [ “message”, “%{POSTFIX_ANVIL}” ] tag_on_failure => [ “_grok_postfix_anvil_nomatch” ] add_tag => [ “_grok_postfix_success” ] } } mutate { convert => [ “postfix_anvil_cache_size”, “integer”, “postfix_anvil_conn_count”, “integer”, “postfix_anvil_conn_rate”, “integer”, ] } }
配置中使用了一个叫POSTFIX_ANVIL的自定义grok正则,该正则及其相关正则内容如下所示。将这段grok正则保存成文本文件,放入/etc/logstash/patterns.d/目录即可使用。
POSTFIX_TIME_UNIT %{NUMBER}[smhd] POSTFIX_ANVIL_CONN_RATE statistics: max connection rate %{NUMBER:postfix_anvil_conn_ rate}/%{POSTFIX_TIME_UNIT:postfix_anvil_conn_period} for \(%{DATA:postfix_ service}:%{IP:postfix_client_ip}\) at %{SYSLOGTIMESTAMP:postfix_anvil_ timestamp} POSTFIX_ANVIL_CONN_CACHE statistics: max cache size %{NUMBER:postfix_anvil_ cache_size} at %{SYSLOGTIMESTAMP:postfix_anvil_timestamp} POSTFIX_ANVIL_CONN_COUNT statistics: max connection count %{NUMBER:postfix_ anvil_conn_count} for \(%{DATA:postfix_service}:%{IP:postfix_client_ip}\) at %{SYSLOGTIMESTAMP:postfix_anvil_timestamp} POSTFIX_ANVIL %{POSTFIX_ANVIL_CONN_RATE}|%{POSTFIX_ANVIL_CONN_CACHE}|%{POSTFIX_ ANVIL_CONN_COUNT}
其余19种Postfix日志的完整grok正则和Logstash过滤配置,读者可以通过https://github.com/whyscream/postfix-grok-patterns获取。