linux系统⽇志message分析,Linux系统⽇志及⽇志分析
Linux系统拥有⾮常灵活和强⼤的⽇志功能,可以保存⼏乎所有的操作记录,并可以从中检索出我们需要的信息。
⼤部分Linux发⾏版默认的⽇志守护进程为 syslog,位于 /etc/syslog 或 /etc/syslogd,默认配置⽂件为 /f,任何希望⽣成⽇志的程序都可以向 syslog 发送信息。
Linux系统内核和许多程序会产⽣各种错误信息、警告信息和其他的提⽰信息,这些信息对管理员了解系统的运⾏状态是⾮常有⽤的,所以应该把它们写到⽇志⽂件中去。完成这个过程的程序就是syslog。syslog可以根据⽇志的类别和优先级将⽇志保存到不同的⽂件中。例如,为了⽅便查阅,可以把内核信息与其他信息分开,单独保存到⼀个独⽴的⽇志⽂件中。默认配置下,⽇志⽂件通常都保存
在“/var/log”⽬录下。
⽇志类型
下⾯是常见的⽇志类型,但并不是所有的Linux发⾏版都包含这些类型:
类型
说明
auth
⽤户认证时产⽣的⽇志,如login命令、su命令。
authpriv
与 auth 类似,但是只能被特定⽤户查看。
console
针对系统控制台的消息。
cron
系统定期执⾏计划任务时产⽣的⽇志。
daemon
某些守护进程产⽣的⽇志。
ftp
FTP服务。
kern
系统内核消息。
local0.local7
由⾃定义程序使⽤。
lpr
与打印机活动有关。
mail
邮件⽇志。
mark
产⽣时间戳。系统每隔⼀段时间向⽇志⽂件中输出当前时间,每⾏的格式类似于 May 26 11:17:09 rs2 -- MARK --,可以由此推断系统发⽣故障的⼤概时间。
news
⽹络新闻传输协议(nntp)产⽣的消息。
ntp
⽹络时间协议(ntp)产⽣的消息。
user
⽤户进程。
uucp
UUCP⼦系统。
⽇志优先级
常见的⽇志优先级请见下标:
优先级
说明
emerg
紧急情况,系统不可⽤(例如系统崩溃),⼀般会通知所有⽤户。
alert
需要⽴即修复,例如系统数据库损坏。
crit
危险情况,例如硬盘错误,可能会阻碍程序的部分功能。
err
⼀般错误消息。
warning
警告。
notice
不是错误,但是可能需要处理。
info
通⽤性消息,⼀般⽤来提供有⽤信息。
debug
调试程序产⽣的信息。
none
没有优先级,不记录任何⽇志消息。
常见⽇志⽂件
所有的系统应⽤都会在 /var/log ⽬录下创建⽇志⽂件,或创建⼦⽬录再创建⽇志⽂件。例如:⽂件/⽬录
说明
/var/log/boot.log
开启或重启⽇志。
/var/log/cron
计划任务⽇志
/var/log/maillog
邮件⽇志。
/var/log/messages
该⽇志⽂件是许多进程⽇志⽂件的汇总,从该⽂件可以看出任何⼊侵企图或成功的⼊侵。
/var/log/httpd ⽬录
Apache HTTP 服务⽇志。
/
var/log/samba ⽬录
samba 软件⽇志
/f ⽂件
/f 是 syslog 的配置⽂件,会根据⽇志类型和优先级来决定将⽇志保存到何处。典型的 f ⽂件格式如下所⽰:
*.err;kern.ice /dev/console
ice /var/log/messages
lpr.info /var/log/lpr.log
mail.* /var/log/mail.log
ftp.* /var/log/ftp.log
auth.* @see.xidian.edu
auth.* root,amrood
< /var/log/netinfo.log
install.* /var/log/install.log
*.emerg *
*.alert |program_name
mark.* /dev/console
第⼀列为⽇志类型和⽇志优先级的组合,每个类型和优先级的组合称为⼀个选择器;后⾯⼀列为保存⽇志的⽂件、服务器,或输出⽇志的终端。syslog 进程根据选择器决定如何操作⽇志。
对配置⽂件的⼏点说明:
⽇志类型和优先级由点号(.)分开,例如 kern.debug 表⽰由内核产⽣的调试信息。
kern.debug 的优先级⼤于 debug。
星号(*)表⽰所有,例如 *.debug 表⽰所有类型的调试信息,kern.* 表⽰由内核产⽣的所有消息。
可以使⽤逗号(,)分隔多个⽇志类型,使⽤分号(;)分隔多个选择器。
对⽇志的操作包括:
将⽇志输出到⽂件,例如 /var/log/maillog 或 /dev/console。
将消息发送给⽤户,多个⽤户⽤逗号(,)分隔,例如 root, amrood。
通过管道将消息发送给⽤户程序,注意程序要放在管道符(|)后⾯。
将消息发送给其他主机上的 syslog 进程,这时 /f ⽂件后⾯⼀列为以@开头的主机名,例如@see.xidian.edu。logger 命令
linux查看当前文件夹内容logger 是Shell命令,可以通过该命令使⽤ syslog 的系统⽇志模块,还可以从命令⾏直接向系统⽇志⽂件写⼊⼀⾏信息。
logger命令的语法为:
logger [-i] [-f filename] [-p priority] [-t tag] []
每个选项的含义如下:
选项
说明
-f filename
将 filename ⽂件的内容作为⽇志。
-i
每⾏都记录 logger 进程的ID。
-p priority
指定优先级;优先级必须是形如 facility.priority 的完整的选择器,默认优先级为 ice。
-t tag
使⽤指定的标签标记每⼀个记录⾏。
message
要写⼊的⽇志内容,多条⽇志以空格为分隔;如果没有指定⽇志内容,并且 -f filename 选项为空,那么会把标准输⼊作为⽇志内容。例如,将ping命令的结果写⼊⽇志:
$ ping 192.168.0.1 | logger -it logger_test -ice&
$ tail -f /var/log/userlog
Oct 6 12:48:43 kevein logger_test[22484]: PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
Oct 6 12:48:43 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=1 ttl=253 time=49.7 ms
Oct 6 12:48:44 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=2 ttl=253 time=68.4 ms
Oct 6 12:48:45 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=3 ttl=253 time=315 ms
Oct 6 12:48:46 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=4 ttl=253 time=279 ms
Oct 6 12:48:47 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=5 ttl=253 time=347 ms
Oct 6 12:48:49 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=6 ttl=253 time=701 ms
Oct 6 12:48:50 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=7 ttl=253 time=591 ms
Oct 6 12:48:51 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=8 ttl=253 time=592 ms
Oct 6 12:48:52 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=9 ttl=253 time=611 ms
Oct 6 12:48:53 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=10 ttl=253 time=931 ms
ping命令的结果成功输出到 /var/log/userlog ⽂件。
命令 logger -it logger_test -ice 各选项的含义:
-i:在每⾏都记录进程ID;
-t logger_test:每⾏记录都加上“logger_test”这个标签;
-ice:设置⽇志类型和优先级。
⽇志转储
⽇志转储也叫⽇志回卷或⽇志轮转。Linux中的⽇志通常增长很快,会占⽤⼤量硬盘空间,需要在⽇志⽂件达到指定⼤⼩时分开存储。
syslog 只负责接收⽇志并保存到相应的⽂件,但不会对⽇志⽂件进⾏管理,因此经常会造成⽇志⽂件过⼤,尤其是WEB服务器,轻易就能超过1G,给检索带来困难。
⼤多数Linux发⾏版使⽤ logrotate 或 newsyslog 对⽇志进⾏管理。logrotate 程序不但可以压缩⽇志⽂件,减少存储空间,还可以将⽇志发送到指定 E-mail,⽅便管理员及时查看⽇志。
例如,规定邮件⽇志 /var/log/maillog 超过1G时转储,每周⼀次,那么每隔⼀周 logrotate 进程就会检查 /var/log/maillog ⽂件的⼤⼩:
如果没有超过1G,不进⾏任何操作。
如果在1G~2G之间,就会创建新⽂件 /var/log/maillog.1,并将多出的1G⽇志转移到该⽂件,以给 /var/log/maillog ⽂件瘦⾝。
如果在2G~3G之间,会继续创建新⽂件 /var/log/maillog.2,并将 /var/log/maillog.1 的内容转移到该⽂件,将 /var/log/maillog 的内容转移到 /var/log/maillog.1,以保持 /var/log/maillog ⽂件不超过1G。
可以看到,每次转存都会创建⼀个新⽂件(如果不存在),命名格式为⽇志⽂件名加⼀个数字(从1开始⾃动增长),以保持当前⽇志⽂件和转存后的⽇志⽂件不超过指定⼤⼩。
logrotate 的主要配置⽂件是 /f,/etc/logrotate.d ⽬录是对 /f 的补充,或者说为了不使
/f 过⼤⽽设置。
可以通过 cat 命令查看它的内容:
$cat /f
# see "man logrotate" for details //可以查看帮助⽂档
# rotate log files weekly
weekly //设置每周转储⼀次
# keep 4 weeks worth of backlogs
rotate 4 //最多转储4次
# create new (empty) log files after rotating old ones
create //当转储后⽂件不存储时创建它
# uncomment this if you want your log files compressed
#compress //以压缩⽅式转储
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d //其他⽇志⽂件的转储⽅式,包含在该⽬录下
# no packages own wtmp -- we'll rotate them here
/var/log/wtmp { //设置/var/log/wtmp⽇志⽂件的转储参数

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。