Налаштування Файлу Docker Compose
Тепер, коли всі необхідні конфігурації — для Filebeat, Logstash та Flask-додатку — налаштовані, настав час об'єднати їх і запустити як єдину систему. Для цього ми використаємо Docker Compose.
Docker Compose — це інструмент, який дозволяє визначити всі необхідні контейнери в одному YAML-файлі та запускати їх однією командою.
Замість того, щоб писати окрему команду docker run
для кожного сервісу, ви просто описуєте їх конфігурації у файлі docker-compose.yml
і запускаєте все разом.
Простий файл docker-compose.yml
виглядає так:
docker-compose.yml
Тепер створимо повний файл крок за кроком, пояснюючи кожен контейнер на цьому шляху.
Flask-додаток
Це ваш основний застосунок, який генерує логи.
docker-compose.yml
Цей блок вказує Docker створити контейнер з поточної папки (де знаходиться ваш Dockerfile).
Контейнер буде називатися flask-app
.
Рядок volumes
підключає локальну папку ./logs
до /logs
всередині контейнера. Таким чином, усі журнали, створені додатком, зберігаються як у контейнері, так і на вашому комп'ютері.
Додаток працює всередині контейнера на порту 5000, але ми відображаємо його на порт 5050 на вашому комп'ютері, щоб ви могли отримати до нього доступ у браузері за адресою http://localhost:5050
.
Filebeat
Filebeat виконує роль агента, який відстежує файли журналів і надсилає нові записи до Logstash.
docker-compose.yml
Filebeat запускається з офіційного образу 8.15.0
.
Він працює від імені користувача root
, щоб мати дозвіл на читання файлів журналів.
Ми підключаємо папку ./logs
у режимі лише для читання та файл конфігурації filebeat.yml
. Це вказує Filebeat, які журнали відстежувати та куди їх надсилати.
depends_on
гарантує, що Filebeat запускається лише після запуску застосунку та Logstash.
Logstash
Logstash отримує журнали від Filebeat, обробляє їх (наприклад, розбирає JSON) і пересилає до Elasticsearch.
docker-compose.yml
Цей контейнер використовує офіційний образ Logstash.
Ми монтуємо конфігураційний файл logstash.conf
, який визначає, як Logstash обробляє вхідні журнали.
Контейнер запускається лише після запуску Elasticsearch, оскільки йому потрібне місце призначення для оброблених журналів.
Порт 5044 відкритий, щоб Filebeat міг надсилати дані до Logstash.
Elasticsearch
Elasticsearch зберігає журнали у вигляді документів і дозволяє швидко здійснювати пошук по них.
docker-compose.yml
Ми використовуємо офіційний образ Elasticsearch версії 8.15.0
.
discovery.type=single-node
вказує, що запускається кластер з одним вузлом (достатньо для локального тестування);xpack.security.enabled=false
вимикає безпеку, щоб не потрібно було працювати з іменами користувачів і паролями;ES_JAVA_OPTS
обмежує використання пам'яті процесом Java.
Сервіс доступний на порту 9200 за адресою http://localhost:9200
.
Kibana
Kibana — це веб-інтерфейс для Elasticsearch. Дозволяє візуалізувати логи та створювати дашборди.
docker-compose.yml
Ми використовуємо офіційний образ Kibana.
Порт 5601 відкрито, щоб ви могли отримати доступ до Kibana у вашому браузері за адресою http://localhost:5601
.
ELASTICSEARCH_HOSTS
вказує Kibana на наш контейнер Elasticsearch, щоб вона могла отримувати та відображати дані.
Фінальний docker-compose.yml
Ось повний файл Docker Compose з усіма сервісами, підключеними у правильному порядку:
docker-compose.yml
Цей файл docker-compose.yml
запускає всі сервіси у правильному порядку. Flask-додаток генерує журнали, Filebeat збирає їх і надсилає до Logstash, Logstash обробляє журнали та пересилає їх до Elasticsearch, а Kibana надає веб-інтерфейс для перегляду та аналізу даних.
Залишилося лише запустити систему та перевірити її, що буде розглянуто у наступному розділі.
1. Яке основне призначення Docker Compose у цій конфігурації?
2. Який сервіс відповідає за збір журнальних файлів із Flask-додатку та їх надсилання до Logstash?
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 3.7
Налаштування Файлу Docker Compose
Свайпніть щоб показати меню
Тепер, коли всі необхідні конфігурації — для Filebeat, Logstash та Flask-додатку — налаштовані, настав час об'єднати їх і запустити як єдину систему. Для цього ми використаємо Docker Compose.
Docker Compose — це інструмент, який дозволяє визначити всі необхідні контейнери в одному YAML-файлі та запускати їх однією командою.
Замість того, щоб писати окрему команду docker run
для кожного сервісу, ви просто описуєте їх конфігурації у файлі docker-compose.yml
і запускаєте все разом.
Простий файл docker-compose.yml
виглядає так:
docker-compose.yml
Тепер створимо повний файл крок за кроком, пояснюючи кожен контейнер на цьому шляху.
Flask-додаток
Це ваш основний застосунок, який генерує логи.
docker-compose.yml
Цей блок вказує Docker створити контейнер з поточної папки (де знаходиться ваш Dockerfile).
Контейнер буде називатися flask-app
.
Рядок volumes
підключає локальну папку ./logs
до /logs
всередині контейнера. Таким чином, усі журнали, створені додатком, зберігаються як у контейнері, так і на вашому комп'ютері.
Додаток працює всередині контейнера на порту 5000, але ми відображаємо його на порт 5050 на вашому комп'ютері, щоб ви могли отримати до нього доступ у браузері за адресою http://localhost:5050
.
Filebeat
Filebeat виконує роль агента, який відстежує файли журналів і надсилає нові записи до Logstash.
docker-compose.yml
Filebeat запускається з офіційного образу 8.15.0
.
Він працює від імені користувача root
, щоб мати дозвіл на читання файлів журналів.
Ми підключаємо папку ./logs
у режимі лише для читання та файл конфігурації filebeat.yml
. Це вказує Filebeat, які журнали відстежувати та куди їх надсилати.
depends_on
гарантує, що Filebeat запускається лише після запуску застосунку та Logstash.
Logstash
Logstash отримує журнали від Filebeat, обробляє їх (наприклад, розбирає JSON) і пересилає до Elasticsearch.
docker-compose.yml
Цей контейнер використовує офіційний образ Logstash.
Ми монтуємо конфігураційний файл logstash.conf
, який визначає, як Logstash обробляє вхідні журнали.
Контейнер запускається лише після запуску Elasticsearch, оскільки йому потрібне місце призначення для оброблених журналів.
Порт 5044 відкритий, щоб Filebeat міг надсилати дані до Logstash.
Elasticsearch
Elasticsearch зберігає журнали у вигляді документів і дозволяє швидко здійснювати пошук по них.
docker-compose.yml
Ми використовуємо офіційний образ Elasticsearch версії 8.15.0
.
discovery.type=single-node
вказує, що запускається кластер з одним вузлом (достатньо для локального тестування);xpack.security.enabled=false
вимикає безпеку, щоб не потрібно було працювати з іменами користувачів і паролями;ES_JAVA_OPTS
обмежує використання пам'яті процесом Java.
Сервіс доступний на порту 9200 за адресою http://localhost:9200
.
Kibana
Kibana — це веб-інтерфейс для Elasticsearch. Дозволяє візуалізувати логи та створювати дашборди.
docker-compose.yml
Ми використовуємо офіційний образ Kibana.
Порт 5601 відкрито, щоб ви могли отримати доступ до Kibana у вашому браузері за адресою http://localhost:5601
.
ELASTICSEARCH_HOSTS
вказує Kibana на наш контейнер Elasticsearch, щоб вона могла отримувати та відображати дані.
Фінальний docker-compose.yml
Ось повний файл Docker Compose з усіма сервісами, підключеними у правильному порядку:
docker-compose.yml
Цей файл docker-compose.yml
запускає всі сервіси у правильному порядку. Flask-додаток генерує журнали, Filebeat збирає їх і надсилає до Logstash, Logstash обробляє журнали та пересилає їх до Elasticsearch, а Kibana надає веб-інтерфейс для перегляду та аналізу даних.
Залишилося лише запустити систему та перевірити її, що буде розглянуто у наступному розділі.
1. Яке основне призначення Docker Compose у цій конфігурації?
2. Який сервіс відповідає за збір журнальних файлів із Flask-додатку та їх надсилання до Logstash?
Дякуємо за ваш відгук!