1 votes

Comment remplacer les caractères de contrôle dans rsyslog ?

Nous avons plusieurs applications (généralement java) et elles se connectent à un serveur rsyslog centralisé (version 7.6). Nous avons eu des problèmes avec les exceptions java, car rsyslog traitait chaque ligne de la trace de la pile comme un message séparé. Nos développeurs ont donc commencé à utiliser #012 comme nouvelle ligne et #011 comme tabulation. Donc maintenant, quand j'ai un message avec une exception, cela ressemble à :

2015-02-09T12:52:43.769Z hostname warning app Exception when invoking method something.search: reason=Error while executing method something.search, Params=#012{"maxResults":10,"query":"somesearch"}#012com.company.server.json.ApiException: Error while executing method something.search#012#011at com.company.app.api.BaseExecutor.executeWithDatabase(BaseExecutor.java:112) ~[app-server.jar:?]#012#011at com.company.app.api.BaseExecutor.execute(BaseExecutor.java:87) ~[app-server.jar:?]#012#011at com....and so on

La première chose que j'aimerais faire est de remplacer automatiquement ces chaînes #xxx par leurs valeurs d'origine, afin que le fichier journal résultant soit lisible.

La deuxième chose est que nous utilisons graylog2 où nous stockons temporairement pendant quelques semaines les journaux afin qu'ils puissent être facilement recherchés. Rsyslog est configuré pour sauvegarder les journaux à un certain endroit ET renvoyer les journaux à graylog et j'aimerais bien sûr que les exceptions soient faites avec des espaces et des tabulateurs au lieu des caractères de contrôle.

Je faisais quelques recherches et j'essayais de remplacer ces caractères de contrôle car ils devraient (je pense) être compatibles avec rsyslog :

http://www.rsyslog.com/doc/property_replacer.html http://www.rsyslog.com/doc/rsconf1_escapecontrolcharactersonreceive.html

Mais pas de chance jusqu'à présent.

Merci d'avance pour votre temps et votre aide !

P.S. Le premier problème peut être résolu avec cron et sed, mais pas le second.

0voto

user3337015 Points 63

Ce n'est pas exactement une solution, mais une solution de rechange suffisante.

Pour rsyslog, oui, une tâche cron nocturne avec une petite commande 'sed'. Pour graylog : Vous pouvez utiliser des règles drools pour réécrire le message avant qu'il n'atteigne le moteur graylog. (source : https://www.graylog.org/documentation/general/rewriting/ )

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X