平台:RHEL
常见的日志文件
- /var/log/cron:记录crontab执行的情况
- /var/log/dmesg:记录系统在开机的时候内核检测过程所产生的各项信息
- /var/log/lastlog:记录系统上面所有账号最近一次登陆的相关信息,lastlog命令就是通过这个文件来显示内容的
- /var/log/maillog或/var/log/mail/*:记录邮件来往信息
- /var/log/messages:记录系统发生错误或者重要的信息
- /var/log/secure:记录涉及需要账号密码软件的信息
- /var/log/wtmp, /var/log/faillog:记录正确登陆系统的账号信息(wtmp)与错误登陆时所使用的账号信息(faillog)
- /var/log/httpd/*, /var/log/news/*, /var/log/samba/*:记录不同的网络服务产生的各项信息
通常情况下,日志文件由以下两种方式产生
- 由软件开发商自行定义写入日志文件,例如WWW软件apache就是这样处理的
- 由Linux distribution提供的日志文件管理服务来统一管理,RHEL提供了两种syslogd(一般日志管理)和klogd(管理内核相关的日志)
这里主要来分析一下syslogd日志文件服务,通过syslogd记录下来的日志文件通常会包含下面几个重要数据
- 事件发生的日期和事件
- 发生此事件的主机名
- 启动此事件的服务名称(如samba, xinetd等)或函数名称(如libpam)
- 该信息的实际数据内容
[root@rhel6164 ~]# head -n 1 /var/log/secure
Dec 21 04:29:27 rhel6164 sshd[15843]: Received disconnect from 10.121.122.58: 11: disconnected by user
syslog的配置文件:/etc/syslog.conf 这个文件规定了什么服务的什么等级信息以及需要被记录在哪里(设备或文件)这三个部分
[root@rhel6164 ~]# cat /etc/rsyslog.conf #RHEL6上面配置文件为rsyslog.conf
#rsyslog v3 config file
# if you experience problems, check
# http://www.rsyslog.com/troubleshoot for assistance
#### MODULES ####
$ModLoad imuxsock.so # provides support for local system logging (e.g. via logger command)
$ModLoad imklog.so # provides kernel logging support (previously done by rklogd)
#$ModLoad immark.so # provides --MARK-- message capability
# Provides UDP syslog reception
#$ModLoad imudp.so
#$UDPServerRun 514
# Provides TCP syslog reception
#$ModLoad imtcp.so
#$InputTCPServerRun 514
#### GLOBAL DIRECTIVES ####
# Use default timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
# File syncing capability is disabled by default. This feature is usually not required,
# not useful and an extreme performance hit
#$ActionFileEnableSync on
#### RULES ####
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# The authpriv file has restricted access.
authpriv.* /var/log/secure
# Log all the mail messages in one place.
mail.* -/var/log/maillog
# Log cron stuff
cron.* /var/log/cron
# Everybody gets emergency messages
*.emerg *
# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler
# Save boot messages also to boot.log
local7.* /var/log/boot.log
# ### begin forwarding rule ###
# The statement between the begin ... end define a SINGLE forwarding
# rule. They belong together, do NOT split them. If you create multiple
# forwarding rules, duplicate the whole block!
# Remote Logging (we use TCP for reliable delivery)
#
# An on-disk queue is created for this action. If the remote host is
# down, messages are spooled to disk and sent when it is up again.
#$WorkDirectory /var/spppl/rsyslog # where to place spool files
#$ActionQueueFileName fwdRule1 # unique name prefix for spool files
#$ActionQueueMaxDiskSpace 1g # 1gb space limit (use as much as possible)
#$ActionQueueSaveOnShutdown on # save messages to disk on shutdown
#$ActionQueueType LinkedList # run asynchronously
#$ActionResumeRetryCount -1 # infinite retries if host is down
# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
#*.* @@remote-host:514
# ### end of the forwarding rule ###
服务名称:软件开发商会调用这些服务来记录他们的软件,例如sendmail就会主动调用syslog内的mail服务来记录邮件来往信息,syslog本身有设置一些服务,可以通过这些服务来存储系统的信息,syslog设置的服务主要有下面这些,更多帮助文档可以参考man 3 syslog页面
服务类型 | 说明 |
---|---|
auth(authpriv) | 主要与认证有关的机制,例如login, ssh, su等需要账号/密码 |
cron | 就是例行性工作cron/at等产生信息记录的地方 |
daemon | 与各个daemon有关的信息 |
kern | 内核产生的有关信息 |
lpr | 打印机相关的信息 |
与邮件相关的信息 | |
news | 与新闻组服务器有关的信息 |
syslog | 就是rsyslog(RHEL6)这支程序本身产生的信息 |
user, uucp, local0~local7 | 与Unix like系统本身有关的信息 |
等级 | 等级名称 | 说明 |
---|---|---|
1 | info | 仅是一些基本的信息说明而已 |
2 | notice | 比info还需要被注意到的信息 |
3 | warning(warn) | 警示信息,可能有问题但不至于影响到某个daemon运作的信息,基本上,info, notice, warn这三个等级都是告知一些基本信息,应该不会对系统运行产生问题 |
4 | err(error) | 一些重大的错误信息 |
5 | crit | 比error还严重的错误信息 |
6 | alert | 比crit还严重的错误信息 |
7 | emerg(panic) | 最严重的错误信息 |
- "." 表示比后面还要高的等级(含该等级)都会被记录下来,例如:mail.info代表只要是mail的信息,而且改信息等级高于或等于info时,就会被记录下来
- “.=" 代表所需要的等级就是后面接的等级,其它的不要
- ”.!" 代表不等于,即是除了该等级外的其它等级都会被记录
信息记录的文件名或设备或主机:常见放置信息记录的地方
- 文件的绝对路径,通常是放在/var/log目录下面
- 打印机或其它,例如/dev/lp0这个打印机设备
- 用户名称,显示给用户
- 远程主机,例如@www.xxx.com,当然要对方能够支持才行
- *,代表目前在线的所有人
例子:
将与新闻组资料(news)及例行工作调度(cron)相关的信息都写入到/var/log/cronnews的文件中,但是把这个两个程序的警告信息则额外地记录到/var/log/cronnews.warn文件中,该用下面的内容来设置syslog.conf配置文件
new.*;cron.* /var/log/cronnews
new.=warn;cron.=warn /var/log/cronnews.warn
注意:在用vi查看了日志文件时,不小心手动修改了日志文件后,并保存了,那么该日志文件将来就不会再继续进行日志操作。因为vi保存了日志文件,则syslogd会误判为该文件已被改动过,将导致syslogd不再对该文件写入新的内容
日志文件的轮替:logrotate
logrotate的配置文件有两个(/etc/logrotate.conf和/etc/logrotate.d/),logrotate的工作是通过cron来完成的(/etc/cron.daily/logrotate)。针对日志文件进行轮替,主要的工作原理为:这里以备份日志文件messages为例
- 第一次轮替,messages变成了messages.1,然后再新建一个空的messages文件
- 第二次轮替,新建的messages变成了messages.2,然后再新建一个空的messages文件
- 第二次轮替,新建的messages变成了messages.3,然后再新建一个空的messages文件
- 以此类推