rsyslog日志
目标
描述红帽企业linux用于记录时间的基本日志架构。
名词定义
- 系统日志记录
进程和操作系统内核为发生的事件记录日志。这些日志用于系统审查和问题的故障排除。
许多系统都以文本文件的方式记录事件日志,而这些文件就保存在/var/log目录中。可以使用常规文本实用程序检查这些日志。(less、tail)
红帽企业linux中内建了一个基于syslog协议的标准日志记录系统。许多程序使用此系统记录事件,并将它们整理到日志文件中。system-journald和rsyslong服务处理红帽企业Linux8中的syslog消息。
systemd-journald服务时操作系统事件日志架构的核心。它收集许多来源的事件消息,包括内核、引导过程早期阶段的输出、守护进程启动和运行时的标准输出及标准错误,以及syslog事件。然后,它会将它们重构为一种标准格式,并写进带有索引的结构化系统日志中。默认情况下,该日志存储在系统重启后不保留的文件系统上。
不过,rsyslog服务会从日志中读取systemd-journald收到的syslog消息。之后,它将处理syslog事件,将它们记录到日志文件中,或根据自己的配置将它们转发给其他服务。
rsyslog服务对syslog消息进行排序,并将它们写入到在系统重启后不保留的日志文件中(/var/log)。rsyslog服务会根据发送每条消息的程序类型或设备以及每条syslog消息的优先级,将日志消息排序到特定的日志文件。
除了syslog消息文件外,/var/log目录中还包含系统上其他服务的日志文件。
所选的系统日志文件
| 日志文件 | 存储的消息类型 |
|---|---|
| /var/log/messages | 大多数系统日志消息记录在此处。例外包括与身份验证、电子邮件处理和调度作业执行的相关的消息以及纯粹与调试相关的消息。 |
| /var/log/secure | 与安全性和身份验证事件相关的syslog消息。 |
| /var/logmaillog | 与邮件服务器相关的syslog消息。 |
| /var/log/cron | 与调度作业执行的相关syslog消息。 |
| /var/log/boot.log | 与系统启动相关的非syslog控制台消息。 |
Syslog优先级概述
| 代码 | 优先级 | 严重性 |
|---|---|---|
| 0 | emerg | 系统不可用 |
| 1 | alert | 必须立即采取措施 |
| 2 | crit | 临界情况 |
| 3 | err | 非严重错误状况 |
| 4 | warning | 警告情况 |
| 5 | notice | 正常但重要的事件 |
| 6 | info | 信息性事件 |
| 7 | debug | 调试级别消息 |
rsyslog服务使用日志消息的设备和优先级来确定如何进行处理。其配置规则位于/etc/rsyslog.conf和/etc/rsyslog.d目录中拓展名为.conf的任何文件。
每个控制着syslog消息排序方式的规则都对应了其中一个配置文件的一行。每行左侧表示与规则匹配的syslog消息的设备和严重性。每行右侧表示要将日志消息保存到的文件。星号是一个匹配所有值的通配符。
实操演示
- rsyslog日志配置文件
文件路径为:/etc/rsyslog.conf
目录路径为:/etc/rsyslog.d/
#### RULES ####
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
##除了邮件、认证、定时任务不写入到messages中
# The authpriv file has restricted access.
authpriv.* /var/log/secure
# Log all the mail messages in one place.
mail.* -/var/log/maillog
# Log cron stuff
cron.* /var/log/cron- 日志轮转功能logrotate
[root@jenkins cron.daily]# cd /etc/logrotate.d/
[root@jenkins logrotate.d]# ls
bootlog glusterfs libvirtd ppp sssd yum
chrony iscsiuiolog libvirtd.qemu psacct syslog
cups jenkins numad samba wpa_supplicant
##日志轮转服务配置文件
[root@jenkins logrotate.d]# vim /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
weekly
##轮回时长为一周
# keep 4 weeks worth of backlogs
rotate 4
##只保留4周的日志
# create new (empty) log files after rotating old ones
create
##创建新的日志文件
# use date as a suffix of the rotated file
dateext
##旧的日志文件以时间为后缀
# uncomment this if you want your log files compressed
#compress
##是否启用压缩处理
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
##子配置文件
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
##创建新文件的权限为644属主为root数组为utmp
minsize 1M
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
# system-specific logs may be also be configured here.
##logrotatep子配置文件
[root@jenkins logrotate.d]# vim syslog
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
missingok
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
##通过给程序发射信号,重新读取日志文件,来实现日志转轮