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

Répondre à