syslog-ngでmysqlデータベースにログを書き込む
980 ワード
ここ数日syslog-ngで複数のリモートホストプログラムのログを受け取り、一定のフォーマットでデータベースに書き込む必要があります.リモートホストからのデータが
‘data1’,‘data2’,‘data3’
data 1,data 2,data 3をそれぞれデータベースlogのtableテーブルのa,b,cフィールドに格納する必要がある.次の3つのステップを通過するだけです
1、修正/etc/syslog-ng/syslog-ng.conf,追加
2、mysqlを創立する.pipeファイル
3、syslog-ngを再起動する
PS:リモートサーバからのlogデータが多すぎるため、しばらくすると多くの記録が受信されたがmysqlデータベースに入っていないことがわかり、syslog-ngを再起動すればデータを書くことができます.最終的には、データをテキストに書き込み、プログラムでテキストを読み出してデータベースに書き込むしかありません.
‘data1’,‘data2’,‘data3’
data 1,data 2,data 3をそれぞれデータベースlogのtableテーブルのa,b,cフィールドに格納する必要がある.次の3つのステップを通過するだけです
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);
") 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を再起動すればデータを書くことができます.最終的には、データをテキストに書き込み、プログラムでテキストを読み出してデータベースに書き込むしかありません.