rsyslog采用模块化的设计,是syslog的替代品
特点
- 实现了基本的syslog协议
- 直接兼容syslogd的syslog.conf
- 在同一台机器上支持多个rsyslogd进程
- 丰富的过滤功能,可将消息过滤后再进行转发
- 灵活的配置选项,配置文件中可写简单的逻辑判断
- 有现成的前端web展示
主配置文件(/etc/rsyslog.conf)
结构:
- 全局指令:设置全局参数,如主消息队列尺寸的设置,加载扩展模块的那个配置。
- 模块:指定记录的消息格式,也用于动态文件名称的生成。
- 输出通道:对用户最期望的消息进行预定义。
- 规则:指定消息的规则。在规则中可以引用之前定义的模板和输出通道。
如图:
规则配置语法
facility.priority action(设备.级别 动作)
其中,
-
设备级别有:
- authpriv:与安全、认证相关的信息
- cron:与cron和at有关的信息
- daemon:没有明确设备定 义的守护进程的信息
- ftp:报告ftp守护进程的信息
- kern:报告与内核有关的信息
- lpr:报告与打印服务有关的信息
- mail:报告与邮件服务有关的信息
- news:报告与网络新闻服务有关的信息
- syslog:报告由syslog生成的信息
- user:报告一般的用户级别信息
- uucp:由UUCP子系统生成的信息
- local0-local7:保留给本地其他应用程序使用
-
日志级别:
- 0EMERG(紧急):会导致主机系统不可用的情况
- 1ALERT(警告):必须马上采取措施解决的问题
- 2CRIT(严重):比较严重的情况
- 3ERR(错误):运行出现错误
- 4WARNING (提醒):可能会影响系统功能的事件
- 5NOTICE(注意):不会影响系统但值得注意
- 6INFO(信息):一般信息
- 7DEBUG(调试):程序或系统调试信息等
- none:用于禁止任何日志消息
-
facility.priority语法
- 可以在同一行中设置多个“设备.级别”组合,每组之间用分号隔开
- 可以同时指定多个设备或级别,用逗号隔开
- 可以使用通配符*标识所有的设备或级别
- 级别的指定
- 直接指定:记录比指定级别高的所有级别的消息
- 使用=前缀:只记录指定级别的日志消息
- 使用!前缀:不记录比指定级别高的所有级别的消息
- 使用!=前缀:不记录指定级别的日志消息
- none:用于禁止任何日志消息
-
目标动作(也就是发送消息给谁)
- 常规文件
- 将日志记录于文件:以“/”开始的全路径文件名
- [-]/path/filename
- 文件名之前的减号(-)表示对文件的写入同时不立即同步到磁盘,这样可以加快日志写入速度
- 终端设备
- 将日志发送到终端:/dev/console,/dev/ttyX
- 命名管道
- 将日志记录到命令管道,用于日志调试非常方便
- | named_pipe
- @host
- 远程的日志服务器
- username
- 发送信息到本机的指定用户终端中,前提是该用户必须已经登录到系统中
- 常规文件
举例
- 把邮件除info级别外都写入到mail文件中
1 | mail.*;mail.!=info /var/adm/mail |
- 仅把邮件的通知性消息发送到tty12终端设备
1 | mail.=info /dev/tty12 |
- n如果root和Joey用户已经登录到系统,则把所有紧急信息通知给他们
1 | *.alert root,joey |
- 把所有信息都发送到192.168.3.100主机
1 | *.* @192.168.3.100 |