Linux系统拥有十分强大且灵活的日志系统,用于保存几乎所有的操作记录和服务运行状态,并且按照“报错”“警告”“提示”和“其他”等标注进行了分类。
运维管理员可以根据所需的信息进行检索,快速找出想要的信息,因此对于了解系统运行状态有着不错的帮助作用。
在RHEL 8系统中,默认的日志服务程序是rsyslog。可以将rsyslog理解成之前的syslogd服务的增强版本,它更加注重日志的安全性和性能指标。
为了便于日后的检索,不同的日志信息会被写入到不同的文件中。在Linux系统中,常见的日志文件如下所示。
常见的日志文件保存路径
文件路径及命令 作用
/var/log/boot.log
/var/log/lastlog 用户登录成功时间、终端名称及IP地址等信息
/var/log/btmp 记录登录失败的时间、终端名称及IP地址等信息
/var/log/messages 系统及各个服务的运行和报错信息
/var/log/secure
/var/log/wtmp
在日常工作中,/var/log/message这个综合性的文件用得最多。
在处理Linux系统中出现的各种故障时,一般是最先发现故障的症状,而找到故障的原因则一定离不开日志信息的帮忙。
从理论上讲,日志文件分为下面3种类型。
系统日志:主要记录系统的运行情况和内核信息。
用户日志:主要记录用户的访问信息,包含用户名、终端名称、登入及退出时间、来源IP地址和执行过的操作等。
程序日志:稍微大一些的服务一般都会保存一份与其同名的日志文件,里面记录着服务运行过程中各种事件的信息;每个服务程序都有自己独立的日志文件,且格式相差较大。
journalctl命令用于检索和管理系统日志信息,英文全称为“journal control”,语法格式为“journalctl参数”。它可以根据事件、类型、服务名称等信息进行信息检索,从而大大提高了日常排错的效率。journalctl命令的常见参数如下所示。
journalctl命令中常用按键以及作用
参数 作用
-k
-b
-u
-n
-p
-f
--since
--disk-usage
使用举例:
[root@linuxprobe ~]# journalctl -n 10
[root@linuxprobe ~]# journalctl -f //实时刷新日志信息,效果与#tail -f /var/log/message相同
在rsyslog服务程序中,日志根据重要程度被分为9个等级,如下所示。这样的好处是,我们可以直击最重要的信息,而不用担心会被海啸般的输出内容所淹没。
日志信息登记分类
日志等级 说明介绍
emerg
alert
crit
err
warning
notice
info
debug
none
[root@linuxprobe ~]# journalctl -p crit
[root@linuxprobe ~]# journalctl -p err //查看err级别的日志信息
[root@linuxprobe ~]# journalctl --since today
[root@linuxprobe ~]# journalctl --since "-1 hour"
[root@linuxprobe ~]# journalctl --since "8:00" --until "12:00"
[root@linuxprobe ~]# journalctl --since "2021-07-01" --until "2021-10-31"
[root@linuxprobe ~]# journalctl -u sshd.service //查看某个服务(sshd)的日志信息