zoukankan      html  css  js  c++  java
  • linux syslog 日志采集系统搭建

        syslog已被许多日志函数采纳,它用在许多保护措施中,任何程序都可以通过syslog记录事件。syslog可以记录系统事件,可以写到一个文件或设备中,或给用户发送一个信息。它能记录本地事件或通过网络记录另一个主机上的事件。

       syslog是Linux系统默认的日志守护进程。默认的syslog配置文件是/etc/syslog.conf文件。syslog守护进程是可配置的,它允许人们为每一种类型的系统信息精确地指定一个存放地点。


    syslog已被许多日志函数采纳,它用在许多保护措施中,任何程序都可以通过syslog记录事件。syslog可以记录系统事件,可以写到一个文件或设备中,或给用户发送一个信息。它能记录本地事件或通过网络记录另一个主机上的事件。
    syslog是Linux系统默认的日志守护进程。默认的syslog配置文件是/etc/syslog.conf文件。syslog守护进程是可配置的,它允许人们为每一种类型的系统信息精确地指定一个存放地点。


    一:linux syslog 客户端配置

         linux syslog客户端的主要任务是收集系统运行中产生的各种日志,并将日志发送到指定的服务器。只需修改/etc/syslog.conf即可。

        1.配置文件语法

           服务名称.等级    存放或显示地点

         2.服务名称(facility)

         facility定义日志消息的范围,其可使用的key有:
         引用auth -由 pam_pwdb 报告的认证活动。
         authpriv -包括特权信息如用户名在内的认证活动
         cron -与 cron 和 at 有关的计划任务信息。
         daemon -与 inetd 守护进程有关的后台进程信息。
         kern -内核信息,首先通过 klogd 传递。
         lpr -与打印服务有关的信息。
         mail -与电子邮件有关的信息
         mark - syslog内部功能用于生成时间戳
         news -来自新闻服务器的信息
         syslog -由 syslog 生成的信息
         user -由用户程序生成的信息
         uucp -由 uucp 生成的信息
         local0-local7 -与自定义程序使用
         * 通配符代表除了 mark 以外的所有功能
         除mark为内部使用外,还有security为一个旧的key定义,等同于auth,已经不再建议使用。

       3.日志等级(level)

         level定义消息的紧急程度。按严重程度由高到低顺序排列为:
         emerg或panic -该系统不可用,等同panic
         alert -需要立即被修改的条件
         crit -阻止某些工具或子系统功能实现的错误条件
         err或error -阻止工具或某些子系统部分功能实现的错误条件,等同error
         warning或warn -预警信息,等同warn
         notice -具有重要性的普通条件
         info -提供信息的消息
         debug -不包含函数条件或问题的其他信息
         none -没有重要级,通常用于排错
         * 所有级别,除了none
         其中,panic、error、warn均为旧的标识符,不再建议使用

         特殊等级:例如 debug (显示较多的信息!)及 none (不要记录该服务的内容!)等!

        4.selector选择条件
          通过小数点符号“.”把facility和level连接在一起则成为selector(选择条件)。
          可以使用分号“;”同时定义多个选择条件。也支持三个修饰符:
          引用* - 所有日志信息
          = - 等于,即仅包含本优先级的日志信息
          ! - 不等于,本优先级日志信息除外


       5.存放或显示地点

          档案的绝对路径:通常就是放在 /var/log 里头的档案
          打印机或其它:例如 /dev/lp0 这个打印机装置
          使用者名称:发送信息本机的指定用户信息窗口中,但该用户必须已经登陆到系统中     

          远程主机:例如 @test.adsldns.org
            说明:    使用tcp协议:@@192.168.1.180:514
                    使用udp协议:@192.168.1.180:514

    6、举例
        例如:
        引用*.info;mail.none;news.none;authpriv.none;cron.none /var/log/messages
        #把除邮件、新闻组、授权信息、计划任务等外的所有通知性消息都写入messages文件中。
        mail,news.=info /var/adm/info
        #把邮件、新闻组中仅通知性消息写入info文件,其他信息不写入。
        mail.*;mail.!=info /var/adm/mail
        #把邮件的除通知性消息外都写入mail文件中。
        mail.=info /dev/tty12
        #仅把邮件的通知性消息发送到tty12终端设备
        *.alert root,joey
        #如果root和joey用户已经登陆到系统,则把所有紧急信息通知他们
        *.* @finlandia
        #把所有信息都导向到finlandia主机(通过/etc/hosts或dns解析其IP地址)
        ※注意:每条消息均会经过所有规则的,并不是唯一匹配的。
        也 就是说,假设mail.=info信息通过上面范例中定义的规则时,/var/adm/info、/var/adm/mail、/dev/tty12,甚 至finalandia主机都会收到相同的信息。这样看上去比较烦琐,但可以带来的好处就是保证了信息的完整性,可供不同地方进行分析。

    二、linux syslog 服务器配置:

        1.修改/etc/sysconfig/syslog文件:
            引用
            -r : 打开接受外来日志消息的功能,其监控514 UDP端口;
            -x : 关闭自动解析对方日志服务器的FQDN信息,这能避免DNS不完整所带来的麻烦;
            -m : 修改syslog的内部mark消息写入间隔时间(0为关闭),例如240为每隔240分钟写入一次“--MARK--”信息;
            -h : 默认情况下,syslog不会发送从远端接受过来的消息到其他主机,而使用该选项,则把该开关打开,所有接受到的信息都可根据syslog.conf中定义的@主机转发过去。
            通过man syslogd可获得更详细的帮助,而具体到实际配置文件为:
             引用
            SYSLOGD_OPTIONS="-r-x-m 0"
            保存后,重启服务即可:# service syslog restart
            此时,客户机只要通过修改syslog.conf,定义动作为@主机或IP,即可发送日志信息到本服务器中。
            (在构建集中的日志服务器时,请务必配合ntp时间服务,以保证信息的有效性,避免不必要的麻烦)
        2.首先需要在日志服务器Server端开启远程服务。修改配置文件:/etc/rsyslog.conf
            以下为开启UDP连接:
                # provides UDP syslog reception
                $ModLoad imudp
                $UDPServerRun 514
            以下为开启TCP连接:
                # provides TCP syslog reception
                $ModLoad imtcp
                $InputTCPServerRun 514
                修改完成后需要重启rsyslog服务。执行命令  # restart rsyslog
       
        3.filter(日志筛选)
            filter是rsyslog的一大亮点,通常情况下,我们并不是所有的日志都要收集,比如我们只需要error以下级别的日志、或者我们再要包含特定内容的日志。灵活运用filter我们可以很轻易地实现这些需求。
            下面举几个例子,使用方法手册里有详细介绍:
                1:msg, contains, "test_message"  /var/log/test.log
                2:&~
            如果日志内容包含”test_message”就存放在/var/log/test.log中,”&~”的意思是丢弃,不做后续处理。即使后面还有”:msg, contains,“test_message” /var/log/test2.log”,这条日志也不会再存在test2.log中。
                1:if $msg contains 'test_message' then /var/log/test.log
                2:&~
            上面的例子的另一种写法,用if的好处是可以定义一些复杂的条件匹配
            filter非常的实用,syslog中仅仅定义的local0~local7几个用户自定义的facility。使用filter我们轻松解决自定义facility不够用的问题

        4. template(日志格式控制)
            使用template定义日志格式模板,可以规范不通的类型的日志,很方便我们查看,使用起来也很简单,但是template的定义必须放在rsyslog.conf的顶端。
                1: $template myFormat,"%timestamp%  %hostname% %msg%\n"
                2:    $ActionFileDefaultTemplate myFormat
            第一行我们定义了一个名为myFormat的模板,第二行的意思是把我们定义的myFormat作为rsyslog的默认模板。如果只是需要在特定日志上套用这个模板可以这样写
                1:$template myFormat,"%timestamp%  %hostname%  %msg%\n"
            如果希望手机到的日志不是使用hostname标识,而是ip地址标识可以这样写
                $template myFormat,"%timestamp% %fromhost-ip%%msg%\n"
                $ActionFileDefaultTemplate myFormat

  • 相关阅读:
    多任务5-协程(IO密集型适用)--gevent完成多任务及monkey补丁
    多任务4---greenlet完成多任务
    多任务3(协程)--yield完成多任务交替执行
    生成器调试---send方式
    生成器调试
    生成器创建的两种方式
    列表生成方式-列表推导式
    迭代器应用场景1---斐波那契
    迭代器
    多任务案例--文件夹copy.py
  • 原文地址:https://www.cnblogs.com/yunsicai/p/2986999.html
Copyright © 2011-2022 走看看