Как в ELK через docker-compose задать вывод определенных логов и индексов только для докер контейнеров?

Для настройки вывода определенных логов и индексов только для 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.