Linux rsyslog服务
系统日志
进程和操作系统内核需要能够为发生的事件记录日志,这些日志可用于系统审核和问题的故障排查。依照惯例,这些日志永久存储在/var/log目录中。
Redhat 7中系统的日志消息由两个服务负责处理,它们是system-journald和rsyslog。
rsyslogd |
专门用于管理日志的服务 |
/etc/rsyslog.conf |
[[email protected] ~]# systemctl is-enabled rsyslog.service
enabled
[[email protected] ~]# systemctl is-active rsyslog.service
active
systemd-journald守护进程提供一种改进的日志管理服务,可以收集来自内核,启动过程的早期阶段,标准输出,系统日志,以及守护进程启动和运行期间错误消息。它将这些消息写入到一个结构化事件日志中,默认情况下不在重新启动之间保留。这允许系统日志错过的系统日志消息和事件收集到一个中央数据库中。系统日志消息也可以systemd-journald转发到rsyslog做进一步处理。
rsyslog服务随后根据类型(或者设备)和优先级排列系统日志消息,将它们写入到/var/log目录内的永久文件。
/var/log目录保管由rsyslog维护的各种特定系统和服务的日志文件。
系统日志文件
许多程序使用syslog协议将事件记录到系统,每一日志消息根据设备(消息类型)和优先级(消息严重性)分类。
rsyslogd服务使用日志消息的设备和优先级来确定如何处理。这通过/etc/rsyslog.conf文件,以及/etc/rsyslog.d中的*.conf文件进行配置。程序和管理员可以将带有.conf后缀的自定义文件放入/etc/rsyslog.d目录,以更改rsyslogd配置而不被rsyslog更新所覆盖。
etc/rsyslog.conf的####RULES####部分包含定义日志消息保存位置的相关指令。每行左侧表示指令匹配的日志消息的设备和严重性。Rsyslog.conf文件的设备和严重性字段中可能包含*字符作为通配符,代表所有设备或所有严重性级别。每行右侧表示要将日志消息保存到的文件。日志消息通常保存在/var/log目录中。
注意:日志文件由rsyslog服务维护,/var/log目录中包含各种特定于某些服务的日志文件。例如,Apache Web服务器或者samba将自己的日志写入到/var/log目录中对应的子目录。
rsys处理的消息可能会出现在多个不同的日志文件中。为了避免这种情况,可以将严重性字段设为none,表示定向到这一设备的所有消息都不添加到指定的日志文件中。
rsyslog服务的配置文件
[[email protected] etc]# cat rsyslog.conf
# rsyslog configuration file
# 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
# 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
# Everybody gets emergency messages
*.emerg :omusrmsg:*
# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler
# Save boot messages also to boot.log
local7.* /var/log/boot.log
可以看到在配置文件里面最关键的就是 事件.级别 文件
实际产生的事件级别>=定义的事件级别,会被记录到日志中
文件名 |
- |
非同步 |
先往内存中写,当内存中的数据达到一定量的时候,在统一往硬盘中输入。提高速率。比较消耗内存 |
同步 |
往内存中写一点数据,就立刻往磁盘中写 |
|
|
创建本地日志
(1)在本地创建记录日志的文件
[[email protected] etc]# touch /var/log/test.log
(2)在rsyslog.conf里面加入要加了的事件,事件级别和记录到哪个文件里面。
# Save boot messages also to boot.log
local7.* /var/log/boot.log
local5.* /var/log/test.log
加上红色这一行,记录的事件是local5,*代表所有事件级别都会记录到/var/log/test.log当中
(3)修改了配置文件后重启一下服务
[[email protected] etc]# systemctl restart rsyslog.service
(4)使用logger发送系统日志消息
logger命令可以发送消息到rsyslog服务。默认情况下,它将严重性位notice(user.notice)的消息发送给设备用户,除非通过-p选项另外指定,测试对于rsyslog配置的更改将特别有用。
[[email protected] etc]# logger -p local5.info "hellow world"
(5)查看结果
[[email protected] etc]# cat /var/log/test.log
Apr 23 13:11:01 server0 root: hellow world