• syslog之一:Linux syslog日志系统详解


    一、syslog简介

            syslog是一种工业标准的协议,可用来记录设备的日志。在UNIX系统,路由器、交换机等网络设备中,系统日志(System Log)记录系统中任何时间发生的大小事件。管理者可以通过查看系统记录,随时掌握系统状况。UNIX的系统日志是通过syslogd这个进程记录系统有关事件记录,也可以记录应用程序运作事件。通过适当的配置,我们还可以实现运行syslog协议的机器间通信,通过分析这些网络行为日志,藉以追踪掌握与设备和网络有关的状况。

    功能:记录至系统记录。

    二 、syslog服务与配置

    2.1、安装syslog软件包

    软件包名称为:rsyslog-5.8.10-10.el6_6.x86_64

    我用的是centos系统,配置的有第三方的yum源,我直接yum install直接装就OK了

    装完后用 rpm -qa | grep syslog下看是否已安装

    2.2、syslog日志系统可以根据程序详细信息的不同定义不同的日志级别

    2.3、Linux上的日志系统分为:syslog和syslog-ng(syslog日志系统的升级版)

    2.4、syslog服务:

    syslog服务进程分两个,分别是:syslogd(系统,非内核产生的日志)和klogd(专门记录内核产生的日志)

            kernel-->物理终端(/dev/console)-->/var/log/dmesg

      其中/var/log/dmesg文件可以使用dmesg命令和cat查看文件内容

            日志滚动(日志切割):

                    所谓的滚动是指历史信息所保存的日志,如;messages文件日志会越来越大等到了某一段时间,会把messages文件重新命名为messages.1,系统并重新创建messages文件,所以叫做日志滚动

              /sbin/init

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

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

                    /vat/log/secure:安全相关log

    系统自带的日志切割程序logrotate

    logrotate脚本配置文件             

    [root@localhost cron.daily]# pwd
    /etc/cron.daily
    [root@localhost cron.daily]# vim logrotate

     滚动日志信息配置文件     

    复制代码
    [root@localhost cron.daily]# pwd
    /etc/cron.daily
    [root@localhost cron.daily]# vim /etc/logrotate.conf
    # see "man logrotate" for details
    # rotate log files weekly
    weekly                #每周滚动一次
    # keep 4 weeks worth of backlogs
    rotate 4              #只保留4个切割版本文件,超过后清除  
    # create new (empty) log files after rotating old ones
    create                #滚动完之后创建一个空的新的文件
    # use date as a suffix of the rotated file
    dateext
    # uncomment this if you want your log files compressed
    #compress
    # RPM packages drop log rotation information into this directory
    include /etc/logrotate.d   #包括/etc/logrotate.d 下的文件,手动添加可直接添加到此目录
    # no packages own wtmp and btmp -- we'll rotate them here
    /var/log/wtmp{
        monthly                #按月,自己定义
        create 0664 root utmp  #创建文件并0664权限
            minsize 1M         #最新1M
        rotate 1               #保留几个版本
    }
    /var/log/btmp{
        missingok
        monthly
        create 0600 root utmp
        rotate 1
    }
    # system-specific logs may be also be configured here.
    [root@localhost cron.daily]#
    复制代码

    syslog配置文件/etc/rsyslog.conf

    注:centos 6 的配置文件是/etc/rsyslog.conf,centos5的配置文件是/etc/syslog.conf

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

                facility是指哪个facility来源产生的日志;   priority是指拿个级别的日志 ;action是指产生日志怎么办是保存在文件中还是其他。。。

               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/canic            #会导致系统不可用的

                    *                               #表示所有的日志级别

                    none                        #跟*相反,表示什么也没有

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

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

                    |                                #管道 通过管道送给其他的命令出来

                    终端                          #终端 如:/dev/console

                    @host                      #远程主机  如@10.1.1.1

                    用户                          #系统用户 如:root

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

    定义格式列子:

                    mail.info  /var/log/mail.log   #表示将mail相关的,级别为info及info以上级别的信息记录到/var/log/mail.log文件中 

                    auth.=info  @10.1.1.1            #表示将auth相关的,级别为info的信息记录到10.1.1.1主机上去,前提是10.1.1.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级别的信息

    重启服务

                #service rsyslog reload    注:不重启但能读到配置文件;不建议重启

    2.6、搭建Linux日志服务器

    编辑配置文件 [root@localhost etc]# vim  /etc/sysconfig/rsyslog

    修改配置文件中SYSLOGD_OPTIONS="-c 5" 添加“ -r选项”即可

    目的可以让服务器能够接受客户端传来的数据

        配置文件如下

    [root@localhost etc]# vim  /etc/sysconfig/rsyslog
    # Options for rsyslogd
    # Syslogd options are deprecated since rsyslog v3.
    # If you want to use them, switch to compatibility mode 2 by "-c 2"
    # See rsyslogd(8) for more details
    SYSLOGD_OPTIONS="-r -c 5"
    ~

    重启syslog服务  

    [root@localhost etc]# service rsyslog restart
    关闭系统日志记录器:                                       [确定]
    启动系统日志记录器:-r option only supported incompatibility modes 0 to 2 - ignored
                                                               [确定]
    [root@localhost etc]#

    2.7、搭建syslog客户端

        在syslog配置文件中修改/etc/rsyslog.conf

    复制代码
    [root@localhost etc]# vim /etc/rsyslog.conf
    # Log all kernel messages to the console.
    # Logging much else clutters up the screen.
    #kern.*                                                 /dev/console
    # 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
    # The authpriv file has restricted access.
    authpriv.*                                              /var/log/secure
    # Log all the mail messages in one place.
    mail.*                                                  @192.168.1.66
    # Log cron stuff
    cron.*                                                  /var/log/cron
    .
    .
    .
    省略
    复制代码

    重启syslog客户端

    [root@localhost etc]# service rsyslog restart
    关闭系统日志记录器:                                       [确定]
    启动系统日志记录器:-r option only supported incompatibility modes 0 to 2 - ignored
                                                               [确定]
    [root@localhost etc]#
     
  • 相关阅读:
    JAVA 注解的几大作用及使用方法详解
    内省、JavaBean、PropertyDescriptor类、Introspector类、BeanUtils工具包、注解、Rentention、Target、注解的基本属性和高级属性
    关于Hash集合以及Java中的内存泄漏
    ifconfig命令详情
    route命令详情
    ping命令详解
    scp命令详解
    ssh命令详解
    telnet命令详解
    sudo命令详解
  • 原文地址:https://www.cnblogs.com/taosiyu/p/13530149.html
Copyright © 2020-2023  润新知