Linux日志管理

1. 简介

1.1 日志服务

在 CentOS 6.x 中日志服务已经由rsyslogd取代了原先的syslogd服务。rsyslogd日志服务更加先进,功能更多。

1.2 查看日志服务是否启动

ps aux | grep rsyslogd
通过查看rsyslogd服务的进程是否存在,判断日志服务rsyslogd是否启动

chkconfig --list | grep rsyslog
查看rsyslogd服务是否设置了开机自启动   
(默认情况下,Linux系统中的日志服务都是自启动和已经启动的。)

1.3 常见日志的作用

日志文件 作用
/var/log/cron 记录了定时任务相关的日志。
/var/log/cups 记录了打印信息的日志。
/var/log/dmesg 记录了系统在开机时内核自检的信息。也可以使用dmesg命令直接查看内核自检信息。
/var/log/btmp 记录错误登录的日志。这个文件是二进制文件,不能直接vi查看,而要使用lastb命令查看。
/var/log/lastlog 记录系统中所有用户最后一次登录时间的日志。这个文件也是二进制文件,不能直接vi查看,而要使用lastlog命令查看。
/var/log/maillog 记录邮件信息。
/var/log/message 记录系统重要信息。该日志文件会记录Linux系统的绝大多数重要信息,如果系统出现问题,首先应该查看这个文件。
/var/log/secure 记录验证和授权方面的信息,只要涉及账户和密码的程序都会记录。比如系统的登录,ssh的登录,su切换用户,sudo授权,甚至添加用户和修改密码都会记录。
/var/log/wtmp 永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。它也是一个二进制文件,需要用last命令查看。
/var/run/utmp 记录当前已经登录的用户信息。这个文件会随着用户的登录和注销而不断变化,只记录当前登录用户的信息。这个文件也不能直接vi查看,而要使用w,who,users等命令来查询。

除了系统默认的日志之外,采用RPM包安装的服务也会默认把日志记录在/var/log/目录中(源码包安装的服务日志是在源码包的指定目录中)。不过,这些日志就不是用rsyslogd服务来记录和管理的,而是各个服务使用自己的日志管理文档来记录自身的日志。

2. rsyslogd日志服务

2.1 日志的文件格式

基本日志格式包含以下四列:

  • 事件产生的时间
  • 发生事件的服务器的主机名
  • 产生事件的服务名或程序名
  • 事件的具体信息

2.2 /etc/rsyslog.conf配置文件

以下面这条配置信息为例:

authpriv.*      /var/log/secure
#记录authpriv认证信息服务产生的日志,所有的日志等级都记录。

配置信息包含四个部分:服务名称、连接符号、日志等级、日志的保存位置。

服务名称 说明
auth 安全和认证相关信息(不推荐使用authpriv替代)。
authpriv 安全和认证相关信息(私有的)。
cron 系统定时任务cront和at产生的日志。
daemon 各个守护进程相关的日志。
ftp ftp守护进程产生的日志。
kern 内核产生的日志(不是用户进程产生的)。
local0-local7 为本地使用预留的服务。
lpr 打印产生的日志。
mail 邮件收发信息。
news 与新闻服务器相关的日志。
syslog 由syslogd服务产生的日志(虽然服务名称已经改为rsyslogd,但是很多配置还是沿用了sysylogd)。
user 用户等级类别的日志信息。
uucp uucp子系统的日志信息,uucp是早期Linux系统进行数据传递的协议,后来也常用在新闻组服务中。
连接符号 说明
. 代表只要比后面的等级高的(包含该等级)日志都记录下来。
.= 代表只记录所需等级的日志,其他等级的都不记录。
.! 代表不等于,也就是除了该等级的日志之外,其他等级的日志都记录。
日志等级 说明
debug 一般的调试信息。
info 基本的通知信息。
notice 普通信息,但是有一定的重要性。
warning 警告信息,但是还不会影响到服务或系统的运行。
err 错误信息,一般达到err等级的信息已经可以影响到服务或系统的运行。
crit 临界状况信息,比err等级还要严重。
alert 警告状态信息,比crit还要严重。必须立即采取行动。
emerg 疼痛等级信息,系统已经无法使用了。

日志的保存位置:

  • 日志文件的绝对路径,如 “/var/log/secure”。
  • 系统设备文件,如 “/dev/lp0”。
  • 转发给远程主机,如 “@192.168.0.210:514”。
  • 发给在线的用户,如 “root”,”*”。
  • 忽略或丢弃日志,如 “~”。

说明:* 星号代表任何内容。如果是在服务名称处,代表任何服务;如果是在日志等级处,代表任何日志等级;如果是在保存位置处,代表发给所有的在线用户。

3. 日志轮替

3.1 日志文件的命名规则

如果配置文件中拥有 dateext 参数,那么日志会用日期来作为日志文件的后缀。例如 secure-20140609。这样,日志文件就不会重名,也就不需要更改日志的文件名,只需保存指定的日志个数,删除其他的日志文件即可。

如果配置文件中没有 dateext 参数,那么日志文件就需要进行改名了。当第一次进行日志轮替时,当前的 secure 日志会自动更名为 secure.1 ,然后新建 secure 日志,用来保存新的日志。当第二次进行日志轮替时, secure.1 会自动改名为 secure.2 ,当前的 secure 日志会自动更名为 secure.1 ,然后新建 secure 日志,用来保存新的日志。

3.2 logrotate配置文件 ( /etc/logrotate.conf )

参数 说明
daily 日志的轮替周期是每天。
weekly 日志的轮替周期是每周。
monthly 日志的轮替周期是每月。
rotate 数字 保留的日志文件的个数。0指没有备份。
compress 日志轮替时,旧的日志进行压缩
create mode owner group 建立新日志,同时指定新日志的权限、所有者和所属组。 如 create 0600 root utmp。
mail address 当日志轮替时,输出内容通过邮件发送到指定的邮箱。
missingok 如果日志不存在,则忽略该日志的警告信息。
notifempty 如果日志为空文件,则不进行日志轮替。
minisize 大小 日志轮替的最小值。也就是日志一定要达到这个最小值才会轮替,否则就算时间达到也不轮替。
size 大小 日志只有大于指定大小才进行日志轮替,而不是按照时间轮替。 如 size 100k。
dateext 使用日期作为日志轮替文件的后缀。 如 secure-20140609。

3.3 把apache日志加入轮替

注意: 只要是RPM包安装的服务,它的日志默认就支持轮替,而不用手动加入轮替。

比如,现在需要把源码包安装的apache的访问日志和错误日志进行轮替。

vi /etc/logrotate.conf

添加下面的代码即可:

/usr/local/apache2/logs/access_log {
    daily
    create
    rotate 30
}

/usr/local/apache2/logs/error_log {
    daily
    create
    rotate 30
}

对于源码包安装的apache,它的日志默认不会进行轮替,这样,单个日志文件就可能非常大,尤其是访问日志和错误日志,因此,就非常有必要进行日志轮替。

一般来说,只有源码包安装的服务,才有可能需要手动加入日志轮替。这是因为,logrotate日志轮替默认会把/var/log/目录中的日志进行轮替。

3.4 logrotate命令

命令格式:logrotate [选项] 配置文件名

选项:

  • -v:显示日志轮替的相关信息。
  • -f:强制进行日志轮替。不管日志轮替的条件是否已经符合,强制配置文件中所有的日志进行轮替。

如果没写选项,则会按照配置文件中的规则进行日志轮替。

示例:

logrotate -v /etc/logrotate.conf

你可能感兴趣的:(Linux,Linux,基础知识)