Linux 日志系统组成详解


Linux 日志系统有三部分组成:

一、使用什么工具记录系统产生的日志信息?
      syslog服务脚本管理的两个进程: syslogd、klogd 来记录系统产生的日志信息;
      klogd    进程是专门为内核产生的日志信息服务的。
      syslogd  进程是专门为应用程序服务(除了内核)产生的日志信息服务的;
      只有调用了 logger 接口,应用程序才可以调用 syslogd工具帮助记录日志信息。

二、只要系统服务在运行,就会产生日志信息,我们使用专门的工具把它记录到磁盘上了,为了方便分析日志,日志文件不能太大、很久以前的日志文件我们应该把它删掉。这些工作由谁完成呢?
        使用 logrotate 命令来滚动,syslog记录的日志文件。

RHEL5.4部署中央日志服务器之rsyslog+Log Analyzer

CentOS 6.3下利用Rsyslog+LogAnalyzer+MySQL部署日志服务器

RHEL5.4部署中央日志服务器之rsyslog+loganalyzer

使用rsyslog mysql 和logAnalyzer 的日志服务器

CentOS 6.3下利用Rsyslog+LogAnalyzer+MySQL部署日志服务器

三、为了让人们从繁忙的工作中解脱出来。自动化管理:日志文件的滚动、备份、压缩等工作。
        使用两个忠实的劳动者(进程):crond 和 anacron ,完成上述的所有工作。 

看看它们各部分的实现过程:
1、syslog
      syslog 只是用来管理 sysogd 和 klogd 的服务脚本。它们的配置文件在 /etc/syslog.conf

    [root@node2 logs]# cat /etc/syslog.conf     

    # Log anything (except mail) of level info or higher.

    # Don't log private authentication messages!

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

    # 星号(*) 表示通配所有的 priority

    # *.info  表示记录所有priority的info级别的日志信息。注意不紧包括 info 级别的,还包括比 info 级别高的所有日志信息都会被记录下来。如:notice、warn、err、...、panic

    # *.info;mail.none;authpriv.none;cron.none  表示星号(*)通配的所有 priority但不包括 mail、authpriv、cron.

    # 意思是说,mail、authpriv、cron 系统的日志信息不会被记录到 /var/log/messages 中来。

   

    # Log all the mail messages in one place.

      mail.*                                                  -/var/log/maillog

    # 星号(*)  表示通配所有的 priority.

    # mail.*  表示记录系统 mail 产生的所有级别的日志信息。

    # -/var/log/maillog  横线(-)表示系统 mail 产生的日志信息是异步写入磁盘的。意思是先把它存在 page cache 缓冲池中。再根据某种策略把它一次性刷写到磁盘中。

    # mail 是一个很繁忙的系统,产生的日志信息量非常大。如果每次产生的日志信息就立即把它写到磁盘上的话,效率是很低的。磁盘IO速度很慢的。原因,系统默认是启动

    # 两个脏页刷写线程的。可以通过/proc接口查看 [root@node2 ~]# cat /proc/sys/vm/nr_pdflush_threads 。Linux 会根据系统繁忙程度启动更多的线程来为刷写脏页服务的。

    # 当然我们也可以调节该内核参数。但是要根据我们硬件CPU的颗数来调节。

    # Everybody gets emergency messages

      *.emerg                                                *

     

    # *.emerg  *    表示所有系统的emerg等级的日志信息都发给所有用户。

    # Save boot messages also to boot.log

      local7.*                                                /var/log/boot.log

    # 该项记录的是系统引导过程的所有级别的日志信息。


    配置文件格式:
                facility.priority        /path
    facility            是用来定义由谁产生的日志信息:那个软件、子系统运行过程中产生的日志信息。
    priority            是用来定义记录什么类型的日志信息。是应用程序产生的所有信息都把它记录到日志

                            文件中呢,还是只记录该应用程序的错误日志信息等等。
    /path/file_name      是用来定义把日志信息写到哪里去。

    查看常见的facility和priority:

[root@node2 ~]# man syslog.conf

          # 常见的 facility

          The  facility  is  one of the following keywords: auth, authpriv, cron,

      daemon, kern, lpr, mail, mark, news, security (same as  auth),  syslog,

      user,  uucp and local0 through local7.

         

  # 常见的 priority

          The priority is one of the  following  keywords,  in  ascending  order:

      debug,  info, notice, warning, warn (same as warning), err, error (same

      as err), crit, alert, emerg,  panic  (same  as  emerg).


      syslog 有统一的日志文件格式,方便管理员阅读。
      Linux 系统日志文件的标准格式:
                                事件发生的时间    哪台主机的日志    产生日志信息的系统    系统发生的事件
      它们各字段之间使用空格隔开。

[root@node2 ~]# tail /var/log/cron

Jun 12 10:00:01 node2 crond[5487]: (root) CMD (/usr/lib/sa/sa1 1 1)Jun 12 10:01:01 node2 crond[5490]:(root) CMD (run-parts /etc/cron.hourly)


    说明:
          事件发生的时间:        Jun 12 10:01:01
          哪台主机的日志:        node2
          产生日志信息的系统:    crond[5490]
          系统发生的事件:        CMD (run-parts /etc/cron.hourly)

[root@node2 ~]# tail -2 /var/log/messages

Jun 11 22:13:54 node2 syslogd 1.4.1: restart.

Jun 11 22:13:54 node2 kernel: klogd 1.4.1, log source = /proc/kmsg started.

更多详情见请继续阅读下一页的精彩内容:

  • 1
  • 2
  • 3
  • 下一页

相关内容