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 , 它指定了模板的功能,支持选项为sqlstdsql,在使用数据库存储的时候会用到。

生成动态文件名

模板可以用来生成动态文件名,就如之前所述,在使用动态文件名的时候,需要在 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

 

 

所有的属性参考:

 

logrotate配置文件

logrotate的配置文件为/etc/logrotate.conf

自定义的log rotation配置文件在/etc/logrotate.d目录下

 

比较全的总结:

 

posted @ 2021-02-24 14:10  安全泰哥  阅读(2540)  评论(0编辑  收藏  举报