Отправка логов в контейнер ELK из контейнеров Docker (без Filebeat)

Я использую контейнер SEBP/ELK Docker, поскольку он кажется наиболее подходит для быстрой настройки логирования приложений. К сожалению, после прочтения документов не оказалось простого способа получить журналы из одноуровневые контейнеры без использования Filebeat.

Я не хочу устанавливать Filebeat на каждый из своих контейнеров, потому что кажется, что это прямо противоречит мантре разделения обязанностей Docker.

TLDR; как мне получить журналы из моих контейнеров приложений в мой контейнер ELK?


person ServAce85    schedule 06.01.2017    source источник
comment
Я мог бы понять вашу мысль. Я сделал ELK-образ, можно было попробовать включить ввод файла в logstash https://github.com/nguoianphu/docker-elk/blob/master/logstash.conf, тогда можно было смонтировать путь к файлу с томом докера.   -  person Tuan    schedule 06.01.2017


Ответы (2)


Использование filebeat в каждом контейнере противоречит философии Docker. Это будет пустой тратой ресурсов и дополнительными расходами на управление.

Вы можете использовать локальный файл журнала через logstash.

Пример конфига:

input {
  file {
    path => "/var/log/apache.log"
    type => "apache-access"  # a type to identify those logs (will need this later)
    start_position => "beginning"
  }
}

Теперь нам нужно сделать файлы журнала локальными для logstash контейнера:

Если вы используете bind mounts, вы можете смонтировать тот же каталог в контейнере logstash.

sudo docker run -d -v /path/to/logs/:/path/to/logs/in/container logstash

Если вы используете volumes, вы также можете смонтировать тот же том, который содержит журналы, в logstash.

sudo docker run -d -v logvol:/path/to/logs/in/container logstash
person Farhad Farahi    schedule 06.01.2017

SEBP/ELK был неподходящим инструментом для решения этой проблемы. Вместо этого я должен был использовать проект, который раскручивает контейнер для каждого из элементов стека ELK: Elasticsearch, Logstash и Kibana. Я нашел именно такой репозиторий на GitHub.

Проект deviantony/docker-elk объединяет три элемента ELK в рабочий набор контейнеров. Самое замечательное в этом то, что в отличие от проекта SEBP/ELK, deviantony/docker-elk не имеет самоуверенного мнения о том, какие функции должны быть доступны, а какие должны быть закрыты. В проекте SEBP/ELK возможность записи на порт 5000 удалена, и когда вы пытаетесь добавить ее обратно через пользовательский файл logstash.conf, прослушиватель UDP в конечном итоге дает сбой. И наоборот, проект deviantony/docker-elk просто работает.

Бонусные баллы: у этого проекта также есть ответвление, включающее X-Pack, который добавляет минимальный уровень безопасности из коробки.

person ServAce85    schedule 07.01.2017