rsyslogd是一个流行的系统日志守护进程,支持灵活的日志输入、输出机制,可高效地收集、存储、分析系统消息、应用程序日志、安全日志等大量信息。 rsylogd的配置文件格式非常灵活,可以自定义配置多个不同类型的日志事件,处理机制丰富,包括日志筛选、格式化、发送至远程服务器、自定义动作、过滤器等等。
以下是rsyslogd配置文件格式及其内容的完整攻略。
配置文件路径
rsyslogd默认配置文件路径为 /etc/rsyslog.conf。在这个文件中可以定义本地和远程日志处理的规则,以及消息过滤条件和日志存储位置等。
标志符和注释
以“#”为标记,代表注释的开始,直到该行结尾结束。可以用它来添加注释以及说明某些配置部分的作用,以方便理解、管理及维护。
配置项格式
rsyslogd配置项可设置接收某种消息类型的源地址和端口号,以及配置如何处理该等级类型的消息。配置项的基本格式如下所示:
facility.priority action
# 示例
local1.info /var/log/testlog
其中,facility表示日志来源类型,priority表示消息低于的优先级,action表示对应处理方法。
定义日志来源类型
rsyslogd通过facility来定义日志来源类型。各种facility以及它们的含义说明如下:
auth,authpriv:用户认证相关信息
cron: 计划任务相关信息
daemon: 系统服务相关信息
kern: 内核和系统日志
local0 - local7:用户自定义设定的日志来源类型
mail:邮件相关信息
syslog:由syslogd进程产生的日志信息
user:登录相关信息
定义消息的优先级
rsyslogd支持8种日志消息的优先级,从高到低如下:
LOG_EMERG:紧急情况,系统不可用
LOG_ALERT:必须立刻采取行动
LOG_CRIT:关键情况,如硬盘故障等
LOG_ERR:系统错误警告
LOG_WARNING:警告信息
LOG_NOTICE:非错误却应该注意的情况
LOG_INFO:系统信息
LOG_DEBUG:调试信息
处理方法 action
rsyslogd支持多种处理方法,如下所示:
将消息发送到本机文件
通过将日志消息保存到文件或设备文件输出。其输出类型可以是多样的,例如磁盘、寄存器和命名管道等。命令配置格式如下:
# 将指定facility、priority级别的日志信息,送到文件、设备文件输出
facility.priority /path/to/file
# 例子:所有local0的日志信息保存至/var/log/testlog
local0.* /var/log/testlog
将日志发送到远程服务器
远程服务器的IP地址和端口号需要指定,处理日志的重要性不容忽视。命令配置格式如下:
# 将local0.facility下,所有优先级(level)的日志信息,发送给192.168.1.11:514服务器
local0.* @192.168.1.11:514
自定义操作
rsyslogd还支持自定义操作,例如:将消息输出到其他终端或将日志消息投递到特定的TCP或UDP端口。命令配置格式如下:
# 将local0.facility下,所有优先级(level)的日志信息,通过通过system队列,再输出到一个随机的终端
local0.* | system,newterminal,-/dev/tty11
# 将local0.facility下,所有优先级(level)的日志信息,通过TCP协议投递到192.168.1.11:514服务器
local0.* @@192.168.1.11:514
过滤消息
rsyslogd还支持过滤日志消息,过滤器可以根据日志类型、IP地址、优先级等条件进行筛选和处理。常用的过滤器有:
- expression-based filter:表达式过滤器
- property-based filter:属性过滤器
- substring-based filter:子字符串过滤器
这里以表达式过滤器为例,格式如下:
# 将local0.facility下,优先级(level)大于等于warning的日志信息,通过通过udp协议,发送至192.168.1.11:514服务器 (过滤warn和err事件)
if $syslogfacility-text == 'local0' and ($syslogseverity <= 4 /*warn*/ or $syslogseverity >= 5 /*conn*/) then @192.168.1.11:514
日志事件配置规则
rsyslogd支持多种日志事件配置规则,根据配置规则,将日志处理到不同的文件或输出方式,例如:
# local0.facility下,所有优先级(level)的日志信息,保存至/var/log/testlog文件
local0.* /var/log/testlog
# 将auth.facility下,优先级(level)大于等于notice的日志信息,保存至一个新的输出
auth.notice ;/var/log/authcommon
总结
rsyslogd的配置文件格式很灵活,可以自定义配置多个不同类型的日志事件,处理机制也很丰富,包括日志筛选、格式化、发送至远程服务器、自定义动作、过滤器等等。在实际使用时,可以根据自己的需求和场景选择不同的配置方法和处理规则。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:rsyslogd配置文件格式及其内容详解 - Python技术站