ELK - DmitryGontarenko/usefultricks GitHub Wiki
Скачать образы Elasticsearch, Kibana и Logstash:
docker pull docker.elastic.co/elasticsearch/elasticsearch:8.0.1
docker pull docker.elastic.co/kibana/kibana:8.0.1
docker pull docker.elastic.co/logstash/logstash:8.0.1
Настроить запуск контейнеров через docker-compose:
version: '3.1'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.0.1
container_name: elasticsearch
ports:
- "9200:9200"
- "9300:9300"
environment:
- discovery.type=single-node
- xpack.security.enabled=false
networks:
- elk_network
kibana:
image: docker.elastic.co/kibana/kibana:8.0.1
container_name: kibana
ports:
- "5601:5601"
networks:
- elk_network
depends_on:
- elasticsearch
logstash:
image: docker.elastic.co/logstash/logstash:8.0.1
container_name: logstash
environment:
- ES_HOSTS=http://elasticsearch:9200
volumes:
- ./config/pipelines.yml:/usr/share/logstash/config/pipelines.yml:ro
- ./config/pipelines:/usr/share/logstash/config/pipelines:ro
- ./logs:/usr/share/logstash/input:ro
ports:
- "5000:5000"
networks:
- elk_network
depends_on:
- elasticsearch
networks:
elk_network:
driver: bridge
Создаем сеть, в которой будут работать все три сервиса.
Для Logstash настраиваем volumes, где примонтируем локальные файлы конфигураций и логов.
Для Logstash нужно настроить конфигурацию фильтрации логов, с помощью файлов *.conf.
Для управления сразу несколькими конфигурациями используется pipeline, который ссылается на .conf файлы.
Создадим файл pipelines.yml:
- pipeline.id: CHANNEL_1
pipeline.workers: 1
pipeline.batch.size: 1
path.config: "./config/pipelines/logstash.conf"
Создадим файл logstash.conf:
input {
file {
start_position => "beginning"
path => "/usr/share/logstash/input/*.log"
type => "log"
}
# тестовоя отправка данных раз в минуту
# heartbeat { message => "HeartBeat!" }
}
filter {
}
output {
elasticsearch {
hosts => ["${ES_HOSTS}"]
index => "logstash"
}
# отображение логов в консоли
# stdout { codec => rubydebug }
}