Підсистема моніторингу подій та сповіщення

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

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

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

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

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

  • Побудова інформаційних оповіщень на підставі даних моніторингу.

  • Побудова візуальних представлень на підставі даних моніторингу.

  • Надання уніфікованого інтерфейсу для збирання метрик.

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

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

monitoring subsystem.drawio

Підсистема моніторингу подій та сповіщення може бути розширена власними отримувачами сповіщень (Alertmanager Recievers) та створені власні інформаційні панелі на додачу до вже встановлених за замовчуванням.

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

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

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

grafana-monitoring

grafana

3rd-party

github:/epam/edp-ddm-monitoring

Візуалізація та надання доступу до даних моніторингу

Розширення для рендерінгу зображень

grafana-monitoring

grafana-image-renderer

3rd-party

Розширення для Grafana призначене для генерування PNG зображень при експорті графіків та чартів

Сервіс сповіщень

openshift-monitoring

alertmanager-main

3rd-party

Система сповіщення адміністраторів при аномаліях або нештатних ситуаціях з компонентами Платформи або реєстрів

Оператор Prometheus

openshift-monitoring

prometheus-operator

3rd-party

Компонент моніторингу, що забезпечує налаштування, розгортання та обслуговування компонентів Prometheus підсистеми моніторингу Платформи

Оператор підсистеми моніторингу

openshift-monitoring

cluster-monitoring-operator

3rd-party

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

Сервіс виконання запитів до Prometheus

openshift-monitoring

thanos-querier

3rd-party

Агрегує та дедублікує основні метрики платформи оркестрації контейнерів OpenShift та реєстрові метрики під одним багатокористувацьким інтерфейсом.

Експортери метрик віртуальних машин

openshift-monitoring

node-exporter

3rd-party

Збирання метрик з віртуальних машин Платформи та реєстрів

Сервіс моніторингу

openshift-monitoring

prometheus-k8s

3rd-party

Збирання та зберігання метрик компонентів Платформи та реєстрів. Центральний компонент, на якому базується підсистема моніторингу подій та сповіщення. Prometheus - це time-series база даних та механізм створення правил для метрик. Він також відправляє сповіщення до Alertmanager для обробки.

Служба моніторингу k8s обʼєктів

openshift-monitoring

kube-state-metrics

3rd-party

Збирає метрики, що стосуються стану ресурсів та об’єктів kubernetes API-сервера в Платформі оркестрації контейнерів

Служба моніторингу openshift обʼєктів

openshift-monitoring

openshift-state-metrics

3rd-party

Збирає метрики, що стосуються стану ресурсів та об’єктів OpenShift API-сервера в Платформі оркестрації контейнерів

Компонент інтеграції метрик з механізмами масштабування кластера OKD

openshift-monitoring

prometheus-adapter

3rd-party

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

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

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

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

Інформаційна панель

Технічна назва

Підсистема власник

Призначення

Інформаційна панель Camunda

camunda-metrics

Підсистема виконання бізнес-процесів

Дозволяє бачити загальні метрики виконання бізнес-процесів та задач користувачів (обмін повідомленнями, видалення історичних даних)

Інформаційна панель Ceph

ceph

Підсистема розподіленого зберігання даних

Дозволяє аналізувати загальні метрики стану Ceph та його компонентів (поточний стан, обʼєми вільного та зайнятого сховища та метрики швидкодії).

Інформаційна панель etcd

etcd

Платформа оркестрації контейнерів

Дозволяє переглядати загальні метрики сховища etcd платформи оркестрації контейнерів OKD (статистику по вибору лідера алгоритмом RAFT, поточний статус та розмір сховища)

Інформаційна панель метрик кластера OpenShift

cluster-total

Загальні метрики використання ресурсів платформи оркестрації контейнерів OKD. Надає детальні метрики про завантаженість CPU, RAM, мережу та диски кластера OpenShift.

Інформаційна панель Java Management Extensions

jmx

Відображає метрики, що пов’язані з Java-застосунками, які запущені у платформи оркестрації контейнерів.

Інформаційна панель Spring Boot

springboot

Додатково до JMX панелі, показує метрики spring boot, а саме кількість, час відгуку та помилки HTTP запитів, використання кешу та інші корисні метрики для аналізу роботи Spring Boot застосунків.

Загальна інформаційна панель Kubernetes

k8s-resources-cluster

Дозволяє аналізувати загальні метрики стану OpenShift кластеру, використання ресурсів на кластерному рівні.

Інформаційна панель Kubernetes рівня namespaces

k8s-resources-namespace

Дозволяє аналізувати загальні метрики використання ресурсів на рівні namespaces

Інформаційна панель Kubernetes рівня віртуальних машин

k8s-resources-node

Дозволяє аналізувати загальні метрики використання ресурсів на рівні окремої віртуальної машини.

Інформаційна панель Kubernetes рівня pods

k8s-resources-pod

Дозволяє аналізувати загальні метрики використання ресурсів на рівні окремих под.

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

k8s-resources-workload

Дозволяє аналізувати загальні метрики використання ресурсів з можливістю фільтрування по окремим типам розгортань в Kubernetes (deployments, jobs, daemonsets, statefulsets).

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

k8s-resources-workload-namespace

Дозволяє аналізувати загальні метрики використання ресурсів на рівні окремих типів розгортань в Kubernetes в загальному вигляді на рівні namespace.

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

namespace-by-pod

Дозволяє аналізувати загальні метрики використання ресурсів подамі в узагальненому вигляді на рівні namespace.

Інформаційна панель Kubernetes рівня дисків

volume-load

Дозволяє аналізувати загальні метрики використання дисків сховища на рівні кластера та віртуальних машин.

Інформаційна панель Kubernetes рівня кластеру

node-cluster-rsrc-use

Відображає загальні метрики всього кластеру

Інформаційна панель Kubernetes рівня кластеру

node-rsrc-use

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

Мережева інформаційна панель

pod-total

Відображає метрики поточного трафіку між подами в окремих неймспейсах.

Інформаційна панель підсистеми асинхронного обміну повідомленнями

kafka-data

Підсистема асинхронного обміну повідомленнями

Інформаційна панель для даних Kafka призначена для відображення метрик, пов’язаних з роботою Kafka брокерів та споживачів у кластері.

Інформаційна панель підсистеми асинхронного обміну повідомленнями від Strimzi

strimzi-kafka

Призначена для відображення метрик, пов’язаних з роботою Kafka брокерів та споживачів у кластері.

Інформаційна панель підсистеми управління користувачами та ролями

keycloak-metrics

Підсистема управління користувачами та ролями

Відображає метрики Keycloak у розрізі Realms з можливістю фільтрувати за екземплярами Keycloak.

Інформаційна панель підсистеми управління користувачами та ролями

keycloak-x-microprofile-metrics

Призначена для відображення метрик, пов’язаних з роботою Java метрик компонента Keycloak

Інформаційна панель бази даних PostgreSQL

postgresql-db

Надає детальну інформацію про екземпляр бази даних PostgreSQL.

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

postgresql-queries

Надає додаткову інформацію про запити.

Інформаційна панель публічного API підсистеми управління зовнішнім трафіком операційної зони реєстру

kong-public-api

Підсистема управління зовнішнім трафіком операційної зони реєстру

Дозволяє переглядати запити по кожному публічному search condition та їх кількість, тренд виконання запитів та статистку по швидкодії.

Інформаційна панель підсистеми моніторингу та подій та сповіщення

prometheus

Підсистема моніторингу та подій та сповіщення

Дозволяє моніторити стан та продуктивність компонентів підсистеми моніторингу.

Інформаційна панель підсистеми аналітичної звітності реєстру

redash

Підсистема аналітичної звітності реєстру

Надає статистику по запитам в компоненті Redash.

Інформаційна панель підсистеми управління нереляційними базами даних

redis

Підсистема управління нереляційними базами даних

Надає інформацію про конкретний кластер Redis.

Інформаційна панель резервного копіювання PostgreSQL

crunchy-pgbackrest

Підсистема управління реляційними базами даних

Надає інформацію про загальний стан резервних копій pgBackRest.

Детальна інформаційна панель PostgreSQL под

crunchy-pod-details

Надає інформацію про використання ресурсів конкретними подами, які використовуються кластером PostgreSQL.

Детальна інформаційна панель PostgreSQL

crunchy-postgresql-details

Надає більше інформації про конкретний кластер PostgreSQL. Включає багато ключових, специфічних для PostgreSQL, метрик.

Оглядова інформаційна панель PostgreSQL

crunchy-postgresql-overview

Надає огляд усіх кластерів PostgreSQL розгорнутих на Платформі.

Сервісна інформаційна панель PostgreSQL

crunchy-postgresql-service-health

Містить інформацію про служби Kubernetes, які розташовані перед PostgreSQL Pods. Це надає інформацію про стан мережі.

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

crunchy-query-statistics

Надає інформацію про загальну продуктивність запитів.

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

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

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

7.1. Scalability

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

7.2. Reliability

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

7.3. Extensibility

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