九、日志分析和系统故障排查
目录
- 1、日志分析
- 1.1、日志介绍
- 1.1.1、日志的功能
- 1.1.2、日志文件的分类
- 1.1.3、日志保存位置
- 1.2、rsyslog服务
- 1.2.1、发送日志到远程日志服务器
- 1.3、查看日志文件
- 1.3.1、/var/log/messages文件的内容示例
- 1.3.2、用户登录、退出系统的相关日志
- 1.4、日志级别
- 1.5、程序日志分析
- 1.6、日志管理策略
- 1.7、小结
- 2、系统故障排查及处理
- 2.1、Linux系统启动过程
- 2.2、排除故障的基本原理
- 2.3、系统故障修复示例
- 2.3.1、修复MBR扇区故障
- 2.3.2、修复GRUB引导故障和内核文件损坏
- 2.3.3、遗忘root密码
- 2.3.4、救援模式、急救模式、单用户模式的区别
- 2.3.5、inode节点耗尽故障
- 2.3.6、检测磁盘坏道
1、日志分析
1.1、日志介绍
1.1.1、日志的功能
- 用于记录系统、程序运行中发生的各种事件
- 通过阅读日志,有助于诊断和解决系统故障
1.1.2、日志文件的分类
- 内核及系统日志
由系统服务syslog统一进行管理,日志格式基本相似 - 用户日志
记录系统用户登录及退出系统的相关信息 - 程序日志
由各种应用程序独立管理的日志文件,记录格式不统一
1.1.3、日志保存位置
默认位置:/var/log/
主要的日志文件
在Linux系统中,有三个主要的日志子系统。
1.连接时间日志
由多个进程执行,把记录写入到/var/log/wtmp和/var/run/utmp文件中,login等进程更新/var/log/wtmp和/var/run/utmp文件,使得系统管理员能够知道谁在何时登录到系统。
2.进程统计
由系统内核执行。当一个进程终止时,向该进程的进程统计文件中写入一条记录。进程统计的目的是为系统中的基本服务提供命令使用统计。
3.错误日志
各种系统守护进程、用户程序和内核通过rsyslog服务向文件/var/log/messages报告值得注意的事件。另外,有许多Linux程序创建日志,像HTTP和FTP这样提供网络服务的服务器也保持详细的日志。
1.2、rsyslog服务
系统内核和许多系统程序会产生错误信息、警告信息和其他信息。这些信息会被写到一个文件中,执行这个过程的服务就是rsyslog。
rsyslog已被许多日志函数采用,它被用在许多保护措施中。任何程序都可以通过rsyslog服务记录事件。rsyslog服务可以记录系统事件,可以写到一个文件或设备中,或给用户发送一个信息。它能记录本地事件或者通过网络记录另一个主机上的事件。
rsyslog服务依赖于两个重要的文件:/etc/init.d/rsyslog(守护进程)和/etc/rsyslog.conf配置文件。习惯上,多数rsyslog信息被写到/var/log目录下的文件中。一个典型的rsyslog记录包括生成程序的名字和一个文本信息,它还包括一个日志内容和一个级别范围(但不在日志中出现)。
1.2.1、发送日志到远程日志服务器
编辑/etc/rsyslog.conf文件
在日志客户端上修改/etc/rsyslog.conf文件,指定日志服务器为192.168.0.2,在该文件末尾添加以下内容。@192.168.0.2
*.* @ 192.168.0.2:514 //使用 @:通过 UDP 发送日志,传输快但不保证可靠性。
*.* @@ 192.168.0.2:514 //使用 @@:通过 TCP 发送日志,传输稍慢但保证数据的可靠性。
1.3、查看日志文件
Linux日志文件是纯文本的文件,每一行就是一个消息。只要是在Linux系统下能够处理纯文本的工具都能用来查看日志文件。日志文件总是非常的大,因为从第一次启动Linux系统开始,信息就都累积在日志文件中。
1.3.1、/var/log/messages文件的内容示例
May 8 17:21:01 localhost chronyd[664]: Selected source 211.68.71.118
时间 主机名 子系统名 PID 消息字段
1.3.2、用户登录、退出系统的相关日志
在 Linux 系统中,用户登录和退出(注销)的相关日志通常可以通过几个不同的文件和命令来查看。这些日志对于系统管理员来说非常重要,因为它们提供了关于谁何时访问了系统的信息。以下是一些查看这些信息的方法:
/var/log/wtmp 文件
- wtmp 文件记录了所有的登录和登出事件。
- 使用 last 命令可以读取这个文件并显示历史登录记录。
[root@localhost ~]# last
root pts/0 172.22.1.254 Wed May 8 17:34 still logged in
reboot system boot 3.10.0-1160.114. Wed May 8 17:34 - 20:29 (02:54)
root pts/1 172.22.1.254 Wed May 8 17:02 - down (00:32)
root pts/0 172.22.1.254 Tue Apr 30 09:13 - down (8+08:20)
reboot system boot 3.10.0-1160.114. Tue Apr 30 08:16 - 17:34 (8+09:17)
root tty1 Mon Apr 29 23:57 - 23:57 (00:00)
reboot system boot 3.10.0-1160.114. Mon Apr 29 23:56 - 17:34 (8+17:37)
root pts/0 172.22.1.254 Mon Apr 29 23:50 - down (00:05)
reboot system boot 3.10.0-1160.114. Mon Apr 29 23:49 - 23:55 (00:06)
root pts/0 172.22.1.254 Mon Apr 29 23:43 - crash (00:06)
root tty1 Tue Apr 30 07:39 - 23:49 (-7:-49)
reboot system boot 3.10.0-1127.el7. Tue Apr 30 07:38 - 23:55 (-7:-42)
这个命令会列出所有用户的登录和登出记录,包括从哪个 IP 地址登录、登录和登出时间等信息。
/var/log/btmp 文件
btmp 文件记录了登录失败的尝试。
使用 lastb 命令(可能需要 root 权限)可以查看失败的登录尝试。
[root@localhost ~]#