Linux 系统日志详解

Posted by Xavier Blog on January 4, 2024

“Yeah It’s on. ”

日志文件的作用

日志文件是用于记录 Linux 系统中各种运行信息的文件,相当于 Linux 主机的“日记”不同的日志文件记载了不同类型的信息,如 Linux 内核消息、用户登录事件、程序错误等日志文件对于诊断和解决系统中的问题很有帮助,因为在 Linux 系统中运行的程序通常会把系统消息和错误消息写入相应的日志文件,这样系统一旦出现问题就会“有据可查”。此外,当主机遭受攻击时,日志文件还可以帮助寻找攻击者留下的痕迹。

日志文件的分类

(1)内核及系统日志

内核及系统日志: 这种日志数据由系统服务 rsyslog 同一管理,根据其主配置文件 /etc/rsyslog.conf 中的设置决定将内核消息及各种系统程序消息记录到什么位置。系统中大部分的程序会把自己的日志文件交由 rsyslog 管理,因而这些应用程序使用的日志记录格式都很相似。

image-20240105102613915

(一部分)

(2)用户日志

用户日志:用于记录 Linux 系统用户登录及退出系统的相关信息,包括用户名、登录的终端、登录时间、来源主机、正在使用的进程操作等。

image-20240105102831033

(3)程序日志

程序日志:有些应用程序会选择由自己独立管理一份日志文件,而不是交给 rsyslog 服务管理,用于记录本程序运行过程中的各种事件信息。由于这些程序只负责管理自己的日志文件,因此不同程序所使用的日志记录格式也会存在较大的差异。

日志文件的位置

Linux 系统本身和大部分服务器程序的日志文件默认放在/var/log/下。一部分程序共用一个日志文件,一部分程序使用单个日志文件。而有些大型服务器程序日志由于日志文件不止一个,所以会在/var/log/目录中建立相应的子目录来存放日志文件,这样既保证了日志文件目录的结构清晰,又可以快速定位日志文件。有一部分日志文件只有 root 用户才有权限读取,这保证了相关日志信息的安全性。

image-20240105103045513

messages最重要

常见的日志文件及查看方式

日志文件 存放内容 查看命令
/var/log/messsages 内核消息及各种应用程序的公共日志信息,包括启动、I/O 错误、网络错误、程序故障等 cat等
/var/log/lastlog 每个用户最近的登录事件 last、lastlog
/var/log/btmp 失败的、错误的登录尝试及验证事件 lastb

日志消息的级别

级别 英文表示及翻译 意义
0 KERN_EMERG(紧急) 会导致主机系统不可用的情况
1 KERN_ALERT(警告) 必须马上采取措施解决的问题
2 KERN_CRIT(严重) 比较严重的情况
3 KERN_ERR(错误) 运行出现错误
4 KERN_WARNING(警告) 表示可能存在潜在的问题,虽然当前没有影响到系统功能,但未来可能会导致问题。
5 KERN_NOTICE(通知) 比INFO级别稍微重要一些的信息,通常是值得注意但不是错误的情况。
6 KERN_INFO(信息) 提供一般性的信息,比如服务启动、配置加载等常规操作。
7 KERN_DEBUG(调试) 用于开发过程中的调试信息,记录详细的内部状态和变量值。

(一般0-2看不到)

通过调整/proc/sys/kernel/printk文件,可以设置控制台的日志输出级别。这个文件包含四个数字,分别代表:控制台日志级别、默认的消息日志级别、最小的控制台日志级别、默认的控制台日志级别。例如,echo 1 4 1 7 > /proc/sys/kernel/printk命令设置了控制台只显示级别为KERN_ALERT及以上的消息。

1
grep -E -iw "emerg|alert|critical|error" /var/log/messages

日志文件分析

时间标签:消息发出的日期和时间

主机名:生成消息的计算机的名称

子系统名称:发出消息的应用程序的名称

消息: 消息级别和具体内容

日志文件分析注意事项

总的来说,作为一名合格的系统管理人员,应该提高警惕,随时注意各种可疑的状况,定期并随机的检查各种系统日志文件,包括一般信息日志、网络连接日志、文件传输日志及用户登录日志记录等。在检查这些日志时,要注意是否有不合常理的时间或操作记录。

  • 用户在非常规的时间登录,或者用户登录系统的IP 地址和以往不一样的
  • 用户登录失败的日志记录,尤其是那些一再连续尝试进入失败的日志记录
  • 非法使用或不正当使用超级用户权限
  • 无故或者非法重新启动各项网络服务的记录
  • 不正常的日志记录,如日志残缺不全,或者是诸如 wtmp 这样的日志文件无故缺少了中 间的记录文件

日志管理:

  • 针对日志定期备份、异地备份(保留 1~3 个月的日志记录)
  • 针对日志定期切割(00*** mv /var/log/messages /var/log/messages-$(date -d”-1 days”+%F))
  • 针对日志的权限要严格(为了防止敏感信息泄露)
  • 针对日志做集中管理