предисловие
Из-за большого объема памяти logstash и относительно низкой гибкости ELK постепенно заменяется EFK. EFK, упомянутый в этой статье, — это Elasticsearch+Fluentd+Kfka.На самом деле K должен быть Kibana для отображения журналов.Этот не сделано Демонстрация, в этой статье описывается только процесс сбора данных.
помещение
Архитектура
Процесс сбора данных
Генерация данных использует cadvisor для сбора данных мониторинга контейнеров и передачи данных в Kafka.
Канал передачи данных следующий: Cadvisor->Kafka->Fluentd->elasticsearch
Каждый сервис можно масштабировать горизонтально, добавляя сервисы в систему логирования.
конфигурационный файл
docker-compose.yml
version: "3.7"
services:
elasticsearch:
image: elasticsearch:7.5.1
environment:
- discovery.type=single-node #使用单机模式启动
ports:
- 9200:9200
cadvisor:
image: google/cadvisor
command: -storage_driver=kafka -storage_driver_kafka_broker_list=192.168.1.60:9092(kafka服务IP:PORT) -storage_driver_kafka_topic=kafeidou
depends_on:
- elasticsearch
fluentd:
image: lypgcs/fluentd-es-kafka:v1.3.2
volumes:
- ./:/etc/fluent
- /var/log/fluentd:/var/log/fluentd
в:
- Данные, сгенерированные cadvisor, будут переданы в службу kafka этой машины по адресу 192.168.1.60, а тема — kafeidou.
- Elasticsearch указан как одиночный режим запуска (discovery.type = переменная среды с одним узлом), автономный режим запускается для облегчения общего эффекта эксперимента.
fluent.conf
#<source>
# type http
# port 8888
#</source>
<source>
@type kafka
brokers 192.168.1.60:9092
format json
<topic>
topic kafeidou
</topic>
</source>
<match **>
@type copy
# <store>
# @type stdout
# </store>
<store>
@type elasticsearch
host 192.168.1.60
port 9200
logstash_format true
#target_index_key machine_name
logstash_prefix kafeidou
logstash_dateformat %Y.%m.%d
flush_interval 10s
</store>
</match>
в:
- Плагин типа copy предназначен для копирования данных, полученных fluentd, для облегчения отладки, для печати данных на консоли или сохранения их в файле.Этот файл конфигурации закрыт по умолчанию, и только необходимый плагин вывода es -ins предусмотрены.
При необходимости вы можете открыть блок stdout @type для отладки получения данных.
- Источник ввода также настроен с конфигурацией ввода http, которая отключена по умолчанию и также используется для отладки и ввода данных в fluentd.
Вы можете выполнить следующую команду в Linux:
curl -i -X POST -d 'json={"action":"write","user":"kafeidou"}' http://localhost:8888/mytag
- targetindexКлючевой параметр, этот параметр должен использовать значение, соответствующее полю в данных, в качестве индекса es.Например, этот файл конфигурации использует значение в поле имя_компьютера в качестве индекса es.
Начать развертывание
Выполните в каталоге, содержащем файл docker-compose.yml и файл fluent.conf:
docker-compose up -d
Убедившись, что все контейнеры работают правильно, вы можете проверить, генерирует ли elasticsearch ожидаемые данные в качестве проверки.Здесь мы используем, чтобы проверить, генерируется ли индекс es, и количество данных для проверки:
-bash: -: 未找到命令
[root@master kafka]# curl http://192.168.1.60:9200/_cat/indices?v
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open 55a4a25feff6 Fz_5v3suRSasX_Olsp-4tA 1 1 1 0 4kb 4kb
Вы также можете напрямую ввести http://192.168.1.60:9200/_cat/indices?v в браузере, чтобы просмотреть результаты, что будет более удобно.
Как видите, здесь я использовал поле machine_name в качестве значения индекса. Результатом запроса является создание данных индекса с именем ``55a4a25feff6``, и генерируется 1 часть данных (``docs.count``)
На данный момент создан процесс сбора логов, такой как kafka->fluent->es.
Конечно, архитектура не фиксирована.Вы также можете использовать fluentd->kafka->es таким образом, чтобы собранные здесь данные не демонстрировались, это не что иное, как возиться с конфигурационным файлом fluentd.conf, соответствующей конфигурацией es и делать что-то kafka обмен позициями, соответствующими ему.
Поощряйте больше официальных документов, вы можете найти плагин FluentD-ES и плагины FLUENTD-KAFKA на GitHub или официальном сайте FluentD.
Возникло вчетыре кофейных зерна, пожалуйста, укажите источник для перепечатки.
Подпишитесь на официальный аккаунт -> [Четыре кофейных зерна], чтобы получить последний контент.