zoukankan      html  css  js  c++  java
  • 用syslogng将日志写入mysql数据库

    这几天需要通过syslog-ng接受多台远程主机程序的日志,并按一定格式写入数据库。假如远程主机过来的数据是

    ‘data1’,‘data2’,‘data3’

    需要把data1,data2,data3分别存储到数据库log下的table表的a,b,c字段中。只需要通过以下三步

    1、修改/etc/syslog-ng/syslog-ng.conf,添加

    source s_remote {
            #按需要填写
    };
    
    destination d_mysql{
            program("/usr/bin/mysql -uroot -p log < /var/log/mysql.pipe");
            pipe("/var/log/mysql.pipe"
                    template("INSERT INTO table(a, b, c)  VALUES($MSGONLY);\n") template-escape(no));
    };
    
    
    log {
            source(s_remote);
          # filter();
            destination(d_mysql);
    };

    2、建立mysql.pipe文件按

    #mkfifo /var/log/mysql.pipe

    3、重新启动syslog-ng

    service syslog-ng restart

    PS:由于远程服务器过来的log数据太多,过一段时间就会发现很多记录收到了但没有进入mysql数据库,重启syslog-ng就又可以写数据。最终只能通过把数据写入文本,再用程序读取文本把数据写入数据库。

  • 相关阅读:
    在线考试————随机出题
    HTTP协议
    团队
    做作业
    图书馆管理说明书性能
    关于敏捷开发的学习
    运行环境
    图书馆管理系统说明书
    性能(2)
    作业
  • 原文地址:https://www.cnblogs.com/bo083/p/2235114.html
Copyright © 2011-2022 走看看