Підсистема моніторингу подій та сповіщення
🌐 Цей документ доступний українською та англійською мовами. Використовуйте перемикач у правому верхньому куті, щоб змінити версію. |
1. Загальний опис
Підсистема, що забезпечує збирання моніторингових даних додатків та інфраструктури, зберігає інформацію як часовий ряд
(time series)
, надає можливість побудови пошукових запитів і дозволяє створювати інформаційні оповіщення на їх підставі.
2. Функції підсистеми
-
Збирання та збереження моніторингових даних Платформних та реєстрових компонентів.
-
Побудова інформаційних оповіщень на підставі даних моніторингу.
-
Побудова візуальних представлень на підставі даних моніторингу.
-
Надання уніфікованого інтерфейсу для збирання метрик.
3. Технічний дизайн підсистеми
На даній діаграмі зображено компоненти, які входять в Підсистему моніторингу подій та сповіщення та їх взаємодію з іншими підсистемами.
Підсистема моніторингу подій та сповіщення може бути розширена власними отримувачами сповіщень (Alertmanager Recievers) та створені власні інформаційні панелі на додачу до вже встановлених за замовчуванням.
4. Складові підсистеми
Назва компоненти | Namespace | Deployment | Походження | Репозиторій | Призначення |
---|---|---|---|---|---|
Веб-інтерфейс моніторингу Платформи |
|
|
3rd-party |
Візуалізація та надання доступу до даних моніторингу |
|
Розширення для рендерінгу зображень |
|
|
3rd-party |
Розширення для Grafana призначене для генерування PNG зображень при експорті графіків та чартів |
|
Сервіс сповіщень |
|
|
3rd-party |
Система сповіщення адміністраторів при аномаліях або нештатних ситуаціях з компонентами Платформи або реєстрів |
|
Оператор Prometheus |
|
|
3rd-party |
Компонент моніторингу, що забезпечує налаштування, розгортання та обслуговування компонентів Prometheus підсистеми моніторингу Платформи |
|
Оператор підсистеми моніторингу |
|
|
3rd-party |
Забезпечення налаштування, розгортання та обслуговування підсистеми моніторингу Платформи в OpenShift. |
|
Сервіс виконання запитів до Prometheus |
|
|
3rd-party |
Агрегує та дедублікує основні метрики платформи оркестрації контейнерів OpenShift та реєстрові метрики під одним багатокористувацьким інтерфейсом. |
|
Експортери метрик віртуальних машин |
|
|
3rd-party |
Збирання метрик з віртуальних машин Платформи та реєстрів |
|
Сервіс моніторингу |
|
|
3rd-party |
Збирання та зберігання метрик компонентів Платформи та реєстрів. Центральний компонент, на якому базується підсистема моніторингу подій та сповіщення. Prometheus - це time-series база даних та механізм створення правил для метрик. Він також відправляє сповіщення до Alertmanager для обробки. |
|
Служба моніторингу k8s обʼєктів |
|
|
3rd-party |
Збирає метрики, що стосуються стану ресурсів та об’єктів kubernetes API-сервера в Платформі оркестрації контейнерів |
|
Служба моніторингу openshift обʼєктів |
|
|
3rd-party |
Збирає метрики, що стосуються стану ресурсів та об’єктів OpenShift API-сервера в Платформі оркестрації контейнерів |
|
Компонент інтеграції метрик з механізмами масштабування кластера OKD |
|
|
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, тощо).