[Perl] perl et syslog-ng réinjection de logs

Eric DUVAL eduval at ligfy.fr
Mar 24 Mai 19:55:34 CEST 2016


Le 21/05/2016 18:49, Patrice Karatchentzeff a écrit :
> Salut

Salut,

Merci pour vos réponses.

>
> Plusieurs pistes...
>
> Pour détecter quand syslog a terminé, tu peux guetter quand il n'y plus de
> PID par exemple.

Pas évident, syslog-ng n'est pas lancé que pour traiter cette
réinjection, il gère aussi les flux entrants. Il n'y a pas de fork
du process syslog-ng dédié à la réinjection. J'ai bien pensé créer
une conf spécifique pour syslog-ng et à partir du script perl, lancer
un process syslog-ng mais ça ne résout pas vraiment mon problème
de volumétrie pour les serveurs qui vont devoir réceptionner ces logs.

>
> Plus simple, tu peux compter tes lignes de traitement et bloquer au bout
> d'un nombre paramétrable... Tout cela donne une taille approximative. Ou
> alors, plus violemment, tu segmentes tes logs en paquets à traiter (mais
> cela fait deux traitements alors que dans le premier cas, cela va avec ton
> traitement de log... c'est mieux :) )

Il y a une application qui permet en "pipant" avec le script perl de
contrôler un flux de données. pv (http://linux.die.net/man/1/pv)
en utilisant l'option "-L". ça peut faire l'affaire.

Stéphane, merci pour le lien intéressant, mais ce n'est pas un module
"perl::CORE" je ne peux pas l'installer. J'avais oublié de le préciser :-)


>
> PK
>
> Le 21 mai 2016 à 18:00, Eric DUVAL <eduval at ligfy.fr> a écrit :
>
>> Bonjour,
>>
>> J'ai un problème technique et ne sais pas vraiment par quelle bout
>> le prendre.
>>
>> Je reçois environ 140Go de logs par jour (syslog-ng), que je traite
>> et en partie que je retransmets vers d'autres serveurs.
>>
>> En cas de non retransmission, j'ai écris un script en perl qui
>> permet pour une période donnée de retransmettre les logs en
>> les réinjectant dans des fichiers que syslog-ng sait prendre
>> en charge.
>>
>> Mon problème est que le volume de logs à retransmettre peut
>> être très important et j'aimerai pouvoir soit détecter
>> à partir de mon script perl le moment où syslog-ng a terminé
>> son traitement ou intégrer un timeout paramétrable dans mon script
>> pour ralentir le mécanisme de réinjection.
>>
>> Le but de ce mécanisme étant de ne pas saturer les capacités
>> des serveurs distants et de ne pas saturer les capacités des
>> connexions réseaux.
>>
>> Auriez vous piste de réflexion à me proposer ?
>>
>> Merci.
>> Eric.
>>
>> _______________________________________________
>> Perl mailing list
>> Perl at mongueurs.net
>> http://listes.mongueurs.net/mailman/listinfo/perl
>>
>
>
>
>
>
> _______________________________________________
> Perl mailing list
> Perl at mongueurs.net
> http://listes.mongueurs.net/mailman/listinfo/perl
>


Plus d'informations sur la liste de diffusion Perl