zoukankan      html  css  js  c++  java
  • syslogng配置

    绚丽也尘埃 » syslog-ng配置

    syslog-ng配置

    syslog-ng的配置非常简单直观,于是乎配置好看看怎么用它实时收集日志。有两台服务器,一台服务器盯着error_log文件,一旦发现其有新数据,立即将日志发到另一台收集服务器。

    client服务器配置如下。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    #将文件作为src
    source s_blender_error_log {
            file("/home/admin/kingso/logs/error_log_blender");
    };
     
    #收集到的日志发送给172.25.61.92
    destination d_blender_error_log { tcp("172.25.61.92" port(514)); };
     
    log { source(s_blender_error_log); destination(d_blender_error_log);};

    server服务器配置如下。

    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    #监听514端口
    source s_kingso {
            tcp(ip(0.0.0.0) port(514));
    };
     
    #设置输入文件及其相关的属性
    destination d_kingso {
            file("/home/admin/error.log" owner(admin) group(admin) perm(0755));
    };
     
    log { source(s_kingso); destination(d_kingso); };

    最后收集到的日志如下。

    1
    Mar 13 20:32:56 s061090.cm5 moximoximoximoximoxi

    syslog-ng有一个很有意思的功能,那就是在destination里面支持program,可以对符合条件的日志支持操作,比如报警等等。下面这个配置会将所有包含error的日志输出到一个指定的文件中。为了提高性能,建议这个程序从标准输入读入数据,如果没有数据就阻塞等待,不要轻易退出。

    1
    2
    3
    destination d_kingso {
            program("grep error >> /tmp/eerroorr.log");
    };

    filter支持内容过滤,比如要把服务器上所有core信息都收集到一台服务器上,只要判断kern信息中是否有segfault就可以,配置如下。

    1
    2
    3
    4
    filter f_kingso_core {
        facility(kern) and
        match("segfault" value("MESSAGE"));
    }

    如果要用syslog-ng收集大集群的日志,需要设置下max-connections这个参数,它的默认值是10,实在是太小了。如果不改这个配置,netstat会出现syslog-ng导致的大量TIME_WAIT。将其放大之后,可以算一下ESTABLISHED的链接数是不是和集群服务器数量相同。

    syslog-ng服务器默认情况下收集到的日志是:”Apr 1 17:42:33 hostname blabla”。月份后面可能有一个空格(大于10号)也可能有两个空格(小于10号),这样对消息的切分就会有问题,这个时候必须通过template来规范消息的格式。syslog-ng支持定义一个template模版,以后的template都可以使用改模版,非常方便。下面这个配置就是program和file两个destination共用一个t_kingso模版。

    1
    2
    3
    4
    5
    6
    template t_kingso { template("$YEAR-$MONTH-$DAY $HOUR:$MIN:$SEC\t$FULLHOST\t$MSGHDR$MSG\n"); };
     
    destination d_kingso_blender {
        program("exec python -u /home/henshao/log_monitor/log_monitor.py -c /home/henshao/log_monitor/log_monitor.conf -m blender >> /tmp/log_monitor.log 2>&1" template(t_kingso) );
        file( "/home/admin/logs/blender.log.$S_YEAR-$S_MONTH-$S_DAY" create_dirs(yes) owner(admin) group(admin) perm(0755) template(t_kingso) );
    };

    我发现RHEL5上默认安装了syslogd、syslog-ng和rsyslog。syslogd历史最为悠久,wikipedia上的资料上讲它当初是sendmail项目的一部分,因为非常有用,所以逐渐成为所有unix-like系统的标准组件。syslog-ng则是syslogd的升级版本,是一个公司开发的,除了开源免费版还有收费的高级版,有一篇不错的文章: 专访syslog-ng 2.0开发人员Balazs Scheidler。rsyslog则最为年轻,作者想做一个log系统和syslog-ng竞争。

    推荐一些不错的资料。

    1、Syslog-ng

    2、syslog-ng v2.0 reference manual

  • 相关阅读:
    【已解决】Makefile执行过程中出错:make: *** No rule to make target ` ‘, needed by xxx. Stop(转载)
    eclipse导入工程报Invalid project description(转载)
    基于Linux的v4l2视频架构驱动编写(转载)
    在eclipse中如何在大量项目中查找指定文件(转载)
    Ubuntu下FileZilla的安装(转载)
    创建 /dev/video0 节点 (转载)
    python函数-迭代器&生成器
    前端第三篇---前端基础之JavaScript
    前端第二篇---前端基础之CSS
    块级元素和行内元素使用心得汇总
  • 原文地址:https://www.cnblogs.com/lexus/p/2467841.html
Copyright © 2011-2022 走看看