Ich habe einige JSON aus einem Andockfensters Behälter über die Fahrer wie FluentD emittiert wird? Wenn diese Daten durch fluentD erfasst wird, endet es so nach oben, wie erwartet:Parsing innere JSON innen FluentD
2017-02-01 06:29:15 +0000 docker.6faad650faa6: {"log":"{\"timeMillis\":1485917543709,\"thread\":\"main\",\"level\":\"INFO\",\"loggerName\":\"com.imageintelligence.ava.api.Boot\",\"message\":\"{\\\"dom\\\":\\\"DOM\\\"}\",\"loggerFqcn\":\"org.apache.logging.slf4j.Log4jLogger\",\"threadId\":1,\"threadPriority\":5}\r","com.amazonaws.ecs.cluster":"dombou","container_id":"6faad650faa6012af4f32df79901b42488543a5e6e53517fe3579b01ab2b6862","container_name":"/upbeat_booth","source":"stdout"}`
Ich benutze einen Filter wie so, die JSON zu analysieren:
<filter docker.**>
@type parser
format json
key_name log
reserve_data true
hash_value_field log
</filter>
und ich mit halb am Ende -sanitized JSON:
2017-02-01 06:32:10 +0000 docker.68c794f7f694: {"source":"stdout","log":{"timeMillis":1485917543709,"thread":"main","level":"INFO","loggerName":"com.imageintelligence.ava.api.Boot","message":"{\"dom\":\"DOM\"}","loggerFqcn":"org.apache.logging.slf4j.Log4jLogger","threadId":1,"threadPriority":5},"com.amazonaws.ecs.cluster":"dombou","container_id":"68c794f7f6948d4261b9497947834651abbf766e9aa51a76f39d6895b7a9ac18","container_name":"/sad_hamilton"}
das Problem ist, das message
Feld noch ein String ist entkam JSON Feld. Irgendwelche Ratschläge, wie ich dieses innere JSON-Feld auch analysieren kann? Wie staple ich Filter?
Mein Verständnis ist, dass dies für das Feld 'log' funktioniert, aber nichts in das Protokollfeld. Ich brauche etwas, das rekursiv mit den Innereien des Baumstamms umgehen wird. Ich werde es versuchen, obwohl –
Bestätigt: Es analysiert nicht die innere JSON, wie ich will –