php 的syslog ng模块,安装syslog-ng和php-syslog-ng

看着chaos的HOWTO setup syslog-ng to log to mysql装成了自己的syslog-ng。这里分享一下。大部分内容引用自HOWTO series.这是原文链接:http://chaos.untouchable.net/index.php/HOWTO_setup_syslog-ng_to_log_to_mysql

准备

需要apache,mysql和php环境

安装

1.运行syslog-ng-3.2beta1-linux-glibc2.3.6-amd64.run

默认是装在opt下,可能会需要安装eventlog。

修改/opt/syslog-ng/etc/syslog-ng.conf ,加上以下内容。

source src {

unix-dgram("/var/run/log");

unix-dgram("/var/run/logpriv" perm(0600));

udp(

ip(0.0.0.0)

port(514)

);

tcp(

ip(0.0.0.0)

port(514)

);

internal();

file("/dev/klog");

};

***按格式把日志内容写到pipe里面

destination d_mysql {

pipe("/tmp/mysql.syslog-ng.pipe"

template("INSERT INTO logs

(host, facility, priority, level, tag, datetime, program, msg)

VALUES ( '$HOST', '$FACILITY', '$PRIORITY', '$LEVEL', '$TAG', '$YEAR-$MONTH-$DAY $HOUR:$MIN:$SEC',

'$PROGRAM', '$MSG' );\n") template-escape(yes));

};

log { source(src); destination(d_mysql); };***

EOF

*******这是一般的syslogng配置格式,包括source,destination,log 3个部分,有兴趣的话还可以加上日志级别的定义:

filter f_debug { level(debug); };(记录debug以上级别的日志)

相应地:log { source(src); filter(f_debug); destination(d_mysql); };

查看是否有pipe

ls -lah /tmp/mysql.syslog-ng.pipe

如果没有的话,创建一个

mkfifo /tmp/mysql.syslog-ng.pipe

2.创建表

phpsyslogng 的dbsetup.sql中缺少指定数据库的语句,你需要先加上这样一句话:USE 你的数据库;

执行

mysql -u root -p

3,创建一个shell脚本,将pipe里的数据写到mysql里去

#!/bin/sh

#

# File: syslogng-mysql-pipe.sh

#

# Take input from a FIFO and run execute it as a query for

# a mysql database.

#

# IMPORTANT NOTE:  This could potentially be a huge security hole.

# You should change permissions on the FIFO accordingly.

#

if [ -e /tmp/mysql.syslog-ng.pipe ]; then

while [ -e /tmp/mysql.syslog-ng.pipe ]

do

mysql -usyslog --password=mypasswordhere logs < /tmp/mysql.syslog-ng.pipe

done

else

mkfifo /tmp/mysql.syslog-ng.pipe

fi

EOF

在后台执行脚本(加上&)

Sh /usr/local/etc/syslog-ng/syslog-ng-mysql-pipe.sh &

**********

另外有发现pipe有时会关闭,写一个脚本监控这个进程即可。

#!/bin/sh

return=`ps -ef |grep syslogng|grep pipe|grep -v restart.sh`

echo $return

if [ -n "$return" ];then

echo "noproc"

exit 0

else

/bin/sh  /opt/syslog-ng/etc/syslogng-mysql-pipe.sh &

fi

**************************

重启syslogng:

/etc/init.d/syslog-ng restart

进mysql看看logs表里面有没有更新。

修改配置phpsyslogng/config/config.php

至少确认这几项是正确的DEFAULTLOGTABLE,DBUSER(数据库用户),DBUSERPW,DBADMIN(数据库管理员),DBADMINPW,DBNAME,

另外我设置了不用用户验证'REQUIRE_AUTH', FALSE

把php-syslog-ng放到apache下发布即可。我下的这个版本:php-syslog-ng-2.9.1r10里的regularresult.php和common_funcs.php有几处语法错误(郁闷了一阵-_-!)

如下

?>

在<?后面加上php

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值