天天看点

日志文件

1. 日志文件一般都位于/var/log, 日志所需要的服务和进程:

syslogd:主要登录系统与网路等服务的讯息;

klogd:主要登录核心产生的各项资讯;

logrotate:主要在进行登录档的轮替功能。

2.syslogd :记录日志的服务

syslog 的设定档:/etc/syslog.conf,这个档案规定了‘(1)什么服务 (2)的什么等级讯息 (3)需要被记录在哪里(设备或文件)’ 这三个咚咚,所以设定的语法会是这样:

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

auth (authpriv) 主要与认证有关的机制,例如 login, ssh, su 等需要帐号/密码的咚咚;

cron就是例行性工作排程 cron/at 等产生讯息记录的地方;

daemon与各个 daemon 有关的讯息;

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

lpr亦即是列印相关的讯息啊!

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

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

syslog就是 syslogd 这支程式本身产生的资讯啊!

user, uucp, local0 ~ local7 与 unix like 机器本身有关的一些讯息。

上面谈到的都是 syslog 自行制订的服务名称,软件开发商可以透过呼叫上述的服务名称来记录他们的软件。如下图所示:

日志文件

讯息等级:

syslog 将讯息分为七个主要的等级,依次为:

info notice warning(warn) err(error) crit  alert emerg(panic)

还有两个特殊的等级,那就是 debug(错误侦测等级) 与 none (不需登录等级,可以忽略掉某些服务)

在讯息等级之前还有 [.=!] 的连结符号喔!他代表的意思是这样的:

. :代表‘比后面还要高的等级 (含该等级) 都被记录下来’的意思,例如: mail.info 代表只要是 mail 的资讯,而且该资讯等级高于 info (含 info 本身)时,就会被记录下来的意思。

.=:代表所需要的等级就是后面接的等级而已, 其他的不要!

.!:代表不等于, 亦即是除了该等级外的其他等级都记录。

讯息记录的档名或装置或主机:

档案的绝对路径:通常就是放在 /var/log 里头的档案啦!

印表机或其他:例如 /dev/lp0 这个印表机装置

使用者名称:显示给使用者啰!

远端主机:例如 @www.vbird.tsai 当然啦,要对方主机也能支援才行!

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

自行增加日志文件功能

2.

日志文件的安全性设置:

为防止日志文件随意修改,可以添加日志文件的chattr的a属性。(即只能增加文件内容,不过前提是root的密码没被窃取,否则一切都没有)

不过,也因为这个 +a 的属性让该档案无法被删除与修改,所以啰,当我们进行日志文件轮替时 (logrotate) ,将会无法移动该日志文件的文件名呢!所以会造成很大的困扰。这个困扰虽然可以使用 logrotate 的设定档来解决。

要注意的是,当‘ 你不小心 "手动" 更动过日志文件后,例如那个 /var/log/messages , 你不小心用 vi 开启他,离开却下达 :wq 的参数,呵呵!那么该档案未来将不会再继续进行登录动作! ’这个问题真的很常发生!由于你以 vi 储存了登录档,则 syslogd 会误判为该档案已被更动过,将导致 syslogd 不再写入该档案新的内容。要让该登录档可以继续写入,你只要重新启动 syslog (/etc/init.d/syslog restart) 即可

日志文件服务器的设定:

如果有多台服务器,每一台负责一个服务,那么可以将日志文件都集中到一台专用的服务器上,以便查看和管理。

日志服务器端的设置:

日志客户端的设置:

3.日志文件的轮替(logrotate)

logrotate 是在规定的时间到了之后才来进行登录档的轮替, 所以这个 logrotate 程序是挂在 cron 底下进行的,/etc/cron.daily/logrotate 就是记录了每天要进行的登录档轮替的行为。

logrotate 这个程序的配置文件:

/etc/logrotate.conf

/etc/logrotate.d/

logrotate.conf 才是主要的参数档案,至于 logrotate.d 是一个目录, 该目录里面的所有档案都会被主动的读入 /etc/logrotate.conf 当中来进行!另外,在 /etc/logrotate.d/ 里面的档案中,如果没有规定到的一些细部设定,则以 /etc/logrotate.conf 这个档案的规定来指定为预设值!

它的备份方式如下:

日志文件

logrotate.conf的内容:

/etc/logrotate.d/中的设定档:

档名:被处理的登录档绝对路径档名写在前面,可以使用空白字元分隔多个登录档;

参数:上述档名进行轮替的参数使用 { } 包括起来;

执行脚本:可呼叫外部指令来进行额外的命令下达,这个设定需与 sharedscripts .... endscript 设定合用才行。至于可用的环境为:

prerotate:在启动 logrotate 之前进行的指令,例如修改登录档的属性等动作;

postrotate:在做完 logrotate 之后启动的指令,例如重新启动 (kill -hup) 某个服务!

prerotate 与 postrotate 对于已加上特殊属性的档案处理上面,是相当重要的执行程序!

logrotate的执行方法:

自定日志文件的轮替功能:

假设你已经建立了 /var/log/admin.log 这个档案, 现在,你想要将该档案加上 +a 这个隐藏标签,而且设定底下的相关资讯:

日志文件轮替一个月进行一次;

该登录档若大于 10mb 时,则主动进行轮替,不需要考虑一个月的期限;

保存五个备份档案;

备份档案需要压缩

 4.分析日志文件

logwatch这个命令可以分析日志文件,也可以自己写脚本来做分析,可以鸟哥写的分析脚本

继续阅读