原创系统笔记

linux检索日志信息

本文阅读 6 分钟
首页 系统笔记 正文

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 命令应运而生。journalctl 命令用于检索和管理系统日志信息,英文全称为“journal control”,语法格式为“journalctl 参数”。它可以根据事件、类型、服务名称等信息进行信息检索,从而大大提高了日常排错的效率。journalctl 命令的常见参数如表所示。

参数作用
-k内核日志
-b启动日志
-u指定服务
-n指定条数
-p指定类型
-f实时刷新(追踪日志)
--since指定时间
--disk-usage占用空间

首先查看系统中最后 5 条日志信息:

[root@serverA ~]# journalctl -n 5   //查看系统中最后5条日志信息

还可以使用 -f 参数实时刷新日志的最新内容(这与 tail -f /var/log/message 命令的效果相同):

[root@serverA ~]# journalctl -f   //实时刷新日志的最新内容

在 rsyslog 服务程序中,日志根据重要程度被分为 9 个等级,如表所示。这样的好处是可以直击最重要的信息,而不用担心会被海啸般的输出内容所淹没。备用日后工作中进行查阅。

日至等级说明
emerg系统出现严重故障,比如内核崩溃
alert应立即修复的故障,比如数据库损坏
crit危险性较高的故障,比如硬盘损坏导致程序运行失败
err危险性一般的故障,比如某个服务启动或运行失败
warning警告信息,比如某个服务参数或功能出错
notice不严重的一般故障,只是需要抽空处理的情况
info通用性消息,用于提示一些有用的信息
debug调试程序所产生的信息
none没有优先级,不进行日志记录

如果只想看系统中较高级别的报错信息,可以在 journalctl 命令中用 -p 参数进行指定:

[root@serverA ~]# journalctl -p crit    //查看更高级别的报错信息

还可以用--since 参数按照今日(today)、近 N 小时(hour)、指定时间范围的格式进行检索,找出最近的日志数据。

[root@serverA ~]# journalctl --since today   //仅查询今日的日志信息:
[root@serverA ~]# journalctl --since "-1 hour"  //仅查询最近1小时的日志信息
[root@serverA ~]# journalctl --since "12:00" --until "14:00"   //仅查询 12 点整到 14 点整的日志信息
[root@serverA ~]# journalctl --since "2022-01-01" --until "2022-12-12"
//仅查询从 2020 年 7 月 1 日至 2020 年 8 月 1 日的日志信息
[root@serverA ~]# journalctl -u sshd  //查询SSH服务的日志信息
原创文章,作者:張旭,如若转载,请注明出处:http://www.zxbke.cn/69.html/

发表评论