认识和分析日志文件 Linux

来源:互联网 发布:淘宝开店客服电话 编辑:程序博客网 时间:2024/06/05 22:47

平台: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/secureDec 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 stuffcron.*                                                  /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.loglocal7.*                                                /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/cronnewsnew.=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