Иерархия метрик сервисов
Система Proto Observability Platform организует сущности контроля и метрики по иерархии:
Бизнес-приложения → Сервисы.
У каждого сервиса есть Инстансы (экземпляры) и Эндпоинты (конечные точки).
Диаграмма взаимосвязей
graph TD subgraph " " direction LR BA1(Бизнес-приложение 1) BA2(Бизнес-приложение ...) end subgraph S1 [Сервис 1] D(Инстанс 1.1) E(Инстанс 1.2) G(Эндпоинт 1.1) H(Эндпоинт 1.2) end subgraph S2 [Сервис 2] F(Инстанс 2.1) I(Эндпоинт 2.1) end BA1 --> A(Сервис 1) BA1 --> B(Сервис 2) A --> S1 B --> S2 style A fill:#e1bee7,stroke:#4a148c,stroke-width:2px,color:#000 style B fill:#e1bee7,stroke:#4a148c,stroke-width:2px,color:#000 style BA1 fill:#b3e5fc,stroke:#01579b,stroke-width:2px,color:#000 style BA2 fill:#b3e5fc,stroke:#01579b,stroke-width:2px,color:#000 style D fill:#c8e6c9,stroke:#1b5e20,stroke-width:2px,color:#000 style E fill:#c8e6c9,stroke:#1b5e20,stroke-width:2px,color:#000 style F fill:#c8e6c9,stroke:#1b5e20,stroke-width:2px,color:#000 style G fill:#ffe0b2,stroke:#e65100,stroke-width:2px,color:#000 style H fill:#ffe0b2,stroke:#e65100,stroke-width:2px,color:#000 style I fill:#ffe0b2,stroke:#e65100,stroke-width:2px,color:#000
Диаграмма метрик
graph TD subgraph "Сущности" BA(Бизнес-приложение) S(Сервис) E(Эндпоинт) I(Инстанс) end subgraph "Метрики" subgraph "Общие для всех" CM("Вызовы (шт, rpm)<br/>Ошибки (шт, %)<br/>SLA<br/>Время отклика (P50-P99)") end subgraph "Специфичные" SM_APDEX("APDEX") SM_WC("Wall Clock %") SM_RT("<b>Runtime-метрики</b><br/>(JVM, .NET, Go)") end end BA --> CM S --> CM E --> CM I --> CM S --> SM_APDEX E --> SM_WC I --> SM_RT style BA fill:#b3e5fc,stroke:#01579b,stroke-width:2px,color:#000 style S fill:#e1bee7,stroke:#4a148c,stroke-width:2px,color:#000 style E fill:#ffe0b2,stroke:#e65100,stroke-width:2px,color:#000 style I fill:#c8e6c9,stroke:#1b5e20,stroke-width:2px,color:#000 style CM fill:#b2dfdb,stroke:#004d40,stroke-width:2px,color:#000 style SM_APDEX fill:#ffffff,stroke:#000000,stroke-width:2px,color:#000 style SM_WC fill:#ffffff,stroke:#000000,stroke-width:2px,color:#000 style SM_RT fill:#ffcdd2,stroke:#b71c1c,stroke-width:3px,color:#000
1. Бизнес-приложения
Бизнес-приложение представляет собой логическую группировку связанных сервисов, реализующих определенную бизнес-функциональность. Например, e-commerce portal
, ДБО физлиц
, ДБО юрлиц
и тд.
Основные метрики бизнес-приложений:
Агрегированные показатели:
- Количество сервисов - общее число сервисов в приложении
- Вызовы в минуту (RPM) - суммарное количество запросов по всем сервисам
- Процент ошибок - агрегированный процент ошибок по всем сервисам
- Статус здоровья - общий статус работоспособности приложения, определяется на основе правил, затрагивающих сервисы, входящие в бизнес-приложение
Алерты и мониторинг:
- CRITICAL - кол-во критических алертов за период
- WARNING - кол-во алертов уровня предупреждение за период
- Общее количество ошибок - суммарное количество ошибок за период
- SLA - уровень обслуживания, считается как обратное к рейту ошибок при наличии трафика
Дашборд бизнес-приложения включает:
Основные виджеты:
- Всего транзакций с трендом за период
- Процент ошибок с динамикой изменений
- Время транзакций P75 - время отклика 75-го перцентиля
- Здоровье хостов - статус работоспособности инфраструктуры
Аналитические графики:
- Вызовы - временной график количества запросов с разбивкой на успешные и в минуту
- Ошибки - график ошибок с выделением вызовов с ошибками и процента вызовов с ошибками
- Время исполнения - метрики времени отклика (P50, P75, P90, P95, P99)
Детализация по сервисам:
- Вызовы по сервисам - распределение нагрузки
- Сервисы с наибольшим количеством ошибок - топ проблемных сервисов
2. Сервисы
Сервис представляет отдельный компонент системы, который выполняет определенную функцию. Сервис – это одна кодовая база, например, одно микросервисное приложение, запущенное в десятке подов в Kubernetes или один гигантский PHP-монолит, развернутый на десяти серверах.
Основные метрики сервисов:
Производительность:
- Всего транзакций - общее количество обработанных запросов
- Процент ошибок - доля запросов, завершившихся с ошибкой
- Время транзакций - среднее время обработки запросов
- SLA - уровень доступности сервиса
Статусы и алерты:
- CRITICAL - кол-во критических алертов за период
- WARNING - кол-во алертов уровня предупреждение за период
- Общее количество ошибок
Детализированные графики:
- Вызовы - график количества запросов по времени с разделением на общие вызовы и вызовы в минуту
- Ошибки - временной график с выделением вызовов с ошибками и процента вызовов с ошибками
- Время исполнения - метрики времени отклика по перцентилям (P50, P75, P90, P95, P99)
Топ-аналитика:
- Top-5 времязатратных транзакций
- Top-5 групп ошибок
Специализированные виджеты:
- APDEX - индекс удовлетворенности пользователей
- Вызовы по HTTP кодам - распределение ответов
- Здоровье хостов - состояние инфраструктуры, на которой работает сервис
3. Инстансы
Инстанс представляет отдельный экземпляр выполнения сервиса на конкретном хосте или в контейнере.
Основные метрики инстансов:
Помимо стандартных метрик производительности, для инстансов доступны специфичные Runtime-метрики, такие как состояние JVM, сборка мусора, пулы потоков для Java-сервисов, или аналогичные метрики для Go и .NET.
Детальные метрики инстанса:
Для конкретного инстанса доступны:
Основные показатели:
- Вызовы
- Ошибки
- Время отклика (P75)
Производительность:
- Общие вызовы
- Ошибки
- Время отклика
SLA и доступность:
- SLA инстанса
- Вызовы в минуту
- Количество ошибок
HTTP-статистика:
- Количество вызовов по кодам ответа
4. Эндпоинты
Эндпоинт представляет конкретную точку входа API или функцию сервиса.
Основные метрики эндпоинтов:
Производительность эндпоинта:
- Вызовы
- Ошибки
- Время отклика (P75)
Детальные графики:
- Вызовы
- Ошибки
- Время отклика
SLA и надежность:
- SLA эндпоинта
- Вызовы по HTTP кодам ответа
Группы ошибок эндпоинта:
- Основные категории ошибок
Заключение
Иерархическая структура метрик позволяет:
- На уровне бизнес-приложений - получить общее представление о состоянии всей системы.
- На уровне сервисов - анализировать производительность отдельных компонентов, их эндпоинтов и инстансов.
- На уровне инстансов - выявлять проблемы конкретных экземпляров сервиса.
- На уровне эндпоинтов - детализировать проблемы до конкретных API-вызовов сервиса.
Эта архитектура обеспечивает эффективный мониторинг и быстрое выявление проблем производительности на любом уровне системы.