Как отправить журналы в конечную точку UDP GELF из Kubernetes для каждого отдельного модуля?
Я недавно начал использовать kubernetes и сейчас смотрю, как я могу настроить централизованное ведение журнала. Для большинства модулей само приложение регистрируется прямо в конечной точке GELF (logstash), однако есть несколько модулей "управления", от которых мне тоже нужно получать журналы.
Ранее, когда я использовал Docker Swarm, я просто добавлял драйвер журнала (и соответствующую конфигурацию) в файл compose. Однако в Куберне, похоже, такой возможности нет.
Я смотрел на использование Fluentd для чтения логов прямо из / var / log / container, но тут я столкнулся с несколькими проблемами:
Похоже, не существует простого способа указать, какие модули нужно записывать в logstash; Я понимаю, что вы можете создавать фильтры и т. Д., Но в дальнейшем это выглядит не слишком удобным, что-то, использующее аннотации на отдельных модулях, кажется более разумным.
Журналы в / var / log / container имеют формат журнала json, а не GELF.
Есть ли какой-нибудь способ в kubernetes использовать встроенный драйвер ведения журнала Docker для каждого модуля для простого входа в конечную точку GELF?
1 ответ
Попробуйте использовать fluentd с плагином метаданных Kubernetes для извлечения локальных журналов докера json-файла и отправки в Graylog2.
tag_to_kubernetes_name_regexp
- регулярное выражение, используемое для извлечения метаданных Kubernetes (имя модуля, имя контейнера, пространство имен) из текущего тега fluentd.