Rsyslog

Rsyslog 是新的日志守护进程,它从 RHEL6 开始与旧的 syslog-ng 守护进程竞争。
rsyslog 守护进程比 syslog-ng 提供的好处很少:

  1. 可靠的网络
    Rsyslog 使用 TCP 而不是更可靠的 UDP。
    TCP 使用确认和重传功能。

使用 Rsyslog 守护程序,如果 rsyslogd 无法将消息传递到特定目的地,我们可以指定多个目标主机/文件用于消息传递。

  1. 精度
    可以根据日志消息的任何部分而不是消息的优先级和原始设施来过滤消息。

支持精确的时间戳来记录 syslog 守护进程的消息。

  1. 其他功能
    TLS 加密
    能够登录到 SQL 数据库。

Logwatch

RHEL 系统还附带 logwatch 包。

Logwatch 用于分析日志以识别任何有趣的消息。

Logwatch 可以配置为分析来自流行服务的日志文件和电子邮件管理员的结果。

可以每小时或者每晚为任何可疑活动配置它。
默认情况下,在 RHEL 系统中,它每晚运行一次,并将报告通过邮件形式发送给 root 用户。

日志轮换

日志文件会随着时间的推移而定期增长,因此需要定期修剪它们。
Linux 提供了一个实用程序,无需用户干预即可提供此功能。
logrotate 程序可用于自动执行日志文件轮换。
基本的 logrotate 配置在配置文件 /etc/logrotate.conf 中完成。
在配置文件中,我们可以设置一些选项,例如应该多久轮换日志以及要保留多少旧日志。

# cat /etc/logrotate.conf
weekly
rotate 4
create
include /etc/logrotate.d
/var/log/wtmp {
    monthly
    minsize 1M
    create 0664 root utmp
    rotate 1
}

根据上面的 logrotate 配置文件,日志每周轮换一次(将现有日志重命名为 filename.number 顺序):
如果文件大小等于或者大于 1 MB,则 minsize 1M logrotate 运行并修剪消息文件。

rotate 4轮换时保留最近的 4 个文件。

create创建新文件,同时使用指定的权限和所有权旋转。

include包含此处提到的用于守护程序特定日志轮换设置的文件。

# ls -l /var/log/messages*
-rw------- 1 root root   1973 Jun 10 15:07 /var/log/messages
-rw------- 1 root root  10866 Jun  6 04:02 /var/log/messages.1
-rw------- 1 root root  19931 Jan 30 04:02 /var/log/messages.2
-rw------- 1 root root 238772 Jan 23 04:02 /var/log/messages.3
-rw------- 1 root root 171450 Jan 14 18:29 /var/log/messages.4

logrotate 守护进程主要从 /etc/logrotate.conf 文件中读取所有配置,然后从 /etc/logrotate.d/ 目录中包含守护进程特定的配置文件。

logrotate 守护进程连同旧日志的轮换和删除,允许压缩日志文件。

守护进程每天从 /etc/cron.daily/logrotate 运行。

Rsyslog配置文件

rsyslogd 守护程序的配置文件 /etc/rsyslog.conf 用于处理所有消息。
配置文件基本上提供了规则语句,而规则语句又提供了两件事:

  1. 选择器
  • 要匹配的消息。
  • 选择器由用点 (.) 分隔的设施和优先级组成(例如 mail.info)
  1. 行动
  • 如何处理匹配的消息 - 通常是记录消息的目的地(本地机器或者远程主机上的文件)

选择器和动作

选择器由设施和优先级两部分组成。
它们指定要匹配的消息。
action 字段指定要应用于匹配消息的操作。
例如 :

kern.debug 			/var/log/kernlog

带有内核和优先级调试功能的消息被记录到文件 /var/log/kernlog 中。

优先级声明在选择器中是分层的。
Rsyslog 匹配具有指定优先级和更高优先级的所有消息。
因此,来自具有优先级调试和更高优先级的内核的所有消息都会被记录下来。
Debug 是最低优先级,所有具有设备内核的消息都匹配。

另一种方法是使用星号 (*)。
例如 :

kern.* 			/var/log/kernlog

可以在以分号分隔的一行中指定多个选择器。
当需要对多条消息应用相同的操作时,这很有用。

当文件在操作字段中列出时,匹配的消息将写入文件。

可以有其他设备(例如 FIFO、终端等)来写入消息。

如果用户名列在操作字段中,则匹配的消息将打印给所有登录的用户。

(*) 在 action 字段中指定

了解 rsyslog 操作

CentOS/RedHat:日志文件管理

系统日志守护进程负责记录应用程序或者内核生成的系统消息。
系统日志守护进程也支持远程日志记录。
消息按设施和优先级进行区分。
原则上,syslog 处理的日志在 Linux 系统的 /var/log/ 目录中:

# ls /var/log
acpid            cron.1     maillog.3         rpmpkgs.3         spooler.3
anaconda.log     cron.2     maillog.4         rpmpkgs.4         spooler.4
anaconda.syslog  cron.3     messages          sa                squid
anaconda.xlog    cron.4     messages.1        samba             tallylog
audit            cups       messages.2        scrollkeeper.log  vbox
boot.log         dmesg      messages.3        secure            wtmp
boot.log.1       faillog    messages.4        secure.1          Xorg.0.log
boot.log.2       gdm        oracle-validated  secure.2          Xorg.0.log.old
boot.log.3       httpd      pm                secure.3          YaST2
boot.log.4       lastlog    ppp               secure.4          yum.log
btmp             mail       prelink           setroubleshoot
conman           maillog    rpmpkgs           spooler
conman.old       maillog.1  rpmpkgs.1         spooler.1
cron             maillog.2  rpmpkgs.2         spooler.2

其中一些日志被转储到像cups、samba、httpd这样的子目录下。
在/var/log 下的日志中,/var/log/messages 是最常见的,因为内核/核心系统日志保存在那里。
内核模块通常也会在那里转储。
因此,对于问题诊断/监控,/var/log/messages 是要检查的主要日志文件。

系统日志守护进程/服务及其配置文件因使用的 Linux 版本而异,即:

RHEL 5: syslogd -  /etc/syslog.conf
RHEL 6: rsyslogd - /etc/rsyslog.conf

优先事项

消息的优先级表示该消息的重要性。
下表列出了标准优先级及其含义:

优先级描述
emerg系统无法使用
alert必须立即采取行动
crit临界条件
err错误条件
warning警告条件
notice正常但重要
info信息性消息
debug调试信息
更多: zhilu jiaocheng

facility

facility是用于指定生成消息的程序或者应用程序的类型。
从而使 syslog 守护进程能够以不同的方式处理不同的源。
下表列出了标准设施及其说明:

Facility说明
auth/authpriv安全/授权消息(私有)
cron时钟守护进程(crond 和 atd 消息)
daemon来自没有单独设施的系统守护进程的消息
kern内核消息
local0 – local7保留供本地使用
lpr行式打印机子系统
mail来自邮件守护进程的消息
newsUSENET新闻子系统
syslog系统日志守护进程内部生成的消息
user通用用户级消息
uucpUUCP子系统
日期:2020-09-17 00:12:51 来源:oir作者:oir