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 }
}