eShopOnContainers — Часть 5 (стек ELK)
В этой статье вы найдете краткое руководство по настройке стека ELK в eShopOnContainers, что означает ElasticSearch, LogStash и Kibana. Стек ELK — один из наиболее широко используемых инструментов в отрасли.
Настройка ELK в Localhost
Начнем с пустых контейнеров в Docker Desktop. Репозиторий предоставляет среду с нулевой конфигурацией для тестирования интеграции с помощью команды docker-compose. Запустите приведенные ниже команды в корневом каталоге (src) eShopOnContainers:
$ docker-compose -f docker-compose.elk.yml build
$ docker-compose -f docker-compose.elk.yml up
Обратите внимание, вы можете получить сообщение об ошибке — невозможно подготовить контекст: путь «elk/elasticsearch/» не найден.
Причина в том, лось/эластичный поиск/ доступен в развертывать папка репо, а не в источник. Поэтому для решения этой проблемы — скопируйте папку elk из развертывать к источник папка. А затем снова запустите указанную выше команду. Вы можете увидеть 3 запущенных контейнера —
Я получил проводную ошибку — конечная точка докера для «по умолчанию» не найдена.
Я не был уверен в причине сбоя команды docker-compose с YAML. Однако решение состояло в том, чтобы удалить каталог .docker, расположенный в PATH C:\Users\your-username.docker, а затем перезапустить docker.
Подтвердите, что кибана работает на
Все готово. Давайте развернем наши eShopContainers на Docker Desktop.
docker-compose -f docker-compose.yml -f docker-compose.override.yml build
docker-compose -f docker-compose.yml -f docker-compose.override.yml up
Подтвердите, что приложение webmvc работает в
Настройка индекса Logstash на Kibana
После того, как вы запустили и настроили свое приложение, вам нужно только настроить индекс logstash на kibana. Имя шаблона индекса — eshops-*.
С настроенным шаблоном индекса вы можете войти в раздел обнаружения и начать просмотр того, как инструмент запоминает информацию журнала.
Объяснение
Давайте разберемся, что происходит за кулисами, в частности, как журналы передаются в Elasticsearch и впоследствии отображаются в Kibana.
Все приложения имеют свой Serilog, настроенный для отправки журналов в Logstash через порт 8080.
Далее, если вы посмотрите на конфигурацию logstash — вы заметите, что обработанный лог отправляется в elasticsearch по адресу 9200, что позволяет хранить, искать и анализировать большие объемы данных. Также обратите внимание, что мы отправляем журналы на магазины-* индекс эластичного поиска. Это важно, чтобы кибана могла создавать шаблон индекса.
Kibana — это визуализация данных, дополняющая стек ELK. Этот инструмент используется для визуализации документов Elasticsearch и помогает разработчикам быстро разобраться в них. Он настроен, как показано ниже —
Обратите внимание, что в приведенном примере приложение напрямую вызывает Logstash для записи данных журнала. Этот дизайн не рекомендуется, потому что, если Logstash не работает, журналы могут быть потеряны. Чтобы решить эту проблему, мы можем использовать Filebeat, который устанавливается как дополнительный контейнер. Filebeat отслеживает указанные файлы журнала или местоположения, собирает события журнала и перенаправляет их либо в Elasticsearch, либо в Logstash для индексации.
Настройка ELK на виртуальной машине Azure
Используя предварительно настроенную виртуальную машину, содержащую Logstash, ElasticSearch и Kibana, вы можете установить параметр конфигурации LogstashUrl. Этого можно добиться, войдя в Microsoft Azure для поиска сертифицированной виртуальной машины ELK, ее настройки, а затем просмотра и создания.
Настройка среды битнами
Эта виртуальная машина имеет большое количество конвейеров конфигурации. Единственное, что вам нужно изменить, это конфигурацию logstash внутри машины. Эта конфигурация находится в файле /opt/bitnami/logstash/conf/logstash.conf. Вы должны отредактировать файл и перезаписать его этой конфигурацией:
input {
http {
#default host 0.0.0.0:8080
codec => json
}
}
## Add your filters / logstash plugins configuration here
filter {
split {
field => "events"
target => "e"
remove_field => "events"
}
}
output {
elasticsearch {
hosts => "elasticsearch:9200"
index=>"eshops-%{+xxxx.ww}"
}
}
Для этого вы можете подключиться через ssh к виртуальной машине и отредактировать файл, например, с помощью редактора vi. Когда файл будет отредактирован, проверьте, созданы ли правила для входящих портов для службы Logstash. Вы можете сделать это, перейдя в меню «Сеть» на ресурсе виртуальной машины ELK в Azure.
Последний шаг включает в себя подключение к виртуальной машине через браузер и проверку отображения заставки Bitnami. Чтобы получить к нему доступ, вы можете получить пароль, зайдя на свою виртуальную машину в Azure и проверив диагностику загрузки. Там вы увидите сообщение, содержащее ваш пароль.
Получив имя пользователя и пароль, вы можете получить доступ к инструменту Kibana, создать шаблон индекса eshops-*, подробно описанный в начале этой документации, и приступить к изучению.