Syslog-ng
Contents
Syslog Next Generation
Syslog-ng heeft uitgebreide mogelijkheden om systemen te beheren op basis van een centrale logging. Het is mogelijk om op basis van events signaleringen te doen. php-syslog-ng biedt een webinterface voor de syslog-ng server. De configuratie is gecompliceerd en luistert nauw, het duurt even voordat de zaak loopt.
OVerzicht van de opzet van de configuratie
Op de centrale server draaien:
- syslog-ng
- mysql
- php-syslog-ng
Algemene installatie
Installeer de syslog-ng applicatie. Het systeem verwijdert de reeds aanwezige logging daemon, syslog of rsyslog.
# apt-get update && apt-get install syslog-ng
Server configuratie
De centrale server verzamelt loggegevens over vpn van aangesloten machines. De voorlopige instelling is vanaf log-level "error".
syslog-ng.conf
De syslog configuratie van de server bestaat uit:
- options
- source, met daarin het statement voor luisteren op protocol udp poort 514
- destination, met de mysql koppeling voor de webinterface syslog-ng
- het filter voor doorlaten van logmeldingen vanaf niveau "error"
- log, legt de relatie tussen source en destionation via filer
options { chain_hostnames(0); time_reopen(10); time_reap(360); log_fifo_size(2048); create_dirs(yes); group(adm); perm(0640); dir_perm(0755); use_fqdn(yes);. use_dns(yes);. dns_cache(yes);. keep_hostname(yes); stats_freq(0); bad_hostname("^gconfd$"); }; source s_all { # unix-dgram("/var/run/log"); # unix-dgram("/var/run/logpriv" perm(0600)); internal(); unix-stream("/dev/log"); udp( ip(10.20.31.34) port(514)); # ip(127.0.0.1) # port(514) # ); tcp( ip(10.20.31.34) port(5140) keep-alive(yes)); # ip(127.0.0.1) # port(5140) keep-alive(yes)); }; 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) ); }; filter f_at_least_err { level(err..emerg); }; # Log-level vanaf error is voor productie interessant log { source(s_all); filter(f_at_least_err); destination(d_mysql); };.
mysql pipe
De loggegevens gaan via het pipe mechanisme naar de mysql daemon. Het script syslog2mysql.sh verzorgt het doorsturen van loggegevens via de pipe naar mysql.
#!/bin/bash /bin/rm /var/log/mysql.pipe /usr/bin/mkfifo /var/log/mysql.pipe #/usr/bin/mysql -usyslogfeeder -p5y5l09 tlog </var/log/mysql.pipe>/dev/null if [ -e /var/log/mysql.pipe ] ; then while [ -e /var/log/mysql.pipe ] do /usr/bin/mysql -usyslogfeeder -p<password> tlog </var/log/mysql.pipe>/dev/null done else /usr/bin/mkfifo /var/log/mysql.pipe fi
php-syslog-ng
De installatie van de php-syslog-ng webinterface is een recht toe recht aan implementatie van een php website.
Zorg voor de juiste databasenaam.
Client configuratie
syslog-ng client
De configuratie is betrekkelijk eenvoudig. De source is /dev/log, logging met een niveau vanaf error gaat ook naar syslog-ng.uwork.nl. Met behulp van filter is het reeds aan de client zijde mogelijk om logmeldingen te filteren. De voorlopige policy is filtering in de webinterface php-syslog-ng.
source s_all { unix-stream("/dev/log"); internal(); }; destination loghost { udp("syslog-ng.uwork.nl"); }; filter f_at_least_err { level(err..emerg); }; # Het log statement knoopt de source en de destination via het filter aan elkaar. # log { source(s_all) ; filter(f_at_least_err) ; destination(loghost) ; }; log { source(s_all) ; destination(loghost) ; };
rsyslog client
Het houdt het midden tussen een eitje en een fluitje van een cent om een nieuwe host toe te voegen die logt op basis van rsyslog. Voeg op de host in de directory /etc/rsyslog.d het bestand uwork.nl.conf toe:
# Configuratie voor remote logging bij Uwork *.debug @syslog-ng.uwork.nl
En doe vervolgens een herstart van de rsyslog daemon:
# /etc/init.d/rsyslogd restart
Vanaf dit moment logt de machine naar de centrale logging machine syslog-ng. Het bestand uwork.conf is gemakkelijk bij te houden met versiebeheer en cfengine2, zodat elke gewenste manier van logging op een beheersbare manier is door te voeren.
syslog
Toevoegen nieuwe host die logt op basis van syslog:
- Pas in /etc/default/syslogd de regel met SYSLOGD aan
- Voeg de centrale logger toe in /etc/syslog.conf
- Herstart de syslog daemon
syslogd:
# # For remote UDP logging use SYSLOGD="-r" # SYSLOGD="-r"
syslog.conf:
# Remote logging naar syslog-ng.uwork.nl *.* @syslog-ng.uwork.nl
Herstart van de service:
# /etc/init.d/sysklogd restart
Terug naar: Uwork Support Infrastructuur