Содержание

Elasticsearch

Getting started with the Elastic Stack and Docker Compose: part 1 (git), part 2 (git).
🎞️ Install Elasticsearch + Kibana 8.x with TLS/SSL

Fluentd

https://docs.fluentd.org/configuration
https://hub.docker.com/r/fluent/fluentd/

Kibana

Install Kibana with Docker
Кибана настраивается через переменные окружения соответственно параметрам в kibana.yml, с капитализацией и заменой точек на подчёркивания в параметрах:

Environment Variable Kibana Setting
SERVER_NAME server.name
SERVER_BASEPATH server.basePath
ELASTICSEARCH_HOSTS elasticsearch.hosts

и т. д.

HTTPS

# Сконвертировать исходный сторонний .pfx в .crt/.key
openssl pkcs12 -in /tmp/source.pfx -clcerts -nokeys -out /efk/certs/kibana.crt
openssl pkcs12 -in /tmp/source.pfx -nocerts -nodes -out /efk/certs/kibana.key

https://tipoit.kz/elk-install-kibana

  kibana:
    depends_on:
      es01:
        condition: service_healthy
    image: kibana:${STACK_VERSION}
    labels:
      co.elastic.logs/module: kibana
    volumes:
      - ./certs:/usr/share/kibana/config/certs
      - ./kibanadata:/usr/share/kibana/data
      - ./kibana.yml:/usr/share/kibana/config/kibana.yml:ro
    ports:
      - ${KIBANA_PORT}:5601
    environment:
      - SERVERNAME=kibana
      - ELASTICSEARCH_HOSTS=https://es01:9200
      - ELASTICSEARCH_USERNAME=kibana_system
      - ELASTICSEARCH_PASSWORD=${KIBANA_PASSWORD}
      - ELASTICSEARCH_SSL_CERTIFICATEAUTHORITIES=config/certs/ca/ca.crt
      - XPACK_SECURITY_ENCRYPTIONKEY=${ENCRYPTION_KEY}
      - XPACK_ENCRYPTEDSAVEDOBJECTS_ENCRYPTIONKEY=${ENCRYPTION_KEY}
      - XPACK_REPORTING_ENCRYPTIONKEY=${ENCRYPTION_KEY}
      - XPACK_REPORTING_KIBANASERVER_HOSTNAME=localhost
      - SERVER_SSL_ENABLED=true
      - SERVER_SSL_CERTIFICATE=config/certs/kibana/kibana.crt
      - SERVER_SSL_KEY=config/certs/kibana/kibana.key
      - SERVER_SSL_CERTIFICATEAUTHORITIES=config/certs/ca/ca.crt
    mem_limit: ${KB_MEM_LIMIT}
    healthcheck:
      test:
        [
          "CMD-SHELL",
          "curl -I -s --cacert config/certs/ca/ca.crt https://localhost:5601 | grep -q 'HTTP/1.1 302 Found'",
        ]
      interval: 10s
      timeout: 10s
      retries: 120

https://github.com/elkninja/elastic-stack-docker-part-two/blob/main/docker-compose.yml

Конфигурация

Этапы прохождения логов во Флюенте:
Source → Format → Output

Для каждого этапа есть свои плагины, т. е., для сбора из разных источников (файлы, systemd и т .п.), форматирования/дополнения/тэгирования и отправки в разные системы (например, Elasticsearch).

Литература

Docker logging: https://www.fluentd.org/guides/recipes/docker-logging
Как настроить централизованное логирование для Docker Swarm с помощью Fluentd: https://cloud.vk.com/docs/cases/cases-logs/case-swarm
Better Log Parsing with Fluentd: https://work.haufegroup.io/fluentd-log-parsing/
Docker Setup Monitoring: https://www.frederikbanke.com/docker-setup-monitoring/
Настройка централизованного логирования в Docker с применением EFK Stack: https://daffin.ru/devops/docker/efk/
Elasticsearch + Docker-compose, также см. весь канал