Учитывая, что ваше Java-приложение может регистрировать в stdout
и stderr
, вы будете использовать fluentd для чтения этого журнала и, в большинстве случаев, отправлять эти журналы в систему, которая может агрегировать журналы.
На этом рисунке из официальных документов показана общая схема настройки ведения журнала на уровне узлов в Kubernetes с использованием, например, fluentd as Pod, развернутого с помощью DaemonSet:
На приведенном выше рисунке logging-agent
будет плавным, а my-pod
будет вашим модулем с контейнером, на котором выполняется ваше приложение Java. Logging Backend
, с точки зрения быстрой конфигурации, является необязательным, но, конечно, настоятельно рекомендуется. По сути, вы можете выбрать вывод своих журналов через fluentd stdout
.
. Для правильной работы fluentd потребуется доступ для чтения к журналам контейнера, это достигается путем установки каталога журнала, например, /var/lib/docker/containers
в fluentd. container.
Мы успешно использовали этот беглый пример ConfigMap с некоторыми изменениями для чтения журналов с узлов и отправки их в Elasticsearch. Посмотрите containers.input.conf
часть этого ConfigMap для получения дополнительной информации о журналах контейнеров и о том, как их переварить.
Обратите внимание, что вам не нужно использовать библиотеку fluentd-logger-java
, чтобы начать использовать fluentd, хотя вы могли быиспользуйте его как другой тип регистратора в вашем приложении Java. Из коробки вы должны позволить Java записывать все в stdout
и stderr
и читать журналы с помощью fluentd.