Salut,
pour le moment, il n'y a pas encore grand chose dans le CVS Locust,
mais il y a déjà de quoi faire la première étape du traitement,
à savoir lire des entrées et produire des hash avec les infos
minimales suivantes : date host facility level program pid message.
Le script minimal pour lire les logs sorties de syslog-ng est donc :
use Locust::Input;
my $input = Locust::Input->new(
file => shift,
match => qr/^(\d{8} \d\d:\d\d:\d\d) (\S*) (\S*) (\S*) (\S*) (.*)$/,
fields => [qw( date host facility level program message )],
datefmt => "%Y%m%d %H:%M:%S",
);
while( my $log = $input->next ) {
# faire quelque chose avec la log
}
A noter que $log aura l'aspect suivant :
$log = {
'source' => 'mess/messages.arch',
'epoch' => 1078599601,
'date' => '20040306 19:00:01',
'message' => '[LOG_NOTICE] pm[73]: Reaped: xntpd[23271]',
'program' => '',
'facility' => 'daemon',
'host' => 'cnokia-ms-prod-01',
'level' => 'notice',
'orig' => '20040306 19:00:01 cnokia-ms-prod-01 daemon notice
[LOG_NOTICE] pm[73]: Reaped: xntpd[23271]
'
};
Pour moi, le script locust fourni avec les divers modules s'occupe
principalement de lire un fichier de conf et de générer du code
utilisant les divers objets Locust::Input et autres à venir.
Je m'occupe maintenant de la base de connaissance à base de regexps pour
le traitement du contenu du champ message.
--
Philippe "BooK" Bruhat
A little work with your brain can save you a lot of work with your body.
(Moral from Groo The Wanderer #40 (Epic))