系统日志详细地记录了在什么时间,哪台服务器、哪个程序或服务出现了什么情况。不管是哪种操作系统,都详细地记录了重要程序和服务的日志,只是我们很少养成查看日志的习惯。
日志是系统信息最详细、最准确的记录者,如果大家能够善用日志,那么当系统出现问题时,我们就能在第一时间发现问题,也能够从日志中找到解决问题的方法。
rsyslogd服务及启动方法
在 CentOS 6.x 中,日志服务已经由 rsyslogd 取代了原先的 syslogd。Red Hat 公司认为 syslogd 已经不能满足工作中的需求,rsyslogd 相比 syslogd 具有一些新的特点:
- 基于TCP网络协议传输日志信息。
- 更安全的网络传输方式。
- 有日志信息的即时分析框架。
- 后台数据库。
- 在配置文件中可以写简单的逻辑判断。
- 与syslog配置文件相兼容。
rsyslogd 日志服务更加先进,功能更多。但是,不论是该服务的使用,还是日志文件的格式,其实都是和 syslogd 服务相兼容的,所以学习起来基本和 syslogd 服务一致。
我们如何知道 Linux 中的 rsyslogd 服务是否启动了呢?如何查询 rsyslogd 服务的自启动状态呢?命令如下:
[root@localhost ~]# ps aux | grep "rsyslog" | grep -v "grep" root 1139 0.0 0.2 35948 1500 ? Sl 09:40 0:00 /sbin/rsyslogd -i/var/run/syslogd.pid -c 5 #有rsyslogd服务的进程,所以这个服务已经启动了 [root@localhost ~]# chkconfig --list | grep rsyslog rsyslog 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 #rsyslog服务在2、3、4、5运行级别上是开机自启动的
系统中的绝大多数日志文件是由 rsyslogd 服务来统一管理的,只要各个进程将信息给予这个服务,它就会自动地把日志按照特定的格式记录到不同的日志文件中。也就是说,采用 rsyslogd 服务管理的日志文件,它们的格式应该是统一的。
在 Linux 系统中有一部分日志不是由 rsyslogd 服务来管理的,比如 apache 服务,它的日志是由 Apache 软件自己产生并记录的,并没有调用 rsyslogd 服务。但是为了便于读取,apache 日志文件的格式和系统默认日志的格式是一致的。
日志文件(常见)及其功能
日志文件 | 说 明 |
/var/log/cron | 记录与系统定时任务相关的曰志 |
/var/log/cups/ | 记录打印信息的曰志 |
/var/log/dmesg | 记录了系统在开机时内核自检的信总。也可以使用dmesg命令直接查看内核自检信息 |
/var/log/btmp | 记录错误登陆的日志。这个文件是二进制文件,不能直接用Vi查看,而要使用lastb命令查看。命令如下: [root@localhost log]#lastb root tty1 Tue Jun 4 22:38 - 22:38 (00:00) #有人在6月4 日 22:38便用root用户在本地终端 1 登陆错误 |
/var/log/lasllog | 记录系统中所有用户最后一次的登录时间的曰志。这个文件也是二进制文件.不能直接用Vi 查看。而要使用lastlog命令查看 |
/var/Iog/mailog | 记录邮件信息的曰志 |
/var/log/message | 记录系统里要佶息的日志.这个日志文件中会记录Linux系统的绝大多数重要信息。如果系统出现问题,首先要检查的应该就是这个日志文件 |
/var/log/secure | 记录验证和授权方面的倍息,只要涉及账户和密码的程序都会记录,比如系统的登录、ssh的登录、su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中 |
/var/log/wtmp | 永久记录所有用户的登陆、注销信息,同时记录系统的后动、重启、关机事件。同样,这个文件也是二进制文件.不能直接用Vi查看,而要使用last命令查看 |
/var/tun/ulmp | 记录当前已经登录的用户的信息。这个文件会随着用户的登录和注销而不断变化,只记录当前登录用户的信息。同样,这个文件不能直接用Vi查看,而要使用w、who、users等命令查看 |
日志文件 | 说明 |
---|---|
/var/log/httpd/ | RPM包安装的apache取务的默认日志目录 |
/var/log/mail/ | RPM包安装的邮件服务的额外日志因录 |
/var/log/samba/ | RPM色安装的Samba服务的日志目录 |
/var/log/sssd/ | 守护进程安全服务目录 |
日志文件格式分析
只要是由日志服务 rsyslogd 记录的日志文件,它们的格式就都是一样的。所以我们只要了解了日志文件的格式,就可以很轻松地看懂日志文件。
日志文件的格式包含以下 4 列:
- 事件产生的时间。
- 产生事件的服务器的主机名。
- 产生事件的服务名或程序名。
- 事件的具体信息。
我们查看一下 /var/log/secure 日志,这个日志中主要记录的是用户验证和授权方面的信息,更加容易理解。命令如下:
[root@localhost ~]# vi /var/log/secure Jun 5 03:20:46 localhost sshd[1630]:Accepted password for root from 192.168.0.104 port 4229 ssh2 # 6月5日 03:20:46 本地主机 sshd服务产生消息:接收从192.168.0.104主机的4229端口发起的ssh连接的密码 Jun 5 03:20:46 localhost sshd[1630]:pam_unix(sshd:session):session opened for user root by (uid=0) #时间 本地主机 sshd服务中pam_unix模块产生消息:打开用户root的会话(UID为0) Jun 5 03:25:04 localhost useradd[1661]:new group:name=bb, GID=501 #时间 本地主机 useradd命令产生消息:新建立bb组,GID为501 Jun 5 03:25:04 localhost useradd[1661]:new user:name=bb, UID=501, GID=501, home=/home/bb, shell=/bin/bash Jun 5 03:25:09 localhost passwd:pam_unix(passwd:chauthtok):password changed for bb
我截取了一段日志的内容,注释了其中的三句日志,剩余的两句日志大家可以看懂了吗?其实分析日志既是重要的系统维护工作,也是一项非常枯燥和烦琐的工作。如果我们的服务器出现了一些问题,比如系统不正常重启或关机、用户非正常登录、服务无法正常使用等,则都应该先查询日志。
实际上,只要感觉到服务器不是很正常就应该查看日志,甚至在服务器没有什么问题时也要养成定时查看系统日志的习惯。