Моя организация EFK выглядит следующим образом, всего 39 виртуальных машин. Fluented читает журналы в виде хвоста от каждой службы (на рисунке отмечены как APP). Чтобы извлечь журналы, вы можете использовать http://fluentular.herokuapp .com/ веб-сайт для проверки обычных правил , затем отправляется в ElasticSearch, а затем отображается с помощью Kibana.Все EFK запускаются в отдельном контейнере докера.
Этапы строительства следующие:
Строительство Fluented
1. Создайте docker-compose.yml и смонтируйте две точки монтирования: одна — это файл конфигурации fluentd, а другая — папка, в которой находится журнал.
version: '2'
services:
fluentd:
build: .
expose:
- 24224
ports:
- "24224:24224"
volumes:
- /data/conf/fluent.conf:/fluentd/etc/fluent.conf
- /data/logs/nginx:/data/logs/nginx
restart: always
2. Создайте Dockerfile и добавьте плагин elasticsearch и плагин пересылки.
FROM fluent/fluentd:v1.12.0-debian-1.0
USER root
RUN ["gem", "install","fluent-plugin-elasticsearch","--no-document", "--version", "4.3.3"]
RUN ["gem", "install","fluent-plugin-forest","--no-document"]
USER root
3. Настройте fluent.conf
<source>
@type tail
path /data/logs/nginx/https-access.log
pos_file /data/logs/nginx/https-access.log.pos
<parse>
@type nginx
</parse>
tag *
</source>
<match *.**>
@type forest
subtype copy
<template>
<store>
@type elasticsearch
host XX.XX.XX.XX
port 9200
</store>
</template>
</match>
2 Настройка ElasticSearch и Kibana
Настройте docker-compose.xml
version: '2'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2
environment:
- "discovery.type=single-node"
expose:
- 9200
ports:
- "9200:9200"
kibana:
image: kibana:7.10.1
links:
- "elasticsearch"
ports:
- "80:5601"
3 Запустите ЭФК
Запустите docker-compose up --d под flentd и EK соответственно.
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4941a0198a4f fluentd_fluentd "tini -- /bin/entr..." 4 days ago Up 4 days 5140/tcp, 0.0.0.0:24224->24224/tcp fluentd_fluentd_1
a33dee4a2bdb kibana:7.10.1 "/usr/local/bin/du..." 7 days ago Up 6 days 0.0.0.0:80->5601/tcp efk_kibana_1
dd05f58e2cbe docker.elastic.co/elasticsearch/elasticsearch:7.10.2 "/tini -- /usr/loc..." 7 days ago Up 6 days 0.0.0.0:9200->9200/tcp, 9300/tcp efk_elasticsearch_1
4. Получите доступ к серверу, на котором находится Kibana, и установите индекс
Просто выполните запрос журнала Kibana в Discover.