Linux系统日志

12.2  syslog日志

syslog是一个被UNIX和Linux广泛使用的日志系统,Linux系统中大部分的日志文件都是通过它进行管理的。本节将对syslog的功能及配置、日志文件的查看和管理,以及syslog中默认配置的日志文件进行介绍。

12.2.1  syslog简介

syslog是一个历史悠久的日志系统,几乎所有的UNIX和Linux操作系统都是采用syslog进行系统日志的管理和配置。Linux系统内核和许多程序会产生各种错误信息、警告信息和其他的提示信息。这些信息对管理员了解系统的运行状态是非常有用的,所以应该把它们写到日志文件中去。而执行这个过程的程序就是syslog。syslog可以根据信息的来源以及信息的重要程度将信息保存到不同的日志文件中,例如,为了方便查阅,可以把内核信息与其他信息分开,单独保存到一个独立的日志文件中。在默认的syslog配置下,日志文件通常都保存在“/var/log”目录下。syslog的守护进程为syslogd,系统启动时,默认会自动运行syslogd守护进程,如图12.5所示。

Linux系统日志 <wbr>(转贴)

 

             图12.5  syslog守护进程

如果要手工启动,可以使用如下命令:

/sbin/syslogd

在修改syslog配置后,需要重新启动syslogd守护进程才能使新的配置生效。其命令如下所示。

# killall -HUP syslogd

Red Hat Enterprise Linux 5.2安装后默认就已经在syslog中定义了一些日志文件,这些日志的位置以及它们的说明如表12.2所示。

表12.2  默认配置syslog日志

日 志 文 件

说    明

/var/log/message

系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一

/var/log/secure

与安全相关的日志信息

/var/log/maillog

与邮件相关的日志信息

/var/log/cron

与定时任务相关的日志信息

/var/log/spooler

与UUCP和news设备相关的日志信息

/var/log/boot.log

守护进程启动和停止相关的日志消息

12.2.2  syslog配置

syslog的配置文件为/etc/syslog.conf,在该文件中指定了syslog记录日志的信息来源、信息类型以及保存位置。下面是该文件内容的一个实例。

# 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级别的信息记录到/var/log/messages日志文件中

* .info;mail.none;authpriv.none;cron.none       /var/log/messages

# The authpriv file has restricted access.

# 把所有授权信息记录到/var/log/secure日志文件中

authpriv.*                      /var/log/secure

# Log all the mail messages in one place.

# 把所有级别的邮件信息记录到/var/log/maillog日志文件中

mail.*                          -/var/log/maillog

# Log cron stuff

# 把所有级别的定时任务信息记录到/var/log/cron日志文件中

cron.*                          /var/log/cron

# Everybody gets emergency messages

# 把emerg级别的信息发送给所有登录用户

* .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

# 把所有的系统启动信息记录到/var/log/boot.log日志文件中

local7.*                     /var/log/boot.log

该文件以井号“#”为注释符,其中每一行的语法格式为:

[消息来源.消息级别]   [动作]

其中,[消息来源.消息级别]和[动作]之间以Tab键进行分隔,同一行syslog配置中允许出现多个[消息来源.消息级别],但必须要使用分号“;”进行分隔,例如:

mail.*; cron.*       /var/log/test.log

其中消息来源表示发出消息的子系统,如表12.3列出了syslog中的所有消息来源。

表12.3  syslog消息来源及说明

消 息 来 源

说    明

消 息 来 源

说    明

authpriv

安全/授权信息

mail

邮件子系统

cron

定时任务

news

网络新闻子系统

daemon

守护进程

syslog

syslogd内部产生的信息

ftp

ftp守护进程

user

一般用户级别信息

kern

内核信息

uucp

UUCP子系统

lpr

打印机子系统

local0-local7

本地用户

优先级代表消息的紧急程度,如表12.4所示按级别由高到低列出了syslog的所有消息级别及说明。

表12.4  syslog消息级别及说明

消 息 级 别

说    明

消 息 级 别

说    明

emerg

最紧急的消息

warning

警告消息

alert

紧急消息

notice

普通但重要的消息

crit

重要消息

info

通知性消息

err

出错消息

debug

调试级的消息——消息量最多

Syslog消息级别是向上匹配的,也就是说如果指定了一个消息级别,那么指定级别及比该指定级别更高级的消息都会被包括进去。例如,warning表示所有大于或者等于warning级别的消息都会被处理,包括emerg、alert、crit、err和warning。如果指定的是debug级别,那么所有级别的消息都会被处理。消息级别越低,消息的数量就越多。如果只想匹配某个确定级别的消息,而不希望包括更高级别的消息,可以使用等号“=”进行指定。例如希望处理cron的notice级别的消息:

cron.=notice        /var/log/test.log

除此之外,syslog还支持两个特殊的消息级别关键字:“*”和none。其中“*”表示匹配所有来源或级别的消息;none表示忽略所有消息。

[动作]是用于指定消息的处理方式。Syslog支持把消息保存到日志文件中、发送给指定的用户、显示在终端上或者通过网络发送到另外一台syslog服务器上进行处理。如表12.5中列出了Syslog中所有可用的动作及其说明。

表12.5  syslog动作说明

动    作

说    明

文件名

将消息保存到指定的文件中

@主机名或IP地址

转发消息到另外一台syslog服务器上进行处理

*

把消息发送到所有用户的终端上

/dev/console

把消息发送到本地主机的终端上

| 程序

通过管道把消息重定向到指定的程序

用户名列表

把消息发送给指定的用户,用户名以逗号“,”进行分隔

12.2.3  配置实例

下面将以一个配置实例演示对syslog进行配置的步骤。但是在进行配置前需要先介绍一下logger命令。该命令可以模拟产生各类的syslog消息,从而测试syslog配置是否正确。logger命令的格式如下所示。

logger [-isd] [-f file] [-p pri] [-t tag] [-u socket] [message ...]

例如,要模拟daemon emerg的消息,可以使用如下命令:

logger -p daemon.emerg “test info”

现在,假设要在syslog中添加对kern.emerg消息的处理,把该消息保存到/var/log/ kern_test.log日志文件中,步骤如下所述。

(1)修改配置文件。打开/etc/syslog.conf,在文件中添加如下内容并保存。

#syslog测试

kern.info                                              /var/log/kern_test.log

(2)使修改生效。执行如下命令使修改后的配置生效。

# killall -HUP syslogd

(3)测试修改的效果。执行如下命令模拟kern.info消息。

logger kern.info "test info"

# cat /var/log/kern_test.log

Sep  8 21:40:30 demoserver kernel: test info

12.2.4  清空日志文件内容

随着系统运行时间越来越长,日志文件的大小也会随之变得越来越大。如果长期让这些历史日志保存在系统中,将会占用大量的磁盘空间。用户可以直接把这些日志文件删除,但删除日志文件可能会造成一些意想不到的后果。为了能释放磁盘空间的同时又不影响系统的运行,可以使用echo命令清空日志文件的内容,命令格式如下所示。

echo > 日志文件

例如要清空/var/log/message日志文件的内容,可以使用如下命令:

# echo > /var/log/message

12.2.5  图形化日志工具——系统日志查看器

Red Hat Linux中提供了一个图形化的日志查看工具——系统日志查看器。在该工具中默认可以查看syslog中所配置的日志文件,用户也可以通过该工具打开其他日志文件,如图12.6所示。

除了查看日志外,系统日志查看器还可以利用查看菜单中的过滤器选项对日志进行过滤显示,如图12.7所示。

 Linux系统日志 <wbr>(转贴)

  图12.6  系统日志查看器

Linux系统日志 <wbr>(转贴)

 

              图12.7  日志过滤

12.3  其 他 日 志

除syslog以外,Linux系统中还提供了大量的其他日志文件,在这些日志文件中也记录了非常重要的日志信息。在本节中将会对其中常用的dmesg、wtmp、btmp、.bash_history等系统日志文件以及应用程序日志进行介绍。

12.3.1  dmesg日志:记录内核日志信息

日志文件/var/log/dmesg中记录了系统启动过程中的内核日志信息,包括系统的设备信息,以及在启动和操作过程中系统记录的任何错误和问题的信息。下面是该文件内容的一个截取。

Linux version 2.6.18-92.el5 (brewbuilder@hs20-bc2-3.build.redhat.com) (gcc version 4.1.2 20071124 (Red Hat 4.1.2-41)) #1 SMP Tue Apr

 29 13:16:12 EDT 2008

BIOS-provided physical RAM map:                     // BIOS物理内存匹配

 BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)        //可用内存

 BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)      //保留内存

 BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)

 BIOS-e820: 0000000000100000 - 000000001fff0000 (usable)

 BIOS-e820: 000000001fff0000 - 000000001fff3000 (ACPI NVS)

 BIOS-e820: 000000001fff3000 - 0000000020000000 (ACPI data)

 BIOS-e820: 00000000fec00000 - 0000000100000000 (reserved)

0MB HIGHMEM available.                                  //高级内存为0MB

511MB LOWMEM available.                                 //低级内存为511MB

found SMP MP-table at 000f5470

Memory for crash kernel (0x0 to 0x0) notwithin permissible range

disabling kdump                                         //禁用kdump

Using x86 segment limits to approximate NX protection

On node 0 totalpages: 131056

  DMA zone: 4096 pages, LIFO batch:0

  Normal zone: 126960 pages, LIFO batch:31

DMI 2.3 present.

Using APIC driver default                               //默认使用APIC驱动

ACPI: RSDP (v000 IntelR                                ) @ 0x000f6f80

ACPI: RSDT (v001 IntelR AWRDACPI 0x42302e31 AWRD 0x00000000) @ 0x1fff3000

ACPI: FADT (v001 IntelR AWRDACPI 0x42302e31 AWRD 0x00000000) @ 0x1fff3040

ACPI: MADT (v001 IntelR AWRDACPI 0x42302e31 AWRD 0x00000000) @ 0x1fff7180

ACPI: DSDT (v001 INTELR AWRDACPI 0x00001000 MSFT 0x0100000d) @ 0x00000000

可以通过该日志文件来判断某些硬件设备在系统启动过程中是否被正确识别。例如,用户新添加了一个磁盘,如果该磁盘设备能被Linux系统正确识别,那么在dmesg日志文件中应该能够看到它的信息,如下所示。

Probing IDE interface ide0...

hda: Maxtor 6Y080L0, ATA DISK drive             //原有的硬盘

ide0 at 0x1f0-0x1f7,0x3f6 on irq 14

Probing IDE interface ide1...

  hdc: MAXTOR STM3160212A, ATA DISK drive           //新添加的硬盘

ide1 at 0x170-0x177,0x376 on irq 15

hda: max request size: 128KiB

hda: Host Protected Area detected.

        current capacity is 152729956 sectors (78197 MB)

        native  capacity is 160086528 sectors (81964 MB)

hda: Host Protected Area disabled.

hda: 160086528 sectors (81964 MB) w/2048KiB Cache, CHS=65535/16/63, UDMA(100)

hda: cache flushes supported

 hda: hda1 hda2 < hda5 hda6 hda7 hda8 hda9 hda10 hda11 hda12 hda13 >

hdc: max request size: 512KiB

  hdc: 312581808 sectors (160041 MB) w/2048KiB Cache, CHS=19457/255/63, UDMA(33)                                         //硬盘大小为160041MB

hdc: cache flushes supported

 hdc: hdc1[DM]

ide-floppy driver 0.99.newide

可以看到,新添加磁盘型号为MAXTOR STM3160212A,对应的设备文件名为/dev/hdc,大小为160041MB。

12.3.2  用户登录日志

/var/log/wtmp和/var/log/btmp是Linux系统上用于保存用户登录信息的日志文件。其中wtmp用于保存用户成功登录的记录,而btmp则用于保存用户登录失败的日志记录,它们为系统安全审计提供了重要的信息依据。这两个文件都是二进制的,无法直接使用文本编辑工具打开,必须通过last和lastb命令进行查看。如果查看成功的用户登录记录,可以使用如下命令:

# last

//用户sam于9月9日10点10分从客户端192.168.7.174登录服务器,且尚未退出登录

sam       pts/3      192.168.7.174   Tue Sep  9 10:10    still    logged in  

// 用户kelvin于9月8日20点01分从客户端192.168.6.217登录服务器,现已经退出,
   登录时间持续3分钟19秒

kelvin   pts/3      192.168.6.217   Mon Sep  8 20:01    - 23:20  (03:19)   

ken       pts/3     192.168.6.217   Mon Sep  8 19:49    - 19:59  (00:10)   

sam       pts/4      :0.0             Mon Sep  8 16:41    still    logged in  

sam      pts/3       172.30.11.221   Mon Sep  8 11:05    - 17:25  (06:19)   

ken       pts/2     demoserver      Mon Sep  8 10:47    still    logged in  

//用户sam于9月8日10点45分从本地登录服务器,且尚未退出登录

sam      pts/1        :0.0         Mon Sep  8 10:45   still logged in      

sam      :0                         Mon Sep  8 10:38   still logged in  

sam      :0                         Mon Sep  8 10:38 - 10:38  (00:00)   

sam      pts/1        :0.0         Mon Sep  8 10:37 - 10:38  (00:00)   

sam      :0                         Mon Sep  8 10:37 - 10:38  (00:00)   

sam      :0                         Mon Sep  8 10:37 - 10:37  (00:00)   

//系统上一次重启的时间为9月8日10点35分

reboot   system boot  2.6.18-92.el5    Mon Sep  8 10:35          (23:35)   

wtmp begins Mon Sep  8 10:35:25 2008  // wtmp文件自9月8日10点35分开始记录
                                      // 登录日志

每行输出结果中都包括登录用户名、机器名或IP、尝试登录时间、运行时间等信息,其中still logged in表示该登录会话依然存在,用户并未退出登录。如果要查看不成功的用户登录记录,可使用如下命令:

# lastb

//用户ken于9月8日23点08分试图登录系统失败

ken     pts/5        demoserver       Mon Sep  8 23:08 - 23:08  (00:00)   

sam     pts/5        demoserver       Mon Sep  8 21:28 - 21:28  (00:00)    

Kelvin  pts/5        demoserver       Mon Sep  8 21:07 - 21:07  (00:00)   

sam     pts/5        demoserver       Mon Sep  8 21:07 - 21:07  (00:00)   

         pts/2       demoserver       Mon Sep  8 10:47 - 10:47  (00:00)   

//btmp文件自9月8日10点47分开始记录日志

btmp begins Mon Sep  8 10:47:23 2008                                

系统管理员应该定期查看上述两个日志文件,检查是否有某些非法用户登录系统或者尝试登录系统,以确保系统安全。

12.3.3  用户操作记录

默认情况下,在每个用户的主目录下都会有一个.bash_history的文件,在该文件中保存了该用户输入的所有命令的记录,管理员可以通过该文件查看某个用户到底做过什么操作。例如要查看sam用户的操作记录,如下所示。

# cat /home/sam/.bash_history

su – root                 //用户输入的每一条命令在文件中都作为一行日志被记录下来

iostat -t -d -k -p

man iostat

iostat -d -k -x 1 100                   //用户曾经执行iostat命令

sar -s

...省略部分输出内容...

man sar

sar -n DEV 2 100                        //用户曾经执行sar命令

man sar

telnet localhost                        //用户曾经telnet本机

cd /media/RHEL_5.2\ i386\ DVD/

ls

cd Server/

su – root                               //用户曾经执行su切换到root

由文件内容可以看到,用户输入的每一条命令都会被作为一行日志在文件中被记录下来。系统管理员应该定期查看该文件,检查用户是否进行了一些非法操作。

12.3.4  应用日志

除了系统日志以外,Linux系统中的应用软件也有自己的日志文件。由于不同的应用软件都会有特殊的日志格式,限于篇幅原因,在这里不能逐一进行介绍,一般情况下这些日志都会存放于软件安装目录下的logs目录下。作为系统管理员,应该清楚如何使用这些日志文件,以便在软件出现故障时能快速找到有效的信息支持。例如,下面是Apache软件错误日志的一个内容截取。

//警告信息,进程id文件/usr/local/apache2/logs/httpd.pid被覆盖,上一次关闭可能是非正常的

[Mon Aug 11 22:27:34 2008] [warn] pid file /usr/local/apache2/logs/httpd.pid overwritten -- Unclean shutdown of previous Apache run?            

[Mon Aug 11 22:27:34 2008] [notice] Apache/2.2.9 (Unix) configured -- resuming normal operations

//尝试执行目录/usr/local/apache2/cgi-bin/中的脚本

[Mon Aug 11 22:27:40 2008] [error] [client 127.0.0.1] attempt to invoke directory as script: /usr/local/apache2/cgi-bin/            

[Mon Aug 11 22:27:40 2008] [error] [client 127.0.0.1] attempt to invoke directory as script: /usr/local/apache2/cgi-bin/

[Mon Aug 11 22:27:41 2008] [error] [client 127.0.0.1] attempt to invoke directory as script: /usr/local/apache2/cgi-bin/

[Mon Aug 11 22:27:41 2008] [error] [client 127.0.0.1] attempt to invoke directory as script: /usr/local/apache2/cgi-bin/

//接收到SIGHUP信号,准备重启Apache

[Mon Aug 11 22:29:12 2008] [notice] SIGHUP received.  Attempting to restart

httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

[Mon Aug 11 22:29:12 2008] [notice] Apache/2.2.9 (Unix) configured -- resuming normal operations

[Mon Aug 11 22:29:14 2008] [error] [client 127.0.0.1] attempt to invoke directory as script: /usr/local/apache2/cgi-bin/

// 找不到文件/usr/local/apache2/htdocs/cgi-bin

[Mon Aug 11 22:29:40 2008] [error] [client 127.0.0.1] File does not exist: /usr/local/apache2/htdocs/cgi-bin       

[Mon Aug 11 22:29:43 2008] [error] [client 127.0.0.1] File does not exist: /usr/local/apache2/htdocs/favicon.ico

[Mon Aug 11 22:30:01 2008] [error] [client 127.0.0.1] attempt to invoke directory as script: /usr/local/apache2/cgi-bin/

关于Apache日志更多的说明,请参考16.3.6节的内容。


转:http://book.csdn.net/bookfiles/1214/100121436166.shtml

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值