Hur du sätter upp syslog-ng att logga till en mysql-db Baserad på denna Gentoo wiki: http://gentoo-wiki.com/HOWTO_setup_PHP-Syslog-NG ------------------------------------------------------------------------------ Börja med att installera syslog-ng och MySQL på systemet. För debian: apt-get update apt-get install syslog-ng mysql-server-5.0 # # SYSLOG-NG # Lägg till följande i /etc/syslog-ng/syslog-ng.conf # pipe messages to /var/log/mysql.pipe to be processed by mysql destination d_mysql { pipe("/var/log/mysql.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(s_all); destination(d_mysql); }; Sedan skapar vi fifo-fil som pipar loggarna vidare och startar om syslog-ng: mkfifo /var/log/mysql.pipe /etc/init.d/syslog-ng restart # # MySQL # Logga in som root "mysql -u root -p" till din MySQL-dB och exekvera följande. Glöm inte att ta bort raderna som börjar med # och byt ut $pwuser och $pw till de passwords du vill ha satta på de olika användarna. CREATE DATABASE syslog; USE syslog; # create table logs under database syslog 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, datetime datetime default NULL, program varchar(15) default NULL, msg text, seq bigint(20) unsigned NOT NULL auto_increment, PRIMARY KEY (seq), KEY host (host), KEY program (program), KEY datetime (datetime), KEY priority (priority), KEY facility (facility) ) TYPE=MyISAM; USE mysql; # create user syslog INSERT INTO user (Host, User, Password) VALUES ('localhost','syslog', password('$pwuser')); INSERT INTO db (Host, Db, User) VALUES ('localhost','syslog','syslog'); INSERT INTO user (Host, User, Password) VALUES ('localhost','syslogadmin',password('$pw')); INSERT INTO db (Host, Db, User) VALUES ('localhost','syslog','syslogadmin'); COMMIT; #Flush privileges cache to prevent errors FLUSH PRIVILEGES; # grant rights to user syslogadmin for backup purpose REVOKE ALL PRIVILEGES ON syslog.* FROM syslogadmin@localhost; REVOKE GRANT OPTION ON syslog.* FROM syslogadmin@localhost; GRANT RELOAD ON *.* TO syslogadmin@localhost; GRANT SELECT, INSERT, DELETE, CREATE, ALTER, LOCK TABLES ON syslog.* TO syslogadmin@localhost; REVOKE ALL PRIVILEGES ON syslog.* FROM syslog@localhost; REVOKE GRANT OPTION ON syslog.* FROM syslog@localhost; GRANT USAGE ON *.* TO syslog@localhost; GRANT SELECT ON syslog.* TO syslog@localhost; Då återsår bara att aktivera pipen: Skapa och lägg till följande i filen /root/syslog_mysql.sh #!/bin/bash if [ -e /var/log/mysql.pipe ]; then while [ -e /var/log/mysql.pipe ] do mysql -u syslogadmin --password=denatus syslog < /var/log/mysql.pipe done else mkfifo /var/log/mysql.pipe fi Ändra rättigheterna: chown root /root/syslog_mysql.sh chmod 700 /root/syslog_mysql.sh Exekvera med kommandot: sh ./syslog_mysql.sh & Lägg till detta i något startup-script eller liknande beroende på dist/system.