linux系统日志分析.docx

上传人:b****7 文档编号:10573239 上传时间:2023-02-21 格式:DOCX 页数:19 大小:24.64KB
下载 相关 举报
linux系统日志分析.docx_第1页
第1页 / 共19页
linux系统日志分析.docx_第2页
第2页 / 共19页
linux系统日志分析.docx_第3页
第3页 / 共19页
linux系统日志分析.docx_第4页
第4页 / 共19页
linux系统日志分析.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

linux系统日志分析.docx

《linux系统日志分析.docx》由会员分享,可在线阅读,更多相关《linux系统日志分析.docx(19页珍藏版)》请在冰豆网上搜索。

linux系统日志分析.docx

linux系统日志分析

RedHat系统日志分析

其实,可以说成是监控系统的记录,系统一举一动基本会记录下来。

这样由于信息非常全面很重要,通常只有root可以进行视察!

通过登录文件(日志文件)可以根据屏幕上面的错误讯息与再配合登录文件的错误信息,几乎就可以解决大部分的Linux问题!

所以日志文件异常重要,作为一个合格的linux系统工程师,日志文件是必要熟练掌握的部分。

常见的几个登录文件有:

/var/log/secure:

记录登入系统存取数据的文件,例如pop3,ssh,telnet,ftp等都会被记录;

/var/log/wtmp:

记录登入者的讯息数据,由于本文件已经被编码过,所以必须使用last指令来取出文件的内容;

/var/log/messages:

尤为重要,几乎发生的错误讯息(或是重要信息)都会被记录在此;

/var/log/boot.log:

记录开机或者是一些服务启动的时候,所显示的启动或关闭讯息;

/var/log/maillog或/var/log/mail/*:

纪录邮件存取或往来(sendmail与pop3)的使用者记录;

/var/log/cron:

记录crontab这个例行性服务的内容的。

/var/log/httpd,/var/log/news,/var/log/mysqld.log,/var/log/samba,/var/log/procmail.log:

分别是几个不同的网络服务的记录文件!

登录文件的纪录程序之一:

syslogd

通常经过syslog而记录下来的数据主要有:

事件发生的日期与时间;

发生此事件的主机名称;

启动此事件的服务名称(如samba,xinetd等)或函式名称(如libpam..);

该讯息数据内容

syslogd的daemon配置文件:

/etc/syslog.conf

内容语法是这样的:

服务名称[.=!

]讯息等级讯息记录的文件名或装置或主机

#例如底下:

mail.info/var/log/maillog_info

服务名称:

该服务产生的讯息会被纪录的意思。

syslog认识的服务主要有底下这些:

auth,authpriv:

主要与认证有关的机制,例如telnet,login,ssh等需要认证的服务都是使用此一机制;

cron:

例行性命令cron/at等产生讯息记录的地方;

daemon:

与各个daemon有关的讯息;

kern:

核心(kernel)产生讯息的地方;

lpr:

打印相关的讯息!

mail:

只要与邮件收发有关的讯息纪录都属于这个;

news:

与新闻群组服务器有关的东西;

syslog:

syslogd这支程序本身产生的信息啊!

user,uucp,local0~local7:

与Unixlike机器本身有关的一些讯息。

讯息等级

系统将讯息分为七个主要的等级,依序是由不重要排列到重要讯息等级:

info:

仅是一些基本的讯息说明而已;

notice:

比info还需要被注意到的一些信息内容;

warning或warn:

警示讯息,可能有问题,但是还不至于影响到某个daemon运作。

err或error:

一些重大的错误讯息,这就要去找原因了。

crit:

比error还要严重的错误信息,crit是临界点(critical)的缩写,已经很严重了!

alert:

警告警告,已经很有问题的等级,比crit还要严重!

emerg或panic:

疼痛等级,意指系统已经几乎要当机的状态!

很严重的错误信息了。

除了这些有等级的讯息外,还有两个特殊的等级,那就是debug(错误侦测等级)与none(不需登录等级)两个,当要作一些错误侦测,或者是忽略掉某些服务的信息时,就用这俩!

在讯息等级之前还有[.=!

]的连结符号!

他代表的意思是:

.:

代表比后面还要高的等级(含该等级)都被记录下来的意思,例如:

mail.info代表只要是mail的信息,而且该信息等级高于info(含info)时,就会被记录下来。

.=:

代表所需要的等级就是后面接的等级而已!

.!

代表不等于。

日志文件记录的文件名或装置或主机常见的放置处:

文件的绝对路径:

通常就是放在/var/log里头的文件!

打印机或其它:

例如/dev/lp0这个打印机装置(即使被黑客可以删除掉日志文件,但是最终删除不了打印出来的日志信息)

使用者名称:

显示给使用者!

远程主机:

例如@test.adsldns.org,要对方主机也能支持才行!

*:

代表目前在线的所有人,类似wall这个指令的意义!

看看在尚未开启网络服务的情况下来自FedoraCoreRelease4的相关资料

[root@linux~]#vi/etc/syslog.conf

#kern.*/dev/console

#只要是kernel产生的讯息,全部都送到console去!

默认是关闭的。

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

#在已知各服务的讯息中,不要记录到这个文件中,把已知的服务记录到单独的日志文件中去,方便日后查询,否则messages这个文件就太混乱了。

这个文件非常重要,所有未知的信息都会被记录在这个文件中,所以有问题,找这个文件就八九不离十了。

authpriv.*/var/log/secure

#这个就是经过一些身份确认的行为之后,需要记录身份的文件。

mail.*-/var/log/maillog

#只要跟mail有关的(不论是pop3还是sendmail)都会被纪录到这个文件!

cron.*/var/log/cron

#例行性命令相关的。

*.emerg*

#任何时候发生的警告讯息都会显示给在线的所有人!

那个*就是目前在线的所有人。

uucp,news.crit/var/log/spooler

#记录新闻错误高于crit的等级的信息,写入spooler当中!

local7.*/var/log/boot.log

#将开机的当中的讯息写入/var/log/boot.log中!

每个版本的syslog.conf差异是很大的,所以,每个登录文件记录的数据其实不很固定。

例:

让所有的信息都额外写入到/var/log/admin.log!

[root@linux~]#vi/etc/syslog.conf

*.info/var/log/admin.log》》如果服务器硬盘容量够大,这么做也不失为一个良策。

[root@linux~]#/etc/init.d/syslogrestart

[root@linux~]#ll/var/log/admin.log

-rw-------1rootroot122Oct2322:

21/var/log/admin.log》》注意权限

一台主机管理多台主机登录文件

#1.先取得portnumber的信息!

[root@linux~]#grep514/etc/services

syslog514/udp》》syslog的固定端口

#注意,/etc/services里面必须要存在这一行才行,否则自行手写!

#2.修改syslogd的启动配置文件

[root@linux~]#vi/etc/sysconfig/syslog

#SYSLOGD_OPTIONS="-m0"改成底下这样子

SYSLOGD_OPTIONS="-m0-r"

#3.重新启动与观察syslogd!

[root@linux~]#/etc/init.d/syslogrestart

[root@linux~]#netstat-tlunp

ProtoRecv-QSend-QLocalAddressForeignAddressStatePID/Programname

udp000.0.0.0:

5140.0.0.0:

*24314/syslogd

Linux主机已经可以接收来自其它主机的登录信息了!

client端的设定就简单了!

只要指定某个信息传送到这部主机即可!

比如,登录文件主机IP为192.168.1.100,而client端希望所有的数据都送给主机,可以在/etc/syslog.conf里面新增这样的一行:

[root@linux~]#vi/etc/syslog.conf

*.*@192.168.1.100

未来主机上面的登录文件当中,每一行的主机名称就会显示来自不同主机的信息了。

登录文件服务程序之二,轮滚(logrotate):

对于Linux的系统安全来说,日志文件是极其重要的工具。

系统管理员可以使用logrotate程序用来管理系统中的最新的事件。

  对于Linux的系统安全来说,日志文件是极其重要的工具。

  系统管理员可以使用logrotate程序用来管理系统中的最新的事件。

logrotate还可以用来备份日志文件,本篇将通过以下几部分来介绍日志文件的管理:

1、logrotate配置

2、缺省配置logrotate

3、使用include选项读取其他配置文件

4、使用include选项覆盖缺省配置

5、为指定的文件配置转储参数

一、logrotate配置

  logrotate程序是一个日志文件管理工具。

用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做“转储”。

我们可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过cron程序来执行。

  logrotate程序还可以用于压缩日志文件,以及发送日志到指定的E-mail。

  logrotate的配置文件是/etc/logrotate.conf。

主要参数如下表:

参数        功能

compress      通过gzip压缩转储以后的日志

nocompress     不需要压缩时,用这个参数

copytruncate    用于还在打开中的日志文件,把当前日志备份并截断

nocopytruncate   备份日志文件但是不截断

createmodeownergroup转储文件,使用指定的文件模式创建新的日志文件

nocreate      不建立新的日志文件

delaycompress   和compress一起使用时,转储的日志文件到下一次转储时才压缩

nodelaycompress  覆盖delaycompress选项,转储同时压缩。

errorsaddress   专储时的错误信息发送到指定的Email地址

ifempty      即使是空文件也转储,这个是logrotate的缺省选项。

notifempty     如果是空文件的话,不转储

mailaddress    把转储的日志文件发送到指定的E-mail地址

nomail       转储时不发送日志文件

olddirdirectory  转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统

noolddir      转储后的日志文件和当前日志文件放在同一个目录下

prerotate/endscript 在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行

postrotate/endscript 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行

daily        指定转储周期为每天

weekly        指定转储周期为每周

monthly        指定转储周期为每月

rotatecount    指定日志文件删除之前转储的次数,0指没有备份,5指保留5个备份

tabootext[+]list 让logrotate不转储指定扩展名的文件,缺省的扩展名是:

.rpm-orig,.rpmsave,v,和~

sizesize     当日志文件到达指定的大小时才转储,Size可以指定bytes(缺省)以及KB(sizek)或者MB(sizem).

二、缺省配置logrotate

logrotate缺省的配置/etc/logrotate.conf。

RedHatLinux缺省安装的文件内容是:

#see“manlogrotate”fordetails

#rotatelogfilesweekly

weekly

#keep4weeksworthofbacklogs

rotate4

#senderrorstoroot

errorsroot

#createnew(empty)logfilesafterrotatingoldones

create

#uncommentthisifyouwantyourlogfilescompressed

#compress

1

#RPMpackagesdroplogrotationinformationintothisdirectory

include/etc/logrotate.d

#nopackagesownlastlogorwtmp?

we&aposllrotatethemhere

/var/log/wtmp{

monthly

create0664rootutmp

rotate1

}

/var/log/lastlog{

monthly

rotate1

}

#system-specificlogsmaybeconfiguredhere

缺省的配置一般放在logrotate.conf文件的最开始处,影响整个系统。

在本例中就是前面12行。

第三行weekly指定所有的日志文件每周转储一次。

第五行rotate4指定转储文件的保留4份。

第七行errorsroot指定错误信息发送给root。

第九行create指定logrotate自动建立新的日志文件,新的日志文件具有和

原来的文件一样的权限。

第11行#compress指定不压缩转储文件,如果需要压缩,去掉注释就可以了。

三、使用include选项读取其他配置文件

include选项允许系统管理员把分散到几个文件的转储信息,集中到一个

主要的配置文件。

当logrotate从logrotate.conf读到include选项时,会从指定文件读入配置信息,就好像他们已经在/etc/logrotate.conf中一样。

第13行include/etc/logrotate.d告诉logrotate读入存放在/etc/logrotate.d目录中的日志转储参数,当系统中安装了RPM软件包时,使用include选项十分有用。

RPM软件包的日志转储参数一般存放在/etc/logrotate.d目录。

include选项十分重要,一些应用把日志转储参数存放在/etc/logrotate.d。

典型的应用有:

apache,linuxconf,samba,cron以及syslog。

这样,系统管理员只要管理一个/etc/logrotate.conf文件就可以了。

四、使用include选项覆盖缺省配置

当/etc/logrotate.conf读入文件时,include指定的文件中的转储参数将覆盖缺省的参数,如下例:

#linuxconf的参数

/var/log/htmlaccess.log

{errorsjim

notifempty

nocompress

weekly

prerotate

/usr/bin/chattr-a/var/log/htmlaccess.log

endscript

postrotate

/usr/bin/chattr+a/var/log/htmlaccess.log

endscript

}

/var/log/netconf.log

{nocompress

monthly

}

在这个例子中,当/etc/logrotate.d/linuxconf文件被读入时,下面的参数将覆盖/etc/logrotate.conf中缺省的参数。

Notifempty

errorsjim

五、为指定的文件配置转储参数

经常需要为指定文件配置参数,一个常见的例子就是每月转储/var/log/wtmp。

为特定文件而使用的参数格式是:

#注释

/full/path/to/file

{

option(s)

}

下面的例子就是每月转储/var/log/wtmp一次:

#Uselogrotatetorotatewtmp

/var/log/wtmp

{

monthly

rotate1

}

六、其他需要注意的问题

1、尽管花括号的开头可以和其他文本放在同一行上,但是结尾的花括号必须单独成行。

2、使用prerotate和postrotate选项

下面的例子是典型的脚本/etc/logrotate.d/syslog,这个脚本只是对

/var/log/messages有效。

/var/log/messages

{

prerotate

/usr/bin/chattr-a/var/log/messages

endscript

postrotate

/usr/bin/kill-HUPsyslogd

/usr/bin/chattr+a/var/log/messages

endscript

}

第一行指定脚本对/var/logmessages有效

花ê哦阅诓康慕疟驹诵杏?

/var/log/messages

prerotate命令指定转储以前的动作/usr/bin/chattr-a去掉/var/log/messages文件的“只追加”属性endscript结束prerotate部分的脚本postrotate指定转储后的动作

/usr/bin/killall-HUPsyslogd

用来重新初始化系统日志守护程序syslogd

/usr/bin/chattr+a/var/log/messages

重新为/var/log/messages文件指定“只追加”属性,这样防治程序员或用户覆盖此文件。

最后的endscript用于结束postrotate部分的脚本

3、logrotate的运行分为三步:

判断系统的日志文件,建立转储计划以及参数,通过crondaemon运行下面的代码是RedHatLinux缺省的crontab来每天运行logrotate。

#/etc/cron.daily/logrotate

#!

/bin/sh

/usr/sbin/logrotate/etc/logrotate.conf

4、/var/log/messages不能产生的原因:

这种情况很少见,但是如果你把/etc/services中的514/UDP端口关掉的话,这个文件就不能产生了。

小结:

本文通过对RedHat系统上典型的logrotate配置例子的介绍,详细说明了logrotate程序的应用方法。

希望对所有Linux系统管理员有所帮助。

Logrotate补充:

所谓的logrotate,就是将旧的log文件更名,然后建立一个空的log文件,如此一来,新的log文件将从零开始记录,然后只要将旧的log文件留下一段时间!

旧的纪录保存了一段时间没有问题,那么就可以让系统自动的将他删掉,否则占用硬盘空间。

如图比如规定了message日志文件轮滚3次:

最初的日志文件message

轮滚一次后messagemessage1

轮滚二次后messagemessage1message2

轮滚三次后messagemessage1message2message3

删除(如果再次轮滚,message3就会被删除,而message2就会变成message3,且系统会新建立一个message)

注意,相同颜色的mssage表示的是一个内容的文件,只不过每次轮滚他的名字后面会改一次数字。

logrotate的配置文件

/etc/logrotate.conf

/etc/logrotate.d/

注意!

logrotate.conf才是主要的参数文件,logrotate.d是一个目录,该目录里面的所有文件都会被主动的读入/etc/logrotate.conf当中来进行!

另外,在/etc/logrotate.d/里面的文件中,如果没有规定到的一些细部设定,则以/etc/logrotate.conf的规定来指定为默认值!

[root@linux~]#vi/etc/logrotate.conf

#底下是"logrotate的预设值,如果个别的文件设定了其它的参数,那么将以个别的文件设定为主,若该文件没有设定到的参数,则以这个档案的内容为默认值!

Weekly预设每个礼拜对登录文件进行一次rotate的工作

rotate4保留四个登录文件!

create是否建立新的登录文件来记录!

#compressrotate之后的登录文件,是否压缩,通常是不要压缩啦,压缩登录文件扩展名会变成messages.1.gz!

系统负载不大,且日志比较大,可以考虑压缩。

include/etc/logrotate.d》》将底下这个目录中的所有文件都读进来执行rotate的工作!

/var/log/wtmp{

monthly

create0664rootutmp

rotate1

}

省略。

#在logrotate.conf文件当中,只有这个数据是在记载如何对登录文件进行轮替的!

这个登录文件记载的就是使用login登入系统时的使用者状态,last就是读自/var/log/wtmp当中记录的数据!

整个段落的意义是:

#1.每个月进行一次logrotate的工作;

#2.将文件的权限设定为664,且拥有者为root,群组为utmp;

#3.仅保存前一个月的rotate备份!

可以修改大一点

[root@linux~]#vi/etc/logrotate.d/syslog

/var/log/messages/var/log/secure/var/log/maillog/var/log/spooler

/var/log/boot.log/var/log/cron{

sharedscripts

postrotate

/bin/kill-HUP`cat/var/run/syslogd.pid2>/dev/null`2>/dev/null||true

endscript

}

设定的项目与前面提到的相同,并且可加入轮替前(pre)与后(post)的一

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1