本文最后更新于 2024-04-16,文章内容可能已经过时。

前言

日志不用多说,这是在Linux中进行故障排除的重要消息来源。因此在操作Linux的时候学会如何查找和准确的解读系统事件日志是很重要的技能。当Linux出现任何问题的时候,这些日志或许可以救了我们的狗命(
本章将会了解Syslog的基本解读方法。
环境使用了Red Hat Enterprise Linux。

系统日志记录


系统级日志记录记录了系统内核和其他进程为系统运行时发生的事件记录日志,这些日志可以用于对系统进行故障排除。并可以使用lesstail命令来简化这些日志。

对于Red Hat Linux来说,一般是 systemd-journald 和 rsyslog 来处理syslog消息,对于其他Linux发行版可能会有些许不同。

systemd-journald 用于将日志重构为一种标准可读的格式,并写进带有索引的结构化系统日志中,但默认情况下这些日志在系统重启后并不会保留在系统上。

rsyslog 用于将从 systemd-journald 收到的 syslog信息进行排序,并将它们保存到/var/log目录下。

以下是除了syslog消息以外的其他服务日志文件。

日志文件

简介

/var/log/messages

大多数的系统日志都在这里。包括身份验证、电子邮件处理和调度作业执行等相关信息

/var/log/secure

与安全性和身份验证事件相关的syslog日志

/var/log/maillog

与邮件服务器相关的syslog日志

/var/log/cron

与调度作业执行相关的syslog日志

/var/log/boot.log

与系统启动以及系统内核相关的非syslog日志

不仅仅是syslog,比如Niginx,Apache网页服务器会将它们的日志消息保存到/var/log目录中的其中一个子目录下。

Syslog 代码


Syslog会将事件根据生成的子系统设备代码和优先级进行分类,以下是一些标准的Syslog设备描述。

代码

设备

设备描述

0

kern

内核消息

1

user

用户级消息

2

mail

邮件系统消息

3

daemon

系统守护进程消息

4

auth

身份验证和安全消息

5

syslog

内部 syslog 消息

6

lpr

打印机消息

7

news

网络最新消息

8

uucp

UUCP 协议消息

9

cron

时钟守护进程消息

10

authpriv

非系统授权消息

11

ftp

FTP 协议消息

16-23

local0 到 local7

自定义本地消息

Syslog 优先级


下表是各类代码及其优先级解释

代码

优先级

优先级描述

0

emerg

系统不可用

1

alert

必须立即采取措施

2

crit

临界情况

3

err

非严重错误状况

4

warning

警告情况

5

notice

正常但重要的事件

6

info

信息性事件

7

debug

调试级别消息

分析 Syslog 日志


日志的开头显示的是最旧最冷的消息,反之在日志的末尾则是最新最热的消息,一般阐述着问题发生的最后时刻这系统在干啥。

这是我们可以使用

tail -f /var/log/xxxxx

命令来输出指定文件的最后10行,这样我们看到的日志在大多数情况下就是最新最热的了!

以下是一个示例的日志消息:

Jun 16 12:44:48 localhost sshd[1433]: Failed password for japerz from 114.51.41.9 port 19810 ssh2 
  • Jun 16 12:44:48 : 记录的日志的时间戳

  • localhost : 发送日志的主机

  • sshd[1433] : 发送日志的程序或者进程名及PID编号

  • Failed password ... : 发送的日志消息

解答:在6月16日 12点44分48秒由进程sshd,PID1433的程序从localhost主机发送了一条来自IP 114.51.41.9,端口19810的ssh2尝试登陆账号japerz但密码错误。

后记

看到很多人在用Linux的时候遇到错误就立刻准备开始重装。在重装前不如先通过这些简单易懂的日志文件找到问题的所在,尝试解决后如果还是不行再重装。但了解到问题所在之后,下一次你也许就不会再碰到这个问题了。经验就是如此累积下来的。