Підсистема журналювання подій

🌐 Цей документ доступний українською та англійською мовами. Використовуйте перемикач у правому верхньому куті, щоб змінити версію.

1. Загальний опис

Підсистема, що забезпечує централізоване зберігання технічних журналів логування як компонентів платформи, так і реєстру в уніфікованому вигляді, повнотекстовий пошук по ним та побудову інформаційно-аналітичних представлень через спеціалізовані веб-інтерфейси.

2. Функції підсистеми

  • Збереження журналів подій застосунків Платформи.

  • Збереження журналів подій платформи оркестрації контейнерів OpenShift.

  • Обробка журналів подій та збереження їх до пошукового сервера.

  • Візуалізація даних журналів подій через вебінтерфейси.

3. Технічний дизайн підсистеми

Підсистема журналювання збирає інформацію про події з усього кластера, як платформні, так і реєстрові, та зберігає їх у спеціальному сховищі Elasticsearch. Для візуалізації даних використовується веб-інтерфейс Kibana.

Підсистема журналювання подій агрегує такі типи журналів:

  • Реєстрові компоненти: журнали контейнерів, що складають собою реєстр.

  • Інфраструктура: журнали, створені контейнерами інфраструктури, які працюють на платформі оркестрації контейнерів OpenShift.

    Інфраструктурні компоненти — це контейнери, які працюють у проєктах openshift*, kube* або default.
  • Аудит віртуальних машин: журнали, створені auditd, системою аудиту віртуальних машин OpenShift, які зберігаються у файлі /var/log/audit/audit.log, та аудиторські журнали Kubernetes APIServer та OpenShift APIServer.

    За замовчуванням, підсистема журналювання не зберігає журнали аудиту в сховищі Elasticsearch. За потребою можливо налаштувати це, щоб, наприклад, переглядати їх у Kibana.

Компоненти підсистеми журналювання подій містить наступні основні компоненти:

  • Експортери — збирають, агрегують журнали з компонентів Платформи та реєстрів, форматують їх та пересилають до сховища журналів. Поточна реалізація — Fluentd.

  • Сховище журналів — зберігає журнали компонентів. Поточна реалізація — Elasticsearch, що оптимізований для короткотривалого зберігання.

  • Візуалізація — це інтерфейс користувача, що використовується для перегляду журналів та інформаційних панелей. Поточна реалізація - Kibana.

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

logging subsystem.drawio
Зображення 1. Компонентна діаграма Підсистеми журналювання подій

4. Складові підсистеми

Назва компоненти Namespace Deployment Походження Репозиторій Призначення

Веб-інтерфейс перегляду журналу подій Платформи

openshift-logging

kibana

3rd-party

github:/epam/edp-ddm-logging

Веб-інтерфейс для доступу, пошуку та відображення технічних журналів подій в Платформі.

Сховище журналів Платформи

openshift-logging

elasticsearch-cdm

3rd-party

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

Оператор підсистеми журналювання подій

openshift-logging

cluster-logging-operator

3rd-party

Забезпечення налаштування, розгортання та обслуговування підсистеми журналювання подій в OpenShift.

Оператор сховища журналів

openshift-operators-redhat

elasticsearch-operator

3rd-party

Забезпечення налаштування, розгортання та обслуговування сховища журналів подій Elasticsearch в OpenShift.

5. Інформаційні панелі Kibana

Наведені нижче інформаційні панелі встановлюються вручну за відповідними інструкціями для адміністраторів.

Інформаційна панель Технічна назва Призначення Посилання

Інформаційна панель запитів

request-dashboard

Надає оглядову інформацію про роботу реєстру, зокрема статуси виконання зовнішніх запитів.

Інформаційна панель: github:/epam/edp-ddm-logging/main/dashboards/kibana/request-dashboard.json

Інструкція по налаштуванню: Візуалізація стану запитів у Kibana при роботі реєстру

Інформаційна панель журналів подій

kibana-logs-dashboard

Надає консолідовану інформацію з усіх зібраних журналів подій.

github:/epam/edp-ddm-logging/main/dashboards/kibana/request-dashboard.json

Інструкція по налаштуванню: Робота із журналами подій в інтерфейсі застосунку Kibana

6. Технологічний стек

При проєктуванні та розробці підсистеми, були використані наступні технології:

7. Атрибути якості підсистеми

7.1. Scalability

Підсистема журналювання подій розгортнута в High Availability режимі з декількома екземплярами ключових компонентів, що дозволяє ефективно опрацьовувати журнали подій навіть при наявності великої кількості розгорнутих реєстрів на Платформі.

7.2. Performance

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

7.3. Reliability

Підсистема журналювання подій може працювати надійно та продовжувати реєструвати події навіть при відмові в роботі окремих компонентів чи віртуальних машин.

7.4. Observability

Підсистема журналювання подій фіксує та надає детальну інформацію про події в Платформі з метою спрощення ідентифікації та розв’язання можливих збоїв та проблем адміністраторами Платформи при промисловій експлуатації Платформи.