Bonjour,
Le 20/07/2010 16:36, Eric Joseph-Alexandre a écrit :
Sujet moins trollesque (j'espère...). Je cherche un équivalent à SPLUNK (http://www.splunk.com/).
Le but c'est de centraliser les logs apache de plusieurs serveur dans un base, pouvoir requetter et répondre aux questions récurentes de mes développeurs sur le nombre moteurs qui passent ou sont passés sur un serveur à un instant T.
Mon collègues avait trouvé Octopussy, mais ça ne la pas convaincu. En plus c'était un peut redondant avec notre Nagios.
Vous faite comment vous ?
Un serveur syslog-ng central, tous les serveurs apache transmettent à celui-ci. Sur le central, un script Perl qui reçoit les logs via TCP : destination d_mysql { tcp("localhost" port(6699) template("{@@HOST=$HOST@@}{@@FACILITY=$FACILITY@@}{@@PRIORITY=$PRIORITY@@}{@@LEVEL=$LEVEL@@}{@@TAG=$TAG@@}{@@YEAR=$YEAR@@}{@@MONTH=$MONTH@@}{@@DAY=$DAY@@}{@@HOUR=$HOUR@@}{@@MIN=$MIN@@}{@@SEC=$SEC@@}{@@PROGRAM=$PROGRAM@@}{@@MSG=$MSG@@};\n") template-escape(no)); }; Syslog-ng parce qu'on peut augmenter la taille des messages : log_msg_size(8192);
Ce script fait une partie du traitement selon le type de log (PROGRAM) et dans un des cas insert les logs dans une table MySQL qui contient des triggers pour consolider les stats. + un cron pour supprimer les vieilles data déjà consolidées table_min : par minutes, on garde 1 jour table_day: par jour, on garde 31 jours etc...
Par contre pour que ça tienne la charge j'ai du faire un script multi-process (forks), qui encaissent actuellement 1500r/q avec 8 fils. Et si le script ne suit pas, syslog-ng drop les logs et on perds des stats (augmenter aussi log_fifo_size(); )