日志syslog与轮替logrotate

1、常见的日志:
/var/log/cron:crontab日志
/var/log/dmesg:记录系统在开机的时候核心侦测过程所产生的各项资讯。
/var/log/lastlog:可以记录系统上面所有的帐号最近一次登入系统时的相关资讯。
/var/log/maillog 或 /var/log/mail/*:记录邮件的往来资讯,其实主要是记录 sendmail (SMTP 协定提供者) 与 dovecot (POP3 协定提供者) 所产生的讯息啦。
/var/log/messages:系统日志,重要
/var/log/secure:基本上,只要牵涉到‘需要输入帐号密码’的软体,那么当登入时 (不管登入正确或错误) 都会被记录在此档案中。
/var/log/wtmp, /var/log/faillog:这两个档案可以记录正确登入系统者的帐号资讯 (wtmp) 与错误登入时所使用的帐号资讯 (faillog) !
/var/log/httpd/*, /var/log/news/*, /var/log/samba/*:各服务的日志

2、服务与程序有:
syslogd:主要登录系统与网路等服务的讯息;
klogd:主要登录核心产生的各项资讯;
logrotate:主要在进行登录档的轮替功能。

3、查syslog是否打开:ps aux | grep syslog 或chkconfig --list syslog

4、syslog可记录的日志有:
服务类别 说明
auth (authpriv) 主要与认证有关的机制,例如 login, ssh, su 等需要帐号/密码的咚咚;
cron 就是例行性工作排程 cron/at 等产生讯息记录的地方;
daemon 与各个 daemon 有关的讯息;
kern 就是核心 (kernel) 产生讯息的地方;
lpr 亦即是列印相关的讯息啊!
mail 只要与邮件收发有关的讯息纪录都属于这个;
news 与新闻群组伺服器有关的东西;
syslog 就是 syslogd 这支程式本身产生的资讯啊!
user, uucp, local0 ~ local7 与 Unix like 机器本身有关的一些讯息。

5、syslog 的配置文件:/etc/syslog.conf
格式说明:
# 底下以 mail 这个服务产生的 info 等级为例:
mail.info   /var/log/maillog_info
# 这一行说明:mail 服务产生的大于等于 info 等级的讯息,都记录到
# /var/log/maillog_info 档案中的意思。

6、等级 等级名称 说明
1 info 仅是一些基本的讯息说明而已;
2 notice 比 info 还需要被注意到的一些资讯内容;
3 warning
(warn) 警示的讯息,可能有问题,但是还不至于影响到某个 daemon 运作的资讯;基本上, info, notice, warn 这三个讯息都是在告知一些基本资讯而已,应该还不至于造成一些系统运作困扰;
4 err
(error) 一些重大的错误讯息,例如设定档的某些设定值造成该服务服法启动的资讯说明, 通常藉由 err 的错误告知,应该可以了解到该服务无法启动的问题呢!
5 crit 比 error 还要严重的错误资讯,这个 crit 是临界点 (critical) 的缩写,这个错误已经很严重了喔!
6 alert 警告警告,已经很有问题的等级,比 crit 还要严重!
7 emerg
(panic) 疼痛等级,意指系统已经几乎要当机的状态! 很严重的错误资讯了。通常大概只有硬体出问题,导致整个核心无法顺利运作,就会出现这样的等级的讯息吧!

还有debug(错误侦测等级) 与 none (不需登录等级) 两个。

7、赋值方式:
. :代表‘比后面还要高的等级 (含该等级) 都被记录下来’的意思,例如: mail.info 代表只要是 mail 的资讯,而且该资讯等级高于 info (含 info 本身)时,就会被记录下来的意思。
.=:代表所需要的等级就是后面接的等级而已, 其他的不要!
.!:代表不等于, 亦即是除了该等级外的其他等级都记录。

8、可以用一台服务器当日志服务器,别的机子的日志上传到上面去,也是用syslog功能,具体见别的资料。

9、日志轮替logrotate:
程序:/usr/sbin/logrotate
配置:/etc/logrotate.conf  和/etc/logrotate.d/
在crontab里排期: /etc/cron.daily/logrotate

10、配置文件说明:
[root@www ~]# vim /etc/logrotate.conf
# 底下的设定是 ""logrotate 的预设设定值"" ,如果个别的档案设定了其他的参数,
# 则将以个别的档案设定为主,若该档案没有设定到的参数则以这个档案的内容为预设值!

weekly    <==预设每个礼拜对登录档进行一次 rotate 的工作
rotate 4  <==保留几个登录档呢?预设是保留四个!
create    <==由于登录档被更名,因此建立一个新的来继续储存之意!
#compress <==被更动的登录档是否需要压缩?如果登录档太大则可考虑此参数启动

include /etc/logrotate.d

11、/etc/logrotate.d下文件说明:
例:
[root@www ~]# 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.pid 2> /dev/null` 2> /dev/null || true
    /bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true
  endscript
}

prerotate:在启动 logrotate 之前进行的指令,例如修改登录档的属性等动作;
postrotate:在做完 logrotate 之后启动的指令,例如重新启动 (kill -HUP) 某个服务!
sharedscripts .... endscript 内放脚本。

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

登录档轮替一个月进行一次;
该登录档若大于 10MB 时,则主动进行轮替,不需要考虑一个月的期限;
保存五个备份档案;
备份档案需要压缩

    # 1. 先建立 +a 这个属性啊!
    [root@www ~]# chattr +a /var/log/admin.log
    [root@www ~]# lsattr /var/log/admin.log
    -----a------- /var/log/admin.log
    [root@www ~]# mv /var/log/admin.log /var/log/admin.log.1
    mv: cannot move `/var/log/admin.log' to `/var/log/admin.log.1':
    Operation not permitted
    # 这里确定了加入 a 的隐藏属性!所以 root 无法移动此登录档!

    # 2. 开始建立 logrotate 的设定档,增加一个档案在 /etc/logrotate.d 内就对了!
    [root@www ~]# vi /etc/logrotate.d/admin
    # This configuration is from VBird 2009/04/08
    /var/log/admin.log {
            monthly   <==每个月进行一次
            size=10M  <==档案容量大于 10M 则开始处置
            rotate 5  <==保留五个!
            compress  <==进行压缩工作,nocompress表不压缩,或清空
            sharedscripts
            prerotate
                    /usr/bin/chattr -a /var/log/admin.log
            endscript
            sharedscripts
            postrotate
                    /usr/bin/killall -HUP syslogd
                    /usr/bin/chattr +a /var/log/admin.log
            endscript
    }

#dateext 表示切换后的日志文件会附加上一个短横线和YYYYMMDD格式的日期,如果没有这个配置项则会附加一个小数点加一个数字序号
#copytruncate     表示在复制当前日志文件后,将日志文件清空;而不是将当前日志文件改名后创建一个新的

13、测试是否成功,强制轮替:[root@www ~]# logrotate -vf /etc/logrotate.d/admin

14、注意:系统是自动一天检查一次,如果一天还没到,但达到size了也不轮替,如果要每小时检查一次,就得加入crontab里

你可能感兴趣的:(垃圾产品--linux)