rsyslog和过滤规则
/etc/rsyslog.conf
是rsyslog服务的总配置文件
/etc/rsyslog.d
该目录是单独配置的rsyslog配置文件
vim /etc/rsyslog.conf
$IncludeConfig /etc/rsyslog.d/*.conf
# 个人建议,将所有的rule都配置在该目录下,在/etc/rsyslog.conf中不写rule
配置文件/etc/rsyslog.conf主要有3个部分
MODULES :模块
GLOBAL DRICTIVES :全局设置
RULES:规则
RULES:规则
过滤
$msg
if $msg contains '%ASA-' and $syslogseverity <= '6' then {
-/var/log/cisco-asa.log
stop
}
模板
任何rsyslog
生成的日志都可以根据需要使用模板进行格式化,要创建模板,使用如下指令
$template TEMPLATE_NAME,"text %PROPERTY% more text", [OPTION]
这里的$template
指令表明了接下来的内容定义了一个模板,TEMPLATE_NAME
是模板的名称,接下来双引号之间的内容为模板的内容。
这里还有一个 OPTION , 它指定了模板的功能,支持选项为sql
和stdsql
,在使用数据库存储的时候会用到。
生成动态文件名
模板可以用来生成动态文件名,就如之前所述,在使用动态文件名的时候,需要在 ACTION 中的模板名称前增加?
表明该文件名是动态生成的。
例如:
$template DynamicFile,"/var/log/test_logs/%timegenerated%-test.log"
*.* ?DynamicFile
timegenerated
属性从日志信息中提取出消息的时间戳,这样可以为每个日志生成唯一文件名称。
以下是一些简单属性的示例:
以下属性获取系统日志消息的整个消息文本:
%msg%
以下属性获取系统日志消息的消息文本的前两个字符:
%msg:1:2%
以下属性获取系统日志消息的整个消息文本,并删除其最后一个换行符:
%msg ::: drop-last-lf%
以下属性获取接收到syslog消息时生成的时间戳的前10个字符,并根据RFC 3999日期标准对其进行格式化。
%timegenic:1:10:date-rfc3339%
# %syslogpriority-text% : syslog priority
# %syslogfacilityt-text% : syslog facility
# %timegenerated% : timestamp when the message was received
# %HOSTNAME% : hostname
# %syslogtag% : tag
# %msg% : the message sent to syslog
所有的属性参考:
https://www.rsyslog.com/doc/master/configuration/properties.html
logrotate配置文件
logrotate的配置文件为/etc/logrotate.conf
自定义的log rotation配置文件在/etc/logrotate.d目录下
比较全的总结:
https://www.jianshu.com/p/e129ed893362