一、了解日志的含义

  1. 日志的含义:操作系统运行当中会产生很多信息,这些信息即是我们观察系统运行过程当中正常状况的一种途径或一种手段的凭借,同时它也为我们提供了当发生故障的时候定位问题所在的必要信息  

  2. (事实上,任何一个操作系统都提供了强大的日志系统,用于记录各子系统运行当中产生的各种信息)

二、简单介绍syslog和syslog-ng

1、Linux上的日志系统  

  1. syslog   : REDHAT5上使用syslog  

  2. syslog-ng:(下一代,升级版的日志系统)它有两个版本开源版(免费版)和商业版  REDHAT6上使用syslog-ng  

  3. syslog是一个服务,专门用于提供记录日志的功能(有两个进程,记录日志需要有两个程序来完成)  

  4.     syslogd:系统,非内核产生的日志信息  

  5.     klogd:内核,专门负责记录内核产生的日志信息  

2、系统启动过程:kernel初始化(产生很多信息) --> 物理终端(/dev/console) --> 默认记录到/var/log/dmesg  

  1. # dmesg  用于打开/var/log/dmesg 文件并显示出来  

  2. # cat /var/log/dmesg  

3、日志需要滚动(日志切割)  

  1. messages  messages.1  messages.2     

  2. 一般来讲日志应该经常滚动,以免日志文件过大导致日志信息分析不便  

  3. /sbin/init   产生的信息由syslog记录  

  4.     /var/log/message:系统标准错误日志信息;非内核产生引导信息:各子系统产生的信息;大多数系统产生的信息都会在此  

  5.     /var/log/maillog:邮件系统产生的信息  

  6.     /var/log/secure :与安全相关的信息  

  7. syslog:   

  8.       syslogd  

  9.       klogd  

  10.       配置文件:/etc/syslog.conf  

  11.       级别越低信息越详细  

  12.       cron.*:同步信息       

  13. 信息详细程度:日志级别(定义不同的日志信息)用于记录信息的程度  

  14. 子系统:facility ,设施,设备  

  15. 子系统产生的信息叫动作:  

4、配置文件定义格式为: facility.priority        action

  1.  facility,可以理解为日志的来源或设备目前常用的facility有以下几种:   

  2.     auth                # 跟认证相关的   

  3.     authpriv            # 跟权限,授权相关的   

  4.     cron                # 任务计划相关的   

  5.     daemon              # 守护进程相关的   

  6.     kern                # 内核相关的   

  7.     lpr                 # 打印相关的   

  8.     mail                # 邮件相关的   

  9.     mark                # 标记相关的   

  10.     news                # 新闻相关的   

  11.     security            # 安全相关的,与auth 类似    

  12.     syslog              # 记录syslog自己的   

  13. user                # 用户相关的   

  14.     uucp                # unix to unix cp 相关的   

  15.     local0 到 local7     # 用户自定义使用   

  16.     *                   # *表示所有的facility   

5、 priority(log level)日志的级别,一般有以下几种级别(从低到高)   

  1.     debug           # 程序或系统的调试信息 (级别越低记录的日志信息越详细,但会导致硬盘超负荷)  

  2.     info            # 一般信息  

  3.     notice          # 不影响正常功能,需要注意的消息   

  4.     warning/warn    # 可能影响系统功能,需要提醒用户的重要事件   

  5.     err/error       # 错误信息   

  6.     crit            # 比较严重的     (可比作蓝色警报)  

  7.     alert           # 必须马上处理的 (可比作橙色警报)  

  8.     emerg/panic     # 会导致系统不可用的 (可比作红色警报)  panic(恐慌)  

  9.     *               # 表示所有的日志级别   

  10.     none            # 跟* 相反,表示什么也不记录   

  11. 一般来讲比notice高的所有级别都会被记录到       

6、action(动作)指定日志记录的位置   

  1.     系统上的绝对路径    # 普通文件 如: /var/log/xx  

  2.     |                   # 管道  通过管道将命令信息送给其他的命令处理   

  3.     终端                # 终端   如:/dev/console 输出到物理终端  

  4.     @HOST               # 远程主机 如: @10.0.0.1        

  5.     用户                # 系统用户 如: root   

  6.     *                   # 登录到系统上的所有用户,一般emerg级别的日志是这样定义的   

7、定义格式例子  

  1. mail.info   /var/log/mail.log # 表示将mail相关的,级别为info   

  2.                               # info以上级别的信息记录到/var/log/mail.log文件中   

  3. auth.=info  @10.0.0.1         # 表示将auth相关的,基本为info的信息记录到10.0.0.1主机上去   

  4.                               # 前提是10.0.0.1要能接收其他主机发来的日志信息   

  5. user.!=error                  # 表示记录user相关的,不包括error级别的信息   

  6. user.!error                   # 与user.error相反 ,只记录比error低的所有信息  

  7. *.info                        # 表示记录所有的日志信息的info级别   

  8. mail.*                        # 表示记录mail相关的所有级别的信息   

  9. *.*                           # 表示记录所有的日志信息的所有级别的日志信息   

  10. cron.info;mail.info           # 多个日志来源可以用";" 隔开   

  11. cron,mail.info                # 与cron.info;mail.info 是一个意思 多个日志来源可以用"," 隔开   

  12. mail.*;mail.!=info            # 表示记录mail相关的所有级别的信息,但是不包括info级别的   

三、实例  

  1. 能够接受其它主机发来的信息,并且记录到本机上来  

# service syslog restart  重启操作系统  

# vim /etc/sysconfig/syslog  编辑配置文件内容如下:

  1. # Options to syslogd  

  2. # -m 0 disables 'MARK' messages.  

  3. # -r enables logging from remote machines  

  4. # -x disables DNS lookups on messages recieved with -r  

  5. # See syslogd(8) for more details  

  6. SYSLOGD_OPTIONS="-r -m 0"     此处加个-r选项就能作为日志服务器了  

  7. # Options to klogd  

  8. # -2 prints all kernel oops messages twice; once for klogd to decode, and

  9. #    once for processing with'ksymoops'

  10. # -x disables all klogd processing of oops messages entirely  

  11. # See klogd(8) for more details  

  12. KLOGD_OPTIONS="-x"

  13. #  

  14. SYSLOG_UMASK=077  

  15. set this to a umask value to use forall log files asin umask(1).  

  16. Bydefaultall permissions are removed for"group"and"other".   

若还有其它主机,怎么可以把自己写的日志信息记录给别人,如何实现远程日志?  

# vim /etc/syslog.conf  编辑配置文件内容如下:

  1.  # Log all kernel messages to the console.  

  2. # Logging much else clutters up the screen.  

  3. #kern.*                                                 /dev/console  

  4. # Log anything (except mail) oflevel info or higher.  

  5. # Don't log private authentication messages!  

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

  7. # The authpriv file has restricted access.  

  8. authpriv.*                                              /var/log/secure  

  9. # Log all the mail messages in one place.  

  10. mail.*                                                  @172.16.59.1  把所有日志信息都记录到另一台主机上去  

  11. # Log cron stuff  

  12. cron.*                                                  /var/log/cron  

  13. # Everybody gets emergency messages  

  14. *.emerg                                                 *  

  15. # Save news errors oflevel crit and higher in a special file.  

  16. uucp,news.crit                                          /var/log/spooler  

  17. # Save boot messages also to boot.log  

  18. local7.*                                                /var/log/boot.log