Для настройки вывода определенных логов и индексов только для Docker контейнеров в ELK (Elasticsearch, Logstash, Kibana) с использованием docker-compose, вам потребуется определить и настроить специальные фильтры для Logstash и Elasticsearch.
Ниже приведен пример docker-compose.yml файла, который настраивает ELK для вывода логов только из Docker контейнеров:
version: '3' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0 ports: - 9200:9200 environment: - discovery.type=single-node logstash: image: docker.elastic.co/logstash/logstash:7.14.0 volumes: - ./logstash.config:/usr/share/logstash/pipeline/logstash.conf depends_on: - elasticsearch kibana: image: docker.elastic.co/kibana/kibana:7.14.0 ports: - 5601:5601 depends_on: - elasticsearch
В приведенном примере используются официальные образы ELK от Elasticsearch. Logstash настроен на загрузку конфигурации из файла logstash.config, который должным образом сконфигурирован для фильтрации Docker логов.
Ниже приведен пример logstash.config файла для настройки вывода только Docker логов:
input { file { path => "/var/lib/docker/containers/*/*.log" type => "docker" codec => json } } filter { if [type] == "docker" { // Добавьте необходимые фильтры для обработки Docker логов } } output { elasticsearch { hosts => ["elasticsearch:9200"] index => "docker-logs-%{+YYYY.MM.dd}" // Добавьте необходимые настройки вывода в Elasticsearch } }
В приведенном примере используется входной плагин Logstash file
, который мониторит логи Docker контейнеров внутри директории /var/lib/docker/containers/
. Фильтр применяется только к логам с типом docker
, и здесь вы можете добавить необходимые фильтры для обработки логов, какие вам нужны.
Выходной плагин Logstash настроен для отправки обработанных логов в Elasticsearch по адресу elasticsearch:9200
. Индекс для логов называется docker-logs-%{+YYYY.MM.dd}
, где %{+YYYY.MM.dd}
- это шаблон даты, который добавляет текущую дату к имени индекса, чтобы создавать новый индекс каждый день.
Обратите внимание, что вам также придется изменить некоторые настройки в других частях вашего ELK стека (например, Kibana), чтобы увидеть только Docker логи и индексы. Это может включать фильтрацию и конфигурацию в Kibana для отображения только нужных данных.
Таким образом, вы сможете настроить вывод определенных логов и индексов только для Docker контейнеров в ELK с использованием docker-compose.