Difference between revisions of "Syslog-ng"

From PostgreSQL_wiki
Jump to: navigation, search
(syslog-ng.conf)
(syslog-ng.conf)
Line 66: Line 66:
 
destination(d_mysql);
 
destination(d_mysql);
 
};.
 
};.
  +
</pre>
  +
=== mysql aansturing ===
  +
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.
  +
<pre>
  +
#!/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
 
</pre>
 
</pre>
   

Revision as of 22:52, 5 February 2010

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 aansturing

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

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.

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) ; };

rsyslog client

syslog


Terug naar: Uwork Support Infrastructuur