PT. Hawk Teknologi Solusi

Silahkan Cari Disini

Rabu, 28 Mei 2008

Menjadikan debian sebagai syslog server yang disimpan di mysql

Kadang kita perlu menyimpan log dari mesin2 tertentu ke sebuah syslog server agar diperoleh report yang dibutuhkan, lebi seru lagi kalau datanya disimpan di database server seperti mysql jadi mudah untuk di query.

Berikut adalah cara instalasi syslog server yang datanya disimpan di mysql pada distro debian.

Pertama install syslog-ng

apt-get install syslog-ng syslog-summary


kemudian tambahkan file di /etc/syslog-ng/syslog-ng.

source net { udp(); };

destination d_mysql {
pipe("/tmp/mysql.pipe"
template("INSERT INTO logs (host, facility, priority, level, tag, date,
time, program, msg) VALUES ( '$HOST', '$FACILITY', '$PRIORITY', '$LEVEL','$TAG',
'$YEAR-$MONTH-$DAY', '$HOUR:$MIN:$SEC', '$PROGRAM', '$MSG' );\n") template-escape(yes));
};

log { source(net); destination(d_mysql); };


save lalu restart syslog-ng

/etc/init.d/syslog-ng restart

buat fifo pipe untuk syslog-ng caranya:

mkfifo /tmp/mysql.pipe


buat database syslogdb di mysql dengan perintah SQL berikut:
perintah SQL ini bisa diinput melalui phpmysql atau melalui console, kalau saya paling praktis menggunakan phpmysql, sorry di artikel ini saya tidak menjelaskan instalasi mysqlnya, jadi asumsi mysqlnya udah jalan dengan benar.


CREATE DATABASE syslogdb;
USE syslogdb;

CREATE TABLE logs (
host varchar(32) default NULL,
facility varchar(10) default NULL,
priority varchar(10) default NULL,
level varchar(10) default NULL,
tag varchar(10) default NULL,
date date default NULL,
time time default NULL,
program varchar(15) default NULL,
msg text,
seq int(10) unsigned NOT NULL auto_increment,
PRIMARY KEY (seq),
KEY host (host),
KEY seq (seq),
KEY program (program),
KEY time (time),
KEY date (date),
KEY priority (priority),
KEY facility (facility)
) TYPE=MyISAM;


berikutnya buat script /etc/syslog-ng/rc.syslog-ng-to-myqsl
yang isinya:

#
# Created by Tadghe Patrick Danu
#
#!/bin/bash

if [ -e /tmp/mysql.pipe ]; then
while [ -e /tmp/mysql.pipe ]
do
mysql -u root --password='password root mysql yang digunakan' syslogdb < /tmp/mysql.pipe done
else
mkfifo /tmp/mysql.pipe
fi


kemudian chmod 750 /etc/syslog-ng/rc.syslog-ng-to-mysql hati-hati di file itu ada password root msyql jadi jangan lupa utk dibuat 750 ya supaya orang lain selain root tidak bisa lihat isinya, atau bisa juga buat user khusus utk syslogdb di mysqlnya.


kalau sudah tinggal restart syslog-ng /etc/init.d/syslog-ng restart dan eksekusi /etc/syslog-ng/rc.syslog-ng-to-mysql & atau bisa juga dimasukkin ke /etc/rc.local supaya otomatis jalan kalau debiannya direboot. ini hasilnya kalau dilihat di phpmyadmin.




sebagai tambahan kalau dari mesin cisco mau dilempar lognya ke syslog server commandnya spt ini:

conf t
logging IP_address_of_UNIX_host
logging facility local7 (use local7 syslog facility)
logging trap level_of_debugging (default is "informational")
logging on



reference:

http://kryptoz.wordpress.com/2008/04/10/configure-syslog-ng-syslogd-remote-log-server/
http://vermeer.org/docs/1
http://www.brandonhutchinson.com/Remote_Cisco_logging.html

1 komentar:

Anonim mengatakan...

Pak Harijanto,

Bagaimana jika log2 di mikrotik dikirim ke syslog linux, bagaimana caranya?

saya coba-coba kok belum pernah sukses,

terimakasih