Linux系统日志介绍

GO


日志记录了系统每天发生的各种各种的事情,比如监测系统状况、排查系统故障等。你可以通过日志来检查错误发生的原因,或者收到攻击时攻击者留下的痕迹。日志的主要功能是审计和监测,还可以实时地监测系统状态,监测和追踪侵入者等。所以,在以后的工作中,遇到问题,查看日志,才能找到线索,来解决问题。

1. 日志配置文件

日志的配置文件,CentOS6默认改为/etc/rsyslog.conf,之前的版本是/etc/syslog.conf。该配置文件的主要信息为:记录哪些服务和需要记录什么等级的信息。(在工作中若没有特殊需求,不要修改这个配置文件)

日志的格式如下:

格式 含义
auth pam产生的日志
authpriv ssh、FTP等登陆的验证信息
cron 时间任务相关
kern 内核
lpr 打印
mail 邮件
mark(syslog) rsyslog服务内部的信息,时间标识
news 新闻组
user 用户程序产生的相关信息
uucp unix to unix copy,unix主机之间相关的通讯
local 1~7 自定义的日志设备

日志的级别如下:

级别 含义
debug 有调试信息的,日志信息最多
info 一般信息的日志,最常用
notice 最艰苦有重要性的普通条件的信息
warning 警告级别
err 错误级别,阻止某个功能或者模块不能正常工作的信息
crit 严重级别,阻止整个系统或者真整个软件不能正常工作的信息
alert 需要立刻修改的信息
emerg 内核崩溃等严重信息
none 什么都不记录
说明 从上到下,级别从低到高,记录的信息越来越少

连接符号如下:

符号 含义
. 表示大于或等于xxx级别的信息
.= 表示等于xxx级别的信息
.! 表示在xxx之外的等级信息

2. 常用日志文件

  • /var/log/messages 系统最核心的日志文件,包含了系统启动时的i难道消息,以及系统运行时的其它状态消息。I/O错误、网络错误和其它系统错误都会记录到这个文件中。其它信息,比如某个人的身份切换为root,以及用户自定义安装的软件(apache)的日志也会在这里列出。假如某个服务没有定义日志,那么该服务产生的日志就会到这个文件中。该日志每周归档一次。它是如何归档的,是根据/etc/logrotate.conf来控制的。这个文件也就是该日志的配置文件,而且很容易看明白,如果没有特殊需求,不要更改这个配置文件。/var/log/messagessyslogd这个守护进程产生的,如果停掉这个服务则系统不会产生/var/log/messages
  • /var/log/wtmp 用来记录用户登陆历史,但是这个文件不能用cat直接查看,只能用last查看。
  • /var/log/btmp 用来记录无效登陆历史,和wtmp类似,也不能用cat直接查看,只能用lastb查看。
  • /var/log/maillog 用来记录邮件相关的信息,比如发给谁邮件,是否发送成功等信息。mailq可以查看发送邮件的状态。
  • /var/log/secure 是一个安全认证相关的日志,比如系统用户登陆时,正常登陆或者登陆失败都会记录,另外ftp服务相关的登陆日志也会记录到这里面来。
  • dmesg 这是一个命令,主要用来查看系统实时的硬件设备抛出的信息,如果硬盘异常或者网络异常在或者内核异常都会记录下来,只不过这些信息是存到内存里面的,系统重启后就消失了。(这个还是很有用的)
  • /var/log/dmesg 这是一个日志,记录系统启动时硬件相关的信息。(在启动完成之后不会再有信息记录到这个文件)

3. 查看登陆历史记录

3.1. last命令

last命令用于显示用户最近登录信息。单独执行last命令,它会读取/var/log/wtmp的文件,并把该给文件的内容记录的登入系统的用户名单全部显示出来。

语法:last [选项] [参数]

选项 意义
-a 把从何处登入系统的主机名称或IP地址,显示在最后一行
-d 将IP地址转换成主机名称
-f file 指定记录文件
-R 不显示登入系统的主机名称或IP地址
-x 显示系统关机、重新开机,以及执行等级的改变等信息

参数:

  • 用户名:显示用户登陆列表
  • 终端:显示从指定终端的登陆列表

last命令示例如下:

1
2
3
4
$ last
theshu tty8 :0 Sat Oct 7 09:42 gone - no logout
reboot system boot 4.4.0-53-generic Sat Oct 7 09:41 still running
wtmp begins Sat Oct 7 09:41:18 2017

last命令用来查看登陆Linux历史信息,从左到右依次为账户名称、登陆终端、登陆客户端ip、登陆日期及时长。

3.2. lastb

lastb命令用于显示用户错误的登录列表,此指令可以发现系统的登录异常。单独执行lastb命令,它会读取位于/var/log目录下,名称为btmp的文件,并把该文件内容记录的登入失败的用户名单,全部显示出来。

语法:lastb 选项 参数

选项 作用
-a 把从何处登入系统的主机名称或ip地址显示在最后一行
-d 将IP地址转换成主机名称
-f<记录文件> 指定记录文件
-n<显示列数>或-<显示列数> 设置列出名单的显示列数
-R: 不显示登入系统的主机名称或IP地址
-x: 显示系统关机,重新开机,以及执行等级的改变等信息
参数 意义
用户名 显示中的用户的登录列表
终端 显示从指定终端的登录列表

实例:

首次运行lastb命令会报下的错误:

1
2
lastb: /var/log/btmp: No such file or directory
Perhaps this file was removed by the operator to prevent logging lastb info.

只需建立这个不存在的文件即可。

1
touch /var/log/btmp

使用ssh的登录失败不会记录在btmp文件中。

1
2
3
4
5
6
7
8
9
10
11
lastb | head
root ssh:notty 110.84.129.3 Tue Dec 17 06:19 - 06:19 (00:00)
root ssh:notty 110.84.129.3 Tue Dec 17 04:05 - 04:05 (00:00)
root ssh:notty 110.84.129.3 Tue Dec 17 01:52 - 01:52 (00:00)
root ssh:notty 110.84.129.3 Mon Dec 16 23:38 - 23:38 (00:00)
leonob ssh:notty 222.211.85.18 Mon Dec 16 22:18 - 22:18 (00:00)
leonob ssh:notty 222.211.85.18 Mon Dec 16 22:18 - 22:18 (00:00)
root ssh:notty 110.84.129.3 Mon Dec 16 21:25 - 21:25 (00:00)
root ssh:notty 110.84.129.3 Mon Dec 16 19:12 - 19:12 (00:00)
root ssh:notty 110.84.129.3 Mon Dec 16 17:00 - 17:00 (00:00)
admin ssh:notty 129.171.193.99 Mon Dec 16 16:52 - 16:52 (00:00)

3.3. lastlog

astlog命令用于显示系统中所有用户最近一次登录信息。

lastlog文件在每次有用户登录时被查询。可以使用lastlog命令检查某特定用户上次登录的时间,并格式化输出上次登录日志/var/log/lastlog的内容。它根据UID排序显示登录名、端口号(tty)和上次登录时间。如果一个用户从未登录过,lastlog显示Never logged。注意需要以root身份运行该命令。

语法:lastlog 选项

选项 意义
-b 天数 显示指定天数前的登陆信息
-h 显示召集令的帮助信息
-t 天数 显示指定天数以来的登陆信息
-u 用户名 显示指定用户的最近登陆信息

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[root@www ~]# lastlog
Username Port From Latest
root pts/0 221.6.45.34 Tue Dec 17 09:40:48 +0800 2013
bin **Never logged in**
daemon **Never logged in**
adm **Never logged in**
lp **Never logged in**
sync **Never logged in**
shutdown **Never logged in**
halt **Never logged in**
mail **Never logged in**
news **Never logged in**
uucp **Never logged in**
operator **Never logged in**
games **Never logged in**
gopher **Never logged in**
ftp **Never logged in**
nobody **Never logged in**
vcsa **Never logged in**
ntp **Never logged in**
sshd **Never logged in**
nscd **Never logged in**
ldap **Never logged in**
postfix **Never logged in**
www **Never logged in**
mysql **Never logged in**

4. 关于日志使用的建议

在日常的管理工作中要养成多看日志的习惯,尤其是一些应用的日志,比如apache、mysql、php等常用的软件,看它们的日志(错误日志)可以帮助排查问题以及监控它们的运行状况是否良好。


OK

0%