Comment développer JSON dans Fluentd?
Sep 29 2020
Existe-t-il un moyen de filtrer la chaîne JSON imbriquée dans des champs séparés dans fluentd?
JSON actuel:
{
Value1: "something",
Value2: "something",
Message:{
Value3: "Something",
Value3: "Something"
}
}
Ce que je veux (ou quelque chose de similaire):
{
Value1: "something",
Value2: "something",
Message.Value3: "Something",
Message.Value3: "Something"
}
Le JSON n'a pas besoin d'être aplati comme dans l'exemple ci-dessus, mais je veux que les valeurs soient dans leurs propres champs (colonnes) séparés lorsqu'ils atteignent elasticsearch. Dans d'autres services, je souhaite diviser la longue chaîne de message en plusieurs champs qu'elle contient.
Réponses
1 MaxLobur Sep 29 2020 at 02:54
Essaye ça:
<source>
...
</source>
<filter myapp**>
@type parser
key_name Message
format multi_format
<pattern>
format json # try parsing json in the first place
</pattern>
<pattern>
format none # leave as is if this is not json (plaintext)
</pattern>
reserve_data true # keep the original Message field in case anything go wrong
</filter>
<match myapp**>
...
</match>
Analyseur multi-format: https://github.com/repeatedly/fluent-plugin-multi-format-parser