Мы запускаем наши сервисы на платформе AWS ECS и отправляем наши журналы в AWS CloudWatch.
У нас есть два типа журналов, любой контейнер может производить любой тип:
Журналы аудита обязательны в соответствии с нормативными актами, и, помимо более строгих требований к контролю доступа, они имеют более длительный срок хранения, чем журналы приложений, поэтому размещение этих двух журналов в одном потоке на самом деле не вариант. Таким образом, мы используем два потока журналов, один из которых находится в группе журналов CloudWatch со строгой политикой доступа.
В настоящее время мы записываем журналы в отдельные файлы на диске, откуда агент журнала отправляет записи журнала в CloudWatch. Однако мы бы хотели переключиться на "Docker Way" ведения журнала, то есть записывать все журналы в STDOUT или STDERR, а обо всем остальном позаботится драйвер журнала. Это звучит особенно привлекательно, потому что диски журналов (почти) единственные, которые мы используем, и избавиться от них было бы действительно очень приятно. (За исключением дисков журналов, наши контейнеры предназначены только для чтения.)
Проблема в том, что мы не можем найти разумного способа разделить потоки журналов. Очевидно, что нужно как-то пометить сообщения журнала и разделить их позже, но проблема все еще существует:
Надеюсь, нам не хватает чего-то очевидного, и в этом случае мы будем очень признательны за помощь.
Если нет, есть ли какие-нибудь обходные пути (или даже правильные решения), чтобы заставить такие вещи работать?
По крайней мере, есть два собственных способа AWS,
Мы все еще ищем лучший способ сделать это, но пока то, что мы собираемся делать в компании, с которой я работаю, - это прикрепить том к контейнеру и записать туда, установить агент и обрабатывать его как обычный файл журнала.
Я не знаю, жизнеспособное ли это решение, потому что я нашел ваш вопрос, когда читал об этом, но, возможно, fluentd подойдет для ваших нужд. У него есть драйвер докера, и вы можете использовать стратегию тегов для маршрутизации журнала.
Что касается журнала аудита, не могли бы вы поделиться тем, что вы хотите проверить? Как правило, для таких целей вы можете использовать CloudTrail или GuardDuty.