Linux 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个部分

  1. MODULES :模块

  2. GLOBAL DRICTIVES :全局设置

  3. 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

你可能感兴趣的:(Linux相关,linux,syslog)