Пересылка логов из kubernetes в spunk - PullRequest
0 голосов
/ 01 июня 2018

Я довольно плохо знаком с Кубернетесом и не имею практического опыта.

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

Приложение отправляет журнал на стандартный вывод в этом формате

{"logname" : "app-log", "level" : "INFO"}

В конце концов Splunk получает этот формат (используется splunkforwarder)

{
  "log" : "{\"logname\": \"app-log\", \"level\": \"INFO \"}",
  "stream" : "stdout",
  "time" : "2018-06-01T23:33:26.556356926Z" 
 }

Этот формат усложняет задачув Splunk для запроса на основе свойств.

Есть ли в Kubernetes какие-либо опции для перенаправления raw logs из приложения вместо группировки в другой json?

Я сталкивался с this сообщение в Splunk, но настройка выполняется на стороне Splunk

Пожалуйста, дайте мне знать, если у нас есть какая-либо опция со стороны Kubernetes для отправки необработанных журналов из приложения

Ответы [ 3 ]

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

На этой неделе у нас была та же проблема.

  1. Использование перенаправителя Spunk DaemonSet

  2. установка https://splunkbase.splunk.com/app/3743/ этот плагин на Spunk решит вашу проблему.

0 голосов
/ 14 декабря 2018

Просто хочу обновить решение, которое мы пробовали, это сработало для нашей структуры журнала

SEDCMD-1_unjsonify = s/{"log":"(?:\\u[0-9]+)?(.*?)\\n","stream.*/\1/g
SEDCMD-2_unescapequotes = s/\\"/"/g
BREAK_ONLY_BEFORE={"logname":
0 голосов
/ 01 июня 2018

Архитектура Kubernetes предоставляет три способа сбора журналов:

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

Вы можете реализовать ведение журнала на уровне кластера, включив в каждый агент ведения журнала уровня узла.Агент ведения журналов - это специальный инструмент, который предоставляет журналы или отправляет журналы бэкэнду.Обычно агент ведения журнала - это контейнер, который имеет доступ к каталогу с файлами журналов из всех контейнеров приложений на этом узле.

Формат журналов зависит от настроек Docker.Вам необходимо установить параметр log-driver в /etc/docker/daemon.json на каждом узле.

Например,

{
  "log-driver": "syslog"
}

или

{
  "log-driver": "json-file"
}
  • none -журналы для контейнера недоступны, и журналы докера не возвращают никакого вывода.
  • json-файл - журналы отформатированы как JSON.Драйвер регистрации по умолчанию для Docker.
  • syslog - записывает сообщения журнала в средство syslog.

Для получения дополнительных опций проверьте ссылку

2.Включите выделенный контейнер с коляской для регистрации в модуле приложения.

Контейнер с коляской можно использовать одним из следующих способов:

  • Контейнер с коляской передает потоки приложения в журнал.свой собственный stdout.
  • В контейнере sidecar запускается агент ведения журнала, который настроен на получение журналов из контейнера приложения.

Имея потоковые контейнеры sidecar в свои собственные потоки stdout и stderr, выможет использовать в своих интересах kubelet и агент регистрации, которые уже работают на каждом узле.Контейнеры коляски читают журналы из файла, сокета или журнала.Каждый отдельный контейнер с коляской печатает журнал в свой поток stdout или stderr.

3.Загрузка журналов непосредственно в бэкэнд из приложения.

Вы можете реализовать ведение журнала на уровне кластера, выставляя или отправляя журналы непосредственно из каждого приложения.

Для получения дополнительной информации вы можете проверить официальная документация Куберне

...