J'espère vraiment que quelqu'un m'aidera avec cette question, car j'ai essayé de le comprendre pendant des jours.Comment modifier le niveau de gravité (INFO, ERROR, WARNING, etc.) du message de journal dans Fluentd en fonction d'un mot-clé dans la charge utile du journal?
J'ai un conteneur fonctionnant dans des kubernetes dans GKE. En /var/log/containers/my_container.log, j'ai quelque chose comme ça (parmi d'autres journaux avec des formats différents):
{"log":"17-Oct-2017;04:36:29.744 : [main] [server:] [id:] [yt:] ERROR no.myproject.service.Server - call failed for some reason\n","stream":"stdout","time":"2017-10-17T04:36:29.750702216Z"}
Ce journal apparaît sur Stackdriver (sortie Fluentd dans GKE) comme journal et comme INFO :
23:02:32.000 17-Oct-2017;04:36:29.744 : [main] [server:] [id:] [yt:] ERROR no.myproject.service.Server - call failed for some reason
Alors
23:02:32.000
est ajouté (ce qui est le comportement normal de Stackdriver). Je vais me référer à ce format comme format 2.
Comme ce message de journal est en fait un message de journal ERROR (basé sur son contenu de charge utile), je veux qu'il apparaisse comme ERREUR dans Stackdriver (Fluentd).
Je suis en train:
<filter reform.**>
type parser
format /^(?<time>\d{2} [^\s]*) : (?<message2>[^ \]]*)\] (?<message3>[^ \]]*)\] (?<message4>[^ \]]*)\] (?<message5>[^ \]]*)\] (?<severity>\w)\s+(?<log2222>.*)/
reserve_data true
suppress_parse_error_log false
key_name log
</filter>
l'espoir d'obtenir la gravité du changement de message d'erreur et aussi obtenir le contenu des [..] champs dans le journal que des nouvelles valeurs clés/(dans ce cas message2: principal, etc). Mais après avoir ajouté ce filtre à mon fichier de configuration, les journaux de sortie sont toujours comme avant et je ne vois aucun changement.
Qu'est-ce qui me manque? Quand j'écris mon motif Regex, je ne suis pas sûr si je devrais vraiment considérer le champ "log" du message dans le fichier journal dans kubernetes ou celui que j'ai appelé le format 2 (avec le temps ajouté - sur Stackdriver) .
J'apprécierais vraiment tout conseil, ce serait une aide précieuse.
Merci beaucoup. Maintenant, je capture la gravité de la charge utile dans la sortie. J'ai une autre question. Je m'attendais aussi à ce que dans la sortie les nouveaux champs de message2 à message 5 et log2222 soient ajoutés, mais aucun nouveau champ n'est ajouté. Comment puis-je extraire certaines données de la charge de texte de journal et l'obtenir comme un nouveau champ supplémentaire dans la sortie (comme "message2: [main]" dans l'exemple ci-dessus)? – samanta
De rien.Je ne connais pas votre outil, donc je ne suis pas sûr que cela puisse vous aider mais, si vous pouvez spécifier des chaînes de remplacement, vous pouvez alors utiliser '$ {severity} message2: $ {message2}' en remplacement. Vous obtiendrez alors ERROR message2: [main''. Voir la nouvelle version [ici] (https://regex101.com/r/o5lu2j/2). – PJProudhon