Разбить разбитый лог-драйвер для Docker на несколько индексов - PullRequest
0 голосов
/ 28 июня 2018

У меня есть небольшое Java-приложение, работающее внутри Docker. Приложение является приложением Dropwizard , то есть оно имеет классы java, которые регистрируются с log4j, и конечные точки сети (JaxRS), которые имеют возможность ведения журнала запросов.

Теперь я хочу переслать свои журналы контейнеров в Splunk. Проблема в том, что я действительно хочу, чтобы они разбились на два индекса; один для журнала приложений и один для журнала запросов. Мы можем назвать индексы cool_app и cool_req.

Есть ли способ сделать это? При запуске приложения dropwizard оно выводит как журнал приложения, так и журнал запросов в stdout. (Хотя также ведение журнала в двух файлах)

Я попробовал драйвер докера, но похоже, что он сделан только для одного индекса.

Могу добавить, что журналы легко разделить по regEx, если это будет вариант

1 Ответ

0 голосов
/ 28 июня 2018

Позвольте мне начать с предложения (если это возможно) разделить этот контейнер на несколько контейнеров. Запуск нескольких процессов в одном и том же контейнере - это не шаблон, и его следует избегать. Так что это в основном причина, почему у вас есть этот вопрос. Если вы будете использовать Kubernetes - это позволит вам планировать несколько контейнеров в одном модуле, позволяя им совместно использовать одни и те же тома и интерфейс обратной связи, предоставляя вам множество различных возможностей для межпроцессного взаимодействия.

Но я понимаю, что это не всегда возможно сделать. Таким образом, возможно, лучшим решением будет сохранить эти журналы в виде журналов приложений, а это означает, что у вас будет объем данных для этого контейнера, в котором будут храниться эти журналы, и вы не собираетесь перенаправлять их на стандартный вывод. Чтобы получить эти журналы для Splunk, вы можете использовать контейнер Sidecar с Splunk Universal Forwarder или нашим сборщиком (если вы являетесь нашим клиентом или хотите быть).

Если боковой контейнер недоступен, последний вариант - сохранить журналы в контейнере, добавить UF Splunk к образу и запустить его вместе с процессом приложения. https://docs.docker.com/config/containers/multi-service_container/

Кстати, мы работаем над некоторыми новыми функциями, которые позволят пересылать журналы приложений с минимальными изменениями конфигурации.

...