Linux系统故障分析与排查--日志分析
处理Linux系统出现的各种故障时,故障的症状是最先发现的,而导致这以故障的原因才是最终排除故障的关键。熟悉Linux系统的日志管理,了解常见故障的分析与解决办法,将有助于管理员快速定位故障点,“对症下药”及时解决各种系统问题。
一、主要日志文件包括以下三种类型:
a.内核及系统日志:这种日志数据由系统服务syslog统一管理,根据其主配置文件"/etc/syslog.conf"中的设置决定将内核消息及各种系统程序消息记录到什么位置。系统中有相当一部分程序会把自己的日志文件交由syslog管理,因而这些程序使用的日志记录也具有相似的格式。
b.用户日志:这种日志数据用于记录Linux系统用户登录及退出系统的相关信息,包括用户名、登录的终端、登录时间、来源主机、正在使用的进程操作等。
c.程序日志:有些应用程序运会选择自己来独立管理一份日志文件(而不是交给syslog服务管理),用于记录本程序运行过程中的各种事件信息。由于这些程序只负责管理自己的日志文件,因此不同的程序所使用的日志记录格式可能会存在极大差异。
#列表查看"/var/log"目录中的各种日志文件及子目录。
对于Linux系统中的一些常见日志文件,有必要熟悉其相应的用途,这样才能在需要的时候更快地找到问题所在,及时解决各种故障。如:
1. >/var/log/messages:记录Linux内核消息及各种应用程序的公共日志信息,包括启动、IO错误、网络错误、程序故障等。对于未使用独立日志文件的应用程序或服务,一般都可以从该文件获得相关的事件记录信息。
2. >/var/log/cron:记录crond计划任务产生的事件消息。
3. >/varlog/dmesg:记录Linux系统在引导过程中的各种事件信息。
4. >/var/log/maillog:记录进入或发出系统的电子邮件活动。
5. >/var/log/lastlog:最近几次成功登录事件和最后一次不成功登录事件。
6. >/var/log/rpmpkgs:记录系统中安装各rpm包列表信息。
7. >/var/log/secure:记录用户登录认证过程中的事件信息。
8. >/var/log/wtmp:记录每个用户登录、注销及系统启动和停机事件。
9. >/var/log/utmp:记录当前登录的每个用户的详细信息
二、日志文件分析
熟悉了系统中的主要日志,我们就针对日志文件的分析方法做了解。分析日志文件的目地在于通过浏览日志查找关键信息,对系统服务进行调试,判断发生故障的原因等。这里主要说三类日志文件的基本格式和分析方法。
对于大多数文本格式的日志格式(如内核及系统日志、大多数的程序日志),只要使用tail、more、less、cat等文本处理工具就可以查看日志内容。而对于一些二进制格式的日志文件(eg:用户日志),则需要使用相应的查询命令。
1.内核及系统日志:
内核及系统日志功能主要由默认安装的syslogd-1.4.1-39.2软件包提供,该软件包安装了klogd、syslogd两个程序,并通过syslog服务进行控制,分别用于记录系统内核的消息和各种应用程序的消息。syslog服务所使用的配置文件为"/etc/syslog.conf"。
通常情况下,内核及大多数系统消息都被记录到公共日志文件"/var/log/messages"中,而其他一些程序消息被记录到不同的文件中,日志消息还能够记录到特定的存储设备中,或者直接向用户发送。
###查看日志配置文件"/etc/syslog.conf'中的内容
2.用户日志
在wtmp、utmp、lastlog等日志文件中,保存了系统用户登录,退出等相关事件的事件消息。但是这些文件都是二进制的数据文件,不能直接使用tail、less等文本查看工具进程浏览,需要使用who、w、users、last和ac等用户查询命令来获取日志信息。
这里就不再演示。
3.程序日志
在Linux系统中,还有相当一部分应用程序并没有使用syslog服务来管理日志。而是由程序自己维护日志记录。例如,httpd网站服务程序使用两个日志文件access_log和error_log,一般存放在"/var/log/httpd“目录中,分别记录客户访问事件,错误事件,而FTP服务程序可以将与文件上传,下载事件相关的消息记录在xferlog文件中。由于不同应用程序的日志记录格式差别较大,并没有严格使用统一的格式,这里不详解!
特例:服务器日志分布管理策略:
鉴于日志数据资料的重要性,对于系统运行过程中产生的各种日志文件,必须采用有针对性的管理策略,以确保日志数据的准确性、安全性和真实性。一般来说,可以从以下几个方面进行考虑。
>:日志备份和归档:日志文件也是重要的数据资料,同样需要进行备份和归档。
>:延长日志保存期限:在存储空间富裕的情况下,日志数据保留的时间应尽可能长。
>:控制日志访问权限:日志数据中可能会包含各类敏感信息,如:账号、口令等。所以需要严格控制其访问权限。
>:集中管理日志:使用集中的日志服务器管理各服务器发送的日志记录等。其好处在于方便对日志的收集、整理和分析,杜绝意外的丢失、恶意篡改或删除等。
eg:服务器A(IP地址为173.17.17.3/24),用于集中保存日志记录。
将客户机B(IP地址为173.17.17.11/24)中crond服务产生的日志记录,统一保存到服务器A中的“/var/log/cron”文件中。
● 设置日志服务器A
在日志服务器A中,需要编辑syslog日志服务的启动参数配置文件"/etc/sysconfig/syslog",将SYSLOGD_OPTIONS变量的内容改为“-r -x -m 0”即可。其中"-r"选项表示允许接受其他主机发送过来的日志记录,"-x"选项表示不进程DNS域名解析,"-m"表示记录日志的时间标记间隔(设为0禁用该功能),这些信息可以通过查看syslogd程序的man手册页获得
*:修改日志服务器A的“/etc/sysconfig/syslog”文件,添加集中管理配置参数“-r”,并重启syslog服务。
1. vi /etc/sysconfig/syslog //修改SYSLOGD_OPTIONS行SYSLOGD_OPTIONS="-r -x -m 0"
2. service syslog restart
● 设置客户机B
在客户机B中,需要修改"/etc/syslog.conf"配置文件,设置将cron计划任务的日志消息写入到服务器A的"/var/log/cron"文件中。指定写入日志的主机地址时,采用“@173.17.17.3”的格式即可。
*:修改客户机B的"/etc/syslog.conf"文件,找到cron日志的配置行,将日志发送位置改为“@173.17.17.3”,并重启syslog服务。
1. vi /etc/syslog.conf
2. cron.* @173.17.17.3
3. service syslog restart
● 验证日志集中管理功能
在客户机B中执行"crontab -e"命令,随便编写一条计划任务信息并保存退出,然后查看本机中的"/var/log/cron"日志文件,将发现没有任何新的记录。