Linux上的日志系统: syslogsyslog-ng(开源版和商业版)

            Redhat5上使用syslogRedhat6上使用syslog-ng

syslog-ng作为syslog的下一代产品,功能比syslog的功能强大的多,

      高性能

        可靠的传输

        支持多平台

        众多的用户群体

        强大的日志过滤及排序

         时间标签和关联性

         支持最新的IETF标准

        …….

   

日志系统:syslog,专门创建的一个程序,负责同意记录各程序所产生的日志

            信息详细程序:日志级别

       子系统:facility,设备

       动作:

          

          syslog服务:

                syslogd:系统,负责记录非内核产生的日志信息

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

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

                

       

  日志需要滚动:

        messages一段时间以后生成messages.1相同的世间之后生messages.2

          日志一段时间后需要滚动,以免文件过大导致日志信息分析不便

       

/sbin/init进程信息属于系统日志,放在以下位置:

       /var/log/messages:系统标准错误日志信息;非内核产生引导信息;

 各子系统产生的信息

 /var/log/maillog:邮件系统产生的日志信息

 

 /var/log/secure:用户登录信息日志  

                   这个日志系统的权限比较独特,一般不允许其他人随便查看

[root@station87 ~]# ll /var/log/secure

-rw------- 1 root root 37038 Mar 31 01:40 /var/log/secure

 任何一个用户在尝试登录的时候产生的登录信息都会有记录

                        [root@station87 ~]# tail /var/log/secure我们可以创建一个脚本,经常性地执行一下这个脚本,那就可以记录下来每天都有谁登陆过这个服务器

Mar 31 01:34:54 station87 sshd[3905]: Server listening on 0.0.0.0 port 22.

Mar 31 01:34:59 station87 atd[4047]: pam_unix(atd:session): session opened for user root by (uid=0)

Mar 31 01:35:00 station87 atd[4047]: pam_unix(atd:session): session closed for user root

Mar 31 01:35:12 station87 sshd[3905]: Received signal 15; terminating.

Mar 31 01:39:31 station87 sshd[3954]: Server listening on :: port 22.

Mar 31 01:39:31 station87 sshd[3954]: Server listening on 0.0.0.0 port 22.

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

 

 

syslog配置文件详解:

 facility,可以理解为日志的来源或设备目前常用的facility有以下及中

    auth                    # 认证相关的

    authpriv                # 权限,授权相关的

    cron                    # 任务计划相关的

    daemon                # 守护进程相关的

    kern                    # 内核相关的

    lpr                       # 打印相关的

    mail                      # 邮件相关的

    mark                    # 标记相关的

    news                    # 新闻相关的

    security                 # 安全相关的,auth 类似 

    syslog                    # syslog自己的

    user                      # 用户相关的

    uucp                     # unix to unix cp 相关的

    local0 local7       # 用户自定义使用

    *                       # *表示所有的facility

 

 

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

    debug           # 程序或系统的调试信息

    info            # 一般信息,

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

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

    err/error       # 错误信息

    crit            # 比较严重的

    alert           # 必须马上处理的

    emerg/oanic     # 会导致系统不可用的

    *               # 表示所有的日志级别

    none            # * 相反,表示啥也没有

    

 action(动作)日志记录的位置

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

    |                   # 管道  通过管道送给其他的命令处理

    终端              # 终端   如:/dev/console

    @HOST               # 远程主机 如: @10.0.0.1     

    用户              # 系统用户 如: root

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

 

      定义格式例子:

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

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

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

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

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

user.!error                   # user.error相反

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

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

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

cron,mail.info                # cron.info;mail.info 是一个意思

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