- Описать docker-контейнеры для flask-приложения, развернутого с помощью gunicorn, fluentd, elasticsearch и kibana.
- Во flask-приложении опишите 6 роутов (/one, /two, .., /five, /error , где роуты возвращают HTTP-коды состояния 201, 202,..., 205, 500 соответственно)
- Опишите конфиг логов для gunicorn.access, чтобы они писали в stdout приложения
- Опишите конфиг для fluentd, чтобы он забирал логи из stdout контейнеров и передавал в elasticsearch. Также необходимо описать шаблон для обработки gunicorn.access логов, используя fluentd grok plugin.
- Топ-5 самых посещаемых эндпоинтов в kibana dashboard
- Счетчик посещений сайта в kibana dashboard
- Топ-5 кодов состояния HTTP в kibana dashboard
Использован docker compose, содержащий основные контейнеры для поднятия сервера gunicorn и flask, а также контейнеры EFK стека, настроена их коммуникация. Dashboards настроены локально - скриншот:
Запуск:
docker compose up
Запросы на flask c помощью клиента
python app/client.py
Kibana: kibana-local