Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Налаштування Файлу Docker Compose | Моніторинг і Логування в DevOps
Вступ до DevOps

bookНалаштування Файлу Docker Compose

Тепер, коли всі необхідні конфігурації — для Filebeat, Logstash та Flask-додатку — налаштовані, настав час об'єднати їх і запустити як єдину систему. Для цього ми використаємо Docker Compose.

Note
Визначення

Docker Compose — це інструмент, який дозволяє визначити всі необхідні контейнери в одному YAML-файлі та запускати їх однією командою.

Замість того, щоб писати окрему команду docker run для кожного сервісу, ви просто описуєте їх конфігурації у файлі docker-compose.yml і запускаєте все разом.

Простий файл docker-compose.yml виглядає так:

docker-compose.yml

docker-compose.yml

copy

Тепер створимо повний файл крок за кроком, пояснюючи кожен контейнер на цьому шляху.

Flask-додаток

Це ваш основний застосунок, який генерує логи.

docker-compose.yml

docker-compose.yml

copy

Цей блок вказує Docker створити контейнер з поточної папки (де знаходиться ваш Dockerfile).

Контейнер буде називатися flask-app. Рядок volumes підключає локальну папку ./logs до /logs всередині контейнера. Таким чином, усі журнали, створені додатком, зберігаються як у контейнері, так і на вашому комп'ютері.

Додаток працює всередині контейнера на порту 5000, але ми відображаємо його на порт 5050 на вашому комп'ютері, щоб ви могли отримати до нього доступ у браузері за адресою http://localhost:5050.

Filebeat

Filebeat виконує роль агента, який відстежує файли журналів і надсилає нові записи до Logstash.

docker-compose.yml

docker-compose.yml

copy

Filebeat запускається з офіційного образу 8.15.0. Він працює від імені користувача root, щоб мати дозвіл на читання файлів журналів.

Ми підключаємо папку ./logs у режимі лише для читання та файл конфігурації filebeat.yml. Це вказує Filebeat, які журнали відстежувати та куди їх надсилати. depends_on гарантує, що Filebeat запускається лише після запуску застосунку та Logstash.

Logstash

Logstash отримує журнали від Filebeat, обробляє їх (наприклад, розбирає JSON) і пересилає до Elasticsearch.

docker-compose.yml

docker-compose.yml

copy

Цей контейнер використовує офіційний образ Logstash.

Ми монтуємо конфігураційний файл logstash.conf, який визначає, як Logstash обробляє вхідні журнали. Контейнер запускається лише після запуску Elasticsearch, оскільки йому потрібне місце призначення для оброблених журналів.

Порт 5044 відкритий, щоб Filebeat міг надсилати дані до Logstash.

Elasticsearch

Elasticsearch зберігає журнали у вигляді документів і дозволяє швидко здійснювати пошук по них.

docker-compose.yml

docker-compose.yml

copy

Ми використовуємо офіційний образ 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

docker-compose.yml

copy

Ми використовуємо офіційний образ Kibana.

Порт 5601 відкрито, щоб ви могли отримати доступ до Kibana у вашому браузері за адресою http://localhost:5601.

ELASTICSEARCH_HOSTS вказує Kibana на наш контейнер Elasticsearch, щоб вона могла отримувати та відображати дані.

Фінальний docker-compose.yml

Ось повний файл Docker Compose з усіма сервісами, підключеними у правильному порядку:

docker-compose.yml

docker-compose.yml

copy

Цей файл docker-compose.yml запускає всі сервіси у правильному порядку. Flask-додаток генерує журнали, Filebeat збирає їх і надсилає до Logstash, Logstash обробляє журнали та пересилає їх до Elasticsearch, а Kibana надає веб-інтерфейс для перегляду та аналізу даних.

Залишилося лише запустити систему та перевірити її, що буде розглянуто у наступному розділі.

1. Яке основне призначення Docker Compose у цій конфігурації?

2. Який сервіс відповідає за збір журнальних файлів із Flask-додатку та їх надсилання до Logstash?

question mark

Яке основне призначення Docker Compose у цій конфігурації?

Select the correct answer

question mark

Який сервіс відповідає за збір журнальних файлів із Flask-додатку та їх надсилання до Logstash?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 4. Розділ 5

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Awesome!

Completion rate improved to 3.7

bookНалаштування Файлу Docker Compose

Свайпніть щоб показати меню

Тепер, коли всі необхідні конфігурації — для Filebeat, Logstash та Flask-додатку — налаштовані, настав час об'єднати їх і запустити як єдину систему. Для цього ми використаємо Docker Compose.

Note
Визначення

Docker Compose — це інструмент, який дозволяє визначити всі необхідні контейнери в одному YAML-файлі та запускати їх однією командою.

Замість того, щоб писати окрему команду docker run для кожного сервісу, ви просто описуєте їх конфігурації у файлі docker-compose.yml і запускаєте все разом.

Простий файл docker-compose.yml виглядає так:

docker-compose.yml

docker-compose.yml

copy

Тепер створимо повний файл крок за кроком, пояснюючи кожен контейнер на цьому шляху.

Flask-додаток

Це ваш основний застосунок, який генерує логи.

docker-compose.yml

docker-compose.yml

copy

Цей блок вказує Docker створити контейнер з поточної папки (де знаходиться ваш Dockerfile).

Контейнер буде називатися flask-app. Рядок volumes підключає локальну папку ./logs до /logs всередині контейнера. Таким чином, усі журнали, створені додатком, зберігаються як у контейнері, так і на вашому комп'ютері.

Додаток працює всередині контейнера на порту 5000, але ми відображаємо його на порт 5050 на вашому комп'ютері, щоб ви могли отримати до нього доступ у браузері за адресою http://localhost:5050.

Filebeat

Filebeat виконує роль агента, який відстежує файли журналів і надсилає нові записи до Logstash.

docker-compose.yml

docker-compose.yml

copy

Filebeat запускається з офіційного образу 8.15.0. Він працює від імені користувача root, щоб мати дозвіл на читання файлів журналів.

Ми підключаємо папку ./logs у режимі лише для читання та файл конфігурації filebeat.yml. Це вказує Filebeat, які журнали відстежувати та куди їх надсилати. depends_on гарантує, що Filebeat запускається лише після запуску застосунку та Logstash.

Logstash

Logstash отримує журнали від Filebeat, обробляє їх (наприклад, розбирає JSON) і пересилає до Elasticsearch.

docker-compose.yml

docker-compose.yml

copy

Цей контейнер використовує офіційний образ Logstash.

Ми монтуємо конфігураційний файл logstash.conf, який визначає, як Logstash обробляє вхідні журнали. Контейнер запускається лише після запуску Elasticsearch, оскільки йому потрібне місце призначення для оброблених журналів.

Порт 5044 відкритий, щоб Filebeat міг надсилати дані до Logstash.

Elasticsearch

Elasticsearch зберігає журнали у вигляді документів і дозволяє швидко здійснювати пошук по них.

docker-compose.yml

docker-compose.yml

copy

Ми використовуємо офіційний образ 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

docker-compose.yml

copy

Ми використовуємо офіційний образ Kibana.

Порт 5601 відкрито, щоб ви могли отримати доступ до Kibana у вашому браузері за адресою http://localhost:5601.

ELASTICSEARCH_HOSTS вказує Kibana на наш контейнер Elasticsearch, щоб вона могла отримувати та відображати дані.

Фінальний docker-compose.yml

Ось повний файл Docker Compose з усіма сервісами, підключеними у правильному порядку:

docker-compose.yml

docker-compose.yml

copy

Цей файл docker-compose.yml запускає всі сервіси у правильному порядку. Flask-додаток генерує журнали, Filebeat збирає їх і надсилає до Logstash, Logstash обробляє журнали та пересилає їх до Elasticsearch, а Kibana надає веб-інтерфейс для перегляду та аналізу даних.

Залишилося лише запустити систему та перевірити її, що буде розглянуто у наступному розділі.

1. Яке основне призначення Docker Compose у цій конфігурації?

2. Який сервіс відповідає за збір журнальних файлів із Flask-додатку та їх надсилання до Logstash?

question mark

Яке основне призначення Docker Compose у цій конфігурації?

Select the correct answer

question mark

Який сервіс відповідає за збір журнальних файлів із Flask-додатку та їх надсилання до Logstash?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 4. Розділ 5
some-alt