我们都知道操作系统下都是提供日志生成的,方便管理员对操作系统全方面问题进行排查。但默认的日系统日志不对日志进行分类,不便对问题进行分类排查。所以我对syslog进行了大量学习工作,以下是我总结出来日志分类配置的方法。
linux下的syslog配置说明
一、 syslog.conf文件配置说明
/etc/syslog.conf文件中的一项配置记录由“选项”(selector)和“动作”(action)两个部分组成,两者间用tab制表符进行分隔。而“选项”又由一个或多个形如“类型.级别”格式的保留字段组合而成,各保留字段间用分号分隔。
保留字段中的“类型”代表信息产生的源头,可以是:
kern 由kernel产生的信息;
user 由用户进程产生的信息。对那些由程序或不在此列出的工具产生的信息,其缺省类型都是“user”;
mail 邮件系统产生的信息;
daemon 系统守护进程的信息,如in.ftpd、telnetd; auth 由login, su, getty等进行身份认证时产生的信息; s
yslog 由syslogd自己内部产生的信息;
lpr 行打印spooling系统的信息;
news USENET 网络新闻系统的信息;
uucp UUCP系统信息;
cron cron和at工具信息;
local0-7 保留为local使用;
mark syslogd内部产生的时间戳信息;
* 除mark之外的所有其它类型(此符号不可用以代表所有级别)。
保留字段中的“级别”代表信息的重要性,可以是:
emerg 紧急,处于Panic状态。通常应广播到所有用户;
alert 告警,当前状态必须立即进行纠正。例如,系统数据库崩溃;
crit 关键状态的警告。例如,硬件故障;
err 其它错误;
warning 警告;
notice 注意;非错误状态的报告,但应特别处理;
info 通报信息; debug 调试程序时的信息;
none 通常调试程序时用,指示带有none级别的类型产生的信息无需送出。
如*.debug;mail.none表示调试时除邮件信息外其它信息都送出。
“动作”域指示信息发送的目的地。可以是:
/filename 日志文件。由绝对路径指出的文件名,此文件必须事先建立;
@host 远程主机;
user1, user2 指定用户。如果指定用户已登录,那么他们将收到信息;
* 所有用户。所有已登录的用户都将收到信息。
二、 Syslog 服务启停:
syslogd进程在系统启动时由/etc/rc2.d/S74syslog启动。 如果需要手工启动或停止syslogd,可以使用命令:
(Solaris /Linux平台)
启动 # /etc/init.d/syslog start
停止 # /etc/init.d/syslog stop
(HP-UX 平台)
启动 # /sbin/init.d/syslog start
停止 # /sbin/init.d/syslog stop
(AIX 平台)
启动 #startsrc -s syslogd
(CentOS 6)
启动 # /etc/init.d/rsyslog start
停止 # /etc/init.d/rsyslog stop
三、日志转储
一、二点我们已经将日志分类配置方法说明,那对于日志最关键的还有转储功能,什么是转储呢?简单来讲就是我们不想让我们的日志过于庞大,所以需要按我们规定的时间来分割日志这样也便于我们按时间来分类日志方便我们对日志检索。
linux的日志转储功能:logrotate
logrotate 程序是一个日志文件管理工具。用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做“转储”。我们可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过 cron 程序来执行。
logrotate 程序还可以用于压缩日志文件,以及发送日志到指定的E-mail 。
logrotate 的配置文件是 /etc/logrotate.conf。主要参数如下表:
参数 功能
compress 通过gzip 压缩转储以后的日志
nocompress 不需要压缩时,用这个参数
copytruncate 用于还在打开中的日志文件,把当前日志备份并截断
nocopytruncate 备份日志文件但是不截断
create mode owner group 转储文件,使用指定的文件模式创建新的日志文件
nocreate 不建立新的日志文件
delaycompress 和 compress 一起使用时,转储的日志文件到下一次转储时才压缩
nodelaycompress 覆盖 delaycompress 选项,转储同时压缩。
errors address 专储时的错误信息发送到指定的Email 地址
ifempty 即使是空文件也转储,这个是 logrotate 的缺省选项。
notifempty 如果是空文件的话,不转储
mail address 把转储的日志文件发送到指定的E-mail 地址
nomail 转储时不发送日志文件
olddir directory 转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
noolddir 转储后的日志文件和当前日志文件放在同一个目录下
prerotate/endscript 在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行
postrotate/endscript 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行
daily 指定转储周期为每天
weekly 指定转储周期为每周
monthly 指定转储周期为每月
rotate count 指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
tabootext [+] list 让logrotate 不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v, 和 ~
size size 当日志文件到达指定的大小时才转储,Size 可以指定 bytes (缺省)以及KB (sizek)或者MB (sizem).
include 选项十分重要,一些应用把日志转储参数存放在 /etc/logrotate.d 。
典型的应用有:apache, linuxconf, samba, cron 以及syslog。prerotate 命令指定转储以前的动作/usr/bin/chattr -a 去掉/var/log/messages文件的“只追加”属性 endscript 结束 prerotate 部分的脚本postrotate 指定转储后的动作
用来重新初始化系统日志守护程序 syslogd
/usr/bin/chattr +a /var/log/messages