pakicor | Bonjour,
J'utilise une centralisation de logs avec syslog-ng. Les logs sont ensuite stocker dans une base mysql. J'ai suivis plusieurs Tutos et documentations. Cela fonctionne très bien. La ou cela se corse, c'est que j'ai besoin de faire un traitement sur une des variables avant injection.
En fait, les logs que je vais centraliser sont uniquement des logs mail (postfix et courier). Le but est de récupérer les ID de mail de postfix contenu dans le message (qui correspond à la variable $MSG) du log, et ensuite d'insérer ces IDs dans un nouveau champ de la table de syslog ('Id' par exemple).
Dans mon fichier de configuration de syslog-ng, j'ai ceci:
Code :
- ...
- destination d_mysql {
- program("/usr/bin/mysql -u syslogadmin --password=icor syslog" 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));
- };
- ...
|
Mon idée est d'appeler un script avec la même méthode, càd utiliser "program" qui appelle une commande en bash. Dans ce script, je récupère toute les variables du logs, je traite le champ message en recuperant les ID et j'appelle ensuite la commande mysql pour remplir ma base.
Le problème c'est que je n'arrive pas à récupérer la valeurs les variables $HOST, $FACILITY,...,$MSG.
J'ai tenter d'intercaler une commande "echo" pour tester justement la valeur des variables (ici $MSG):
Code :
- destination d_mysql {
- program("echo $MSG >> /root/test.txt" );
- program("/usr/bin/mysql -u syslogadmin --password=icor syslog" 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));
- };
|
La bizarrerie, c'est je n'arrive pas à récupérer la valeur $MSG alors que la commande mysql injecte correctement le log dans la base de donnée.
Est il possible d'opérer un traitement de la variable $MSG dans le fichier de configuration de syslog-ng avant injection dans la base ?
Toute aide est la bienvenue, merci d'avance.
|