认识和分析日志文件 Linux

平台: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/*:记录不同的网络服务产生的各项信息

通常情况下,日志文件由以下两种方式产生

  1. 由软件开发商自行定义写入日志文件,例如WWW软件apache就是这样处理的
  2. 由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打印机相关的信息
mail与邮件相关的信息
news与新闻组服务器有关的信息
syslog就是rsyslog(RHEL6)这支程序本身产生的信息
user, uucp, local0~local7与Unix like系统本身有关的信息
信息等级:同一服务所产生的信息也是有差别的,基本上,syslog将信息分成7个主要的等级(由不重要到重要信息等级)

等级等级名称说明
1info仅是一些基本的信息说明而已
2notice比info还需要被注意到的信息
3warning(warn)警示信息,可能有问题但不至于影响到某个daemon运作的信息,基本上,info, notice, warn这三个等级都是告知一些基本信息,应该不会对系统运行产生问题
4err(error)一些重大的错误信息
5crit比error还严重的错误信息
6alert比crit还严重的错误信息
7emerg(panic)最严重的错误信息
在日志等级前还有三种链接符号(. = !)

  • "." 表示比后面还要高的等级(含该等级)都会被记录下来,例如:mail.info代表只要是mail的信息,而且改信息等级高于或等于info时,就会被记录下来
  • “.=" 代表所需要的等级就是后面接的等级,其它的不要
  • ”.!" 代表不等于,即是除了该等级外的其它等级都会被记录

信息记录的文件名或设备或主机:常见放置信息记录的地方

  1. 文件的绝对路径,通常是放在/var/log目录下面
  2. 打印机或其它,例如/dev/lp0这个打印机设备
  3. 用户名称,显示给用户
  4. 远程主机,例如@www.xxx.com,当然要对方能够支持才行
  5. *,代表目前在线的所有人

例子

将与新闻组资料(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为例

  1. 第一次轮替,messages变成了messages.1,然后再新建一个空的messages文件
  2. 第二次轮替,新建的messages变成了messages.2,然后再新建一个空的messages文件
  3. 第二次轮替,新建的messages变成了messages.3,然后再新建一个空的messages文件
  4. 以此类推
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值