Я получил 2 docker контейнеров, используя Fluentd в качестве драйвера журнала. Оба отправляют действительные JSON сообщения. Вот примеры из них:
{"tag":"docker/article-api","log":"{\"level\":\"debug\",\"port\":\":80\",\"time\":\"2020-02-17T17:06:46Z\",\"message\":\"starting the server\"}"}
{"log":"{\"level\":\"info\",\"ts\":1581959205.461808,\"caller\":\"apiserv/main.go:69\",\"msg\":\"Service is ready to listen\"}","tag":"docker/user-api"}
Они совершенно разные, но я уверен, что оба действительны. Поскольку мы используем ведение журнала Stackdriver, я бы хотел добавить поле «серьезность», равное значению уровня.
Вот часть файла конфигурации, которая создает всю путаницу.
<filter **>
@type parser
key_name log
replace_invalid_sequence true
<parse>
@type json
</parse>
</filter>
А вот и сама проблема. После прохождения фильтра первое сообщение записи в журнале полностью удаляется, а второе проходит через него.
Я попытался указать time_format, но, похоже, оно не работает вообще.
Кроме того, я пытался использовать filter docker**
, но вместо этого он удаляет все полезные записи. Это не имеет никакого отношения к этому, но если у вас есть представление о том, что вызвало это, я буду признателен за это
Заранее спасибо
PS Я использую google-fluentd обслуживание, если оно имеет значение.