RSyslog/Syslog-ng — Запуск сборщика логов внутри контейнера

Допустим, у нас есть кластер Kubernetes (в производстве), который ведет журнал в Logstash.

Мы хотим, чтобы определенный сегмент журналов был отправлен на нашу удаленную машину Splunk (VM).

Планируется добавить сервер пересылки Splunk, который будет собирать журналы. и отправить его вперед.

Мы можем просто запустить пересылку splunk в док-контейнере и выставьте, что у него есть служба внутри кластера k8s.

Но я хочу отделить сборщик журналов от модуля пересылки Splunk и запустить гораздо более легкий сборщик журналов, такой как Rsyslog или Syslog-ng внутри контейнера sidecar, который будет использовать общий том с Splunk. экспедитор (или любой другой форвардер, который может заменить его в будущем).

В поисках решения я нашел несколько проектов (список ниже), которые, похоже, еще не готовы к работе.

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

С другой стороны, возможно, более современные (и менее легкие) решения, такие как закончились и оставили позади устаревшие решения Syslog.

Любые идеи?


Проекты Rsyslog-docker:

https://github.com/rsyslog/rsyslog-docker

https://github.com/jumanjihouse/docker-rsyslog

https://github.com/deoren/rsyslog-docker

https://github.com/camptocamp/docker-rsyslog-bin/blob/master/Dockerfile

https://github.com/megastef/rsyslog-logsene

Проекты Syslog-ng-docker:

https://github.com/mumblepins-docker/syslog-ng-alpine

https://hub.docker.com/r/balabit/syslog-ng/ ‹--- Похоже на самое стабильное решение.


person RtmY    schedule 04.08.2019    source источник


Ответы (2)


немного поздно, но, возможно, поможет кому-то.

вы можете использовать вспомогательную машину logstash для пересылки журналов в splunk с использованием HTTP (Splunk HEC). контейнер logstash может совместно использовать том с другим контейнером и следить за файлом журнала.

в каждом новом журнале он будет пересылать его в Splunk. Это пример файла logstash.conf (файл входной и выходной конфигурации logstash):

input {
 file {
  path => "${LOGS_FILE_PATH}"
  start_position => "beginning"
 }
}

 http {
  http_method => "post"
   url => "http://XX.XX.XX.XX:8088/services/collector/event"
   headers => ["Authorization", "Splunk XXXXX-XXXX-XXXXX-XXXXX"]
   mapping => {
    "event" => "%{[message]}"
   }
 }
}

для получения дополнительной информации о настройке logstash: https://www.elastic.co/guide/en/logstash/current/docker-config.html

person Sariel    schedule 14.11.2019

RtmY, недавно я столкнулся с похожей ситуацией, и системный журнал был ограничен, когда дело доходит до интеграции Docker и Kubernetes.

Как вы упомянули, рассматривая альтернативы, вам следует взглянуть на Fluentbit, он легкий (требуется 450 КБ памяти) и масштабируемый. Он не охватывает огромный набор плагинов, но большинства доступных достаточно для целого ряда ситуаций.

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

person rsilva    schedule 14.01.2020
comment
fluentbit не сопоставляет журналы API и журналы приложений. Это означает, что если вы перенаправляете журналы напрямую из fluentbit, у вас не будет сведений о кластере в журналах приложений. - person Ali Okan Yüksel; 30.01.2021