Для настройки вывода определенных логов из докер-контейнеров в ELK с использованием docker-compose, вам понадобится выполнить несколько шагов:
1. Установка и настройка Elasticsearch, Logstash и Kibana, а также создание docker-compose.yml файла для их запуска. Пример файла может быть таким:
```
version: '3'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.14.1
environment:
- discovery.type=single-node
ports:
- 9200:9200
volumes:
- elasticsearch-data:/usr/share/elasticsearch/data
logstash:
image: docker.elastic.co/logstash/logstash:7.14.1
volumes:
- ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf
depends_on:
- elasticsearch
kibana:
image: docker.elastic.co/kibana/kibana:7.14.1
ports:
- 5601:5601
depends_on:
- elasticsearch
volumes:
elasticsearch-data:
```
2. Создание файла logstash.conf, в котором будет определена конфигурация Logstash для фильтрации и перенаправления определенных логов из докер-контейнеров в Elasticsearch. Пример конфигурации может быть таким:
```
input {
file {
path => "/var/lib/docker/containers/*/*.log"
type => "docker"
start_position => "beginning"
sincedb_path => "/dev/null"
codec => "json"
}
}
filter {
if [type] == "docker" {
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:log_timestamp} %{DATA:log_level} %{GREEDYDATA:log_message}" }
remove_field => "message"
}
if [log_level] == "ERROR" {
mutate {
add_tag => ["error_logs"]
}
}
}
}
output {
elasticsearch {
hosts => ["elasticsearch:9200"]
index => "docker-%{+YYYY.MM.dd}"
}
}
```
3. Запуск docker-compose для развертывания Elasticsearch, Logstash и Kibana:
```
docker-compose up -d
```
4. Теперь, когда ваши контейнеры запущены, вы можете посмотреть их логи в Kibana, указав соответствующий индекс и фильтр. Например, для поиска только логов с уровнем ERROR, вам нужно будет применить фильтр по тегу "error_logs".
Дополнительные настройки, такие как определение и использование дополнительных индексов и фильтров, могут быть добавлены в файлы docker-compose.yml и logstash.conf в соответствии с вашими требованиями.
Обратите внимание, что приведенные примеры являются базовыми и не учитывают другие аспекты, такие как масштабирование, безопасность и резервное копирование.