Как отправить журналы в конечную точку UDP GELF из Kubernetes для каждого отдельного модуля?

Я недавно начал использовать kubernetes и сейчас смотрю, как я могу настроить централизованное ведение журнала. Для большинства модулей само приложение регистрируется прямо в конечной точке GELF (logstash), однако есть несколько модулей "управления", от которых мне тоже нужно получать журналы.

Ранее, когда я использовал Docker Swarm, я просто добавлял драйвер журнала (и соответствующую конфигурацию) в файл compose. Однако в Куберне, похоже, такой возможности нет.

Я смотрел на использование Fluentd для чтения логов прямо из / var / log / container, но тут я столкнулся с несколькими проблемами:

  1. Похоже, не существует простого способа указать, какие модули нужно записывать в logstash; Я понимаю, что вы можете создавать фильтры и т. Д., Но в дальнейшем это выглядит не слишком удобным, что-то, использующее аннотации на отдельных модулях, кажется более разумным.

  2. Журналы в / var / log / container имеют формат журнала json, а не GELF.

Есть ли какой-нибудь способ в kubernetes использовать встроенный драйвер ведения журнала Docker для каждого модуля для простого входа в конечную точку GELF?

1 ответ

Попробуйте использовать fluentd с плагином метаданных Kubernetes для извлечения локальных журналов докера json-файла и отправки в Graylog2.

tag_to_kubernetes_name_regexp - регулярное выражение, используемое для извлечения метаданных Kubernetes (имя модуля, имя контейнера, пространство имен) из текущего тега fluentd.

Другие вопросы по тегам