Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2484242
  • 博文数量: 609
  • 博客积分: 10061
  • 博客等级: 上将
  • 技术积分: 5920
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-25 08:30
文章分类

全部博文(609)

文章存档

2010年(13)

2009年(39)

2008年(558)

我的朋友

分类: LINUX

2008-06-29 13:25:35

 
几个登录档

    * /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: 分别是几个不同的网络服务的记录文件。
 
Linux 登录档的规划: syslogd服务, logrotate
    * syslogd:进行系统或者是网络服务的登录文件记录工作;
    * logrotate:将旧的数据更名,并且建立新的登录档,以保持登录档的『新鲜』,并视设定将最旧的登录档删除。
 
-------------------------------------------------------------------

syslogd:
而通常syslog提供的记录参数主要有:
    * 事件发生时间;
    * 主机名称;
    * 启动此事件的服务名称(例如 httpd, samba...)
    * 讯息数据内容
 
其实预设的 syslogd 程序的参数档案就是 /etc/syslog.conf 这个档案内容啦!这个档案的内容可以规定『什么服务需要被记录、该服务被纪录的讯息等级如何?』。基本上,可以使用底下的句子语法来说明:
      
      服务名称.讯息等级   存放或显示地点
    * 服务名称:例如 mail, http, news, cron, at 等等的服务名称;
 
    * 讯息等级:总共分成下列几种等级:
           info : 提示一些讯息数据;
           notice : 注意!需要比较留意的讯息;
           waring 或 warn : 警示的讯息,以上三个讯息都还是没有错误的情况,虽然是需要留意,但是还没有到错误的情况;
           err 或 error : 呀!错误讯息出现了!该要检验错误的问题发生原因了;
           crit : 临界点了!再不处理可就伤脑筋了!
           alert : 错误讯息一再地警告警告!你将要完蛋了!
           emerg 或 panic : 阿!系统已经进入混乱的阶段!真的是完蛋了~~
                              特殊等级:例如 debug (显示较多的信息!)及 none (不要记录该服务的内容!)等!
    *   存放或显示地点:通常我们使用的都是记录的档案啦!但是也可以输出到装置呦!例如打印机之类的!
                              档案的绝对路径:通常就是放在 /var/log 里头的档案啦!
                              打印机或其它:例如 /dev/lp0 这个打印机装置
                              使用者名称:显示给使用者啰!
                                远程主机:例如 @test.adsldns.org
 
例题一:如果我要将我的mail相关的数据给他写入/var/log/maillog当中,那么在/etc/syslog.conf就要写成:
    mail.info        /var/log/maillog
注意到上面喔,当我们的等级使用info时,那么『任何大于info等级(含info这个等级)之上的讯息,都会被写入到后面接的档案之中!』这样可以了解吗?也就是说,我们可以将所有mail的登录信息都纪录在/var/log/maillog里面的意思啦!
 
例题二:我要将新闻群组数据(news)及例行性命令的信息(cron)都写入到一个称为/var/log/cronnews的档案中,但是这两个程序的警告讯息记录在/var/log/cronnews.warn该如何设定我的档案呢?很简单啦!既然是两个程序,那么只好以分号来隔开了,此外,由于第二个指定档案中,我只要记录警告讯息,因此设定上需要指定『=』这个符号,所以就成为了:
    news.*;cron.*             /var/log/cronnews
    news.=warn;cron.=warn     /var/log/cronnews.warn
上面那个『=』就是在指定等级的意思啦!由于指定了等级,因此,只有这个等级的讯息才会被纪录在这个档案里面呢!
 
例题三:我的messages这个档案需要记录所有的信息,但是就是不想要记录cron,mail及news的信息,那么应该怎么写才好?可以有两种写法,分别是:
    *.*;news,cron,mail.none            /var/log/messages
    *.*;news.none;cron.none;mail.none  /var/log/messages
使用『,』分隔时,那么等级只要接在最后一个即可,如果是以『;』来分的话,那么就需要将服务与等级都写上去啰!这样会设定了吧!
 
了解语法之后,我们来看一看在尚未开启网络服务的情况下,我们的 syslog 有哪些系统服务已经在纪录了呢?!那就是瞧一瞧 /etc/syslog.conf 这个档案的预设内容。

------------------------------------------------------------------ 

logrotate:
    * /etc/logrotate.conf
    * /etc/logrotate.d
我们来看一下预设的 logrotate.conf 的内容吧!
 
# 底下的设定是 logrotate 的预设设定值,如果个别的档案设定了其它的参数,
# 那么将以个别的档案设定为主,若该档案没有设定到的参数,
# 则以这个档案的内容为默认值!
# 每个礼拜进行一次 rotate 的工作
weekly
# 保留几个登录档呢?预设是保留四个!
rotate 4
# 是否建立新的登录文件来记录呢?因为我们要继续记录,所以当然是建立啰!
create
# rotate之后的登录档,要不要压缩,通常是不要压缩啦,
# 但是如果你的系统很忙碌,表示你的登录档很庞大的时候,
# 那么最好就是给他压缩一下比较不会占空间!
Compress
# 将底下这个目录中的所有档案都读进来执行 rotate 的工作!
include /etc/logrotate.d
# 至于登录的信息部分,有使用 last 来纪录的登录者信息就是记录在这个档案中!
# 底下就是 /var/log/wtmp 这个档案的 rotate 情况,他的意思是:
# 1. 每个月进行一次 log rotate 的工作;
# 2. 将档案的权限设定为 664 啰!
# 3. 仅保存前一个月的 rotate 备份!这个可以改大一点,例如 5 !保存五个月,以利追踪
/var/log/wtmp {
    monthly
    create 0664 root utmp
    rotate 1
}
# 底下这个档案跟 /var/log/wtmp 类似!
/var/log/lastlog {
    monthly
    rotate 1
}
          
          正确的 logrotate 的写法中:
      
               将 log file 名称(包含绝对路径)写在前面,可以使用空格符分隔多个 log files ;
               用 { } 包括所有的设定;
               设定的项目与前面提到的相同,并且可加入 rotate 前 (pre) 与后 (post) 的一些特殊执行的指令!
                  + prerotate:在启动 logrotate 之前进行的指令,例如修改 log file 的属性!!
                  + postrotate:在做完 logrotate 之后启动的指令,例如重新启动( kill -1 或 kill -HUP )某个服务!
                  + Prerotate与postrotate对于已经加上了特殊属性的档案处理上面,是相当重要的执行程序!
           
         
一个例子:
           
          /var/log/auth.log /var/log/syslog /var/log/user.log /var/log/secure /var/log/messages /var/log/boot.log /var/log/mail/errors /var/log/mail/info /var/log/mail/warnings /var/log/cron/errors /var/log/cron/info /var/log/cron/warnings /var/log/kernel/errors /var/log/kernel/info /var/log/kernel/warnings /var/log/lpr/errors /var/log/lpr/info /var/log/lpr/warnings /var/log/news/news.err /var/log/news/news.notice /var/log/news/news.crit /var/log/daemons/errors /var/log/daemons/info /var/log/daemons/warnings /var/log/explanations {
              sharedscripts
              rotate 5
              weekly
              prerotate
                  /usr/bin/chattr -a /var/log/auth.log
                  /usr/bin/chattr -a /var/log/messages
                  /usr/bin/chattr -a /var/log/secure
              endscript
              postrotate
                  /usr/bin/killall -HUP syslogd
                  /usr/bin/chattr +a /var/log/auth.log
                  /usr/bin/chattr +a /var/log/messages
                  /usr/bin/chattr +a /var/log/secure
              endscript
          }
           
          
Logrotate的测试:
          [root @test root]# logrotate –f /etc/logrotate.conf
       
          上面那个 -f 具有『强制执行』的意思
          好了,那么预设的logrotate什么时候执行呢?呵呵!不用担心,系统已经帮我们设定好了!放在哪里呢?
           
                /etc/cron.daily/logrotate  
          注意看一下里面的内容:
           #!/bin/sh
           /usr/sbin/logrotate /etc/logrotate.conf
           EXITVALUE=$?
           if [ $EXITVALUE != 0 ]; then
           /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
           fi
           exit 0
              
          由于 logrotate 的工作已经加入 crontab 里头了!所以现在每天系统都会自动的给他查看 logrotate !只是要注意一下那个 /var/log/messages 里头是否常常有:『Jun 23 04:02:00 test syslogd 1.4.1: restart.』这样的字样,这说明的是 syslogd 重新启动的时间(就是因为 /etc/logrotate.d/syslog 的设定之缘故.)
          例题:将 procmail 的 logfile (/var/log/procmail.log)加入 logrotate 当中!假设我们已经将 procmail 加入到 sendmail 的程序当中了,并且已经启动他,这个时候,如果我想要每个月份执行一次 logrotate ,并且保留五个月份的登录数据备份,应该怎么作呢?
          答:
              使用 vi 建立一个档案,档名为 /etc/logrotate.d/procmail,这个档案的内容为:
                  # This file is creating by VBird 2002/06/18
                  /var/log/procmail.log {
                      monthly
                      size=10M
                      rotate 5
                      nocompress
                  }
              上面说的是:
              1. 若该登录档工作超过一个月;
              2. 或该登录档大小超过 10 MB;
              3. 保存五个备份文件;
              4. 备份文件不要压缩!     

本文摘自《鸟哥的linux私房菜》,感谢鸟哥。
阅读(1034) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~