Мониторинг
GraDeLy реализует метрики, которые отражают общие показатели работы сервиса и отдельных модулей GraDeLy в контексте определенного источника. Для передачи метрик конечной системе используется Kafka: метрики публикуются в специальном топике, либо их публикует компонент Объединенный мониторинг Unimon (MONA) продукта Platform V Monitor (OPM) (далее по тексту – MONA).
Все метрики всегда формируются в разрезе источника данных и, в зависимости от метрики, добавляются дополнительные разрезы:
- source — источник (мнемоника источника, эквивалентна наименованию);
- channel — модуль GraDeLy, соответствующий потоку данных;
- type — тип данных (класс Java);
- ErrorClass — класс по классификатору ошибок.
Настройка
Для интеграции с MONA заполните в конфигурационном файле prometheus.yaml параметры:
global.scrape_interval— частота забора метрик (в секундах) по умолчанию;scrape_configs.metrics_path— HTTP путь до эндпоинта. Всегда равен/actuator/prometheus;scrape_configs.scrape_interval— частота забора метрик (в секундах);scrape_configs.static_configs.targets— массив, содержащий IP адреса и порты модулей GraDeLy, отправляющих метрики.
Метрики
Прикладные метрики
В таблице перечислены прикладные метрики приложения:
| Название | Описание | Размерность | Основные атрибуты |
|---|---|---|---|
ru.gradely.metric:type=HCWorkerStatus | Текущий статус воркера | строка | Метки метрики: - app = "id модуля"; - gdl_version = "версия GraDeLy"; - unimonId = "идентификатор Unimon"; - rn = "имя ресурса Unimon". |
grdl_module.replicationSlotLag | gauge - Задержка слота репликации — показывает отставание между мастер-БД и репликой. Обновляется каждые 2 с. | байт | Метки метрики: - app = "id модуля"; - gdl_version = "версия GraDeLy"; - unimonId = "идентификатор Unimon"; - rn = "имя ресурса Unimon". |
grdl_module.offsetLag | gauge - Задержка консьюмер-группы (Kafka) в количестве сообщений — разница между числом поступивших и обработанных сообщений в топике репликации. Обновляется каждые 2 с. | шт | Метки метрики: - app = "id модуля"; - gdl_version = "версия GraDeLy"; - unimonId = "идентификатор Unimon"; - rn = "имя ресурса Unimon". |
grdl_module.ops | gauge - Количество обработанных сообщений в секунду (не транзакций). Аналог TPS, рассчитанный по размеру ChangeVector. | шт | Метки метрики: - app = "id модуля"; - gdl_version = "версия GraDeLy"; - unimonId = "идентификатор Unimon"; - rn = "имя ресурса Unimon". |
grdl_module.replicationMessageLatency | gauge - Задержка (latency) — время передачи сообщения от main-воркера к standby-воркеру. Измеряется для каждого потока репликации. | мс | Метки метрики: - app = "id модуля"; - gdl_version = "версия GraDeLy"; - unimonId = "идентификатор Unimon"; - rn = "имя ресурса Unimon". |
grdl_module.tps | gauge - Количество транзакций в секунду | шт | Метки метрики: - app = "id модуля"; - gdl_version = "версия GraDeLy"; - unimonId = "идентификатор Unimon"; - rn = "имя ресурса Unimon". |
grdl_module.captureCacheSize | gauge - Текущий размер внутренней очереди/кеша при чтении из источника | шт | Метки метрики: - app = "id модуля"; - gdl_version = "версия GraDeLy"; - unimonId = "идентификатор Unimon"; - rn = "имя ресурса Unimon". |
grdl_module.applyCacheSize | gauge - Текущий размер очереди/кеша на стороне приемника | шт | Метки метрики: - app = "id модуля"; - gdl_version = "версия GraDeLy"; - unimonId = "идентификатор Unimon"; - rn = "имя ресурса Unimon". |
grdl_module.kafkaConsumerQueueSize | gauge - Текущий размер очереди/буфера при чтении из Kafka | шт | Метки метрики: - app = "id модуля"; - gdl_version = "версия GraDeLy"; - unimonId = "идентификатор Unimon"; - rn = "имя ресурса Unimon". |
grdl_console_worker.count | gauge - Количество доступных (READY) воркеров, видимых в консоли | шт | Метки метрики: - app = "id модуля"; - gdl_version = "версия GraDeLy"; - unimonId = "идентификатор Unimon"; - rn = "имя ресурса Unimon". |
grdl_console_active_worker.count | gauge - Количество доступных воркеров со статусом Active | шт | Метки метрики: - app = "id модуля"; - gdl_version = "версия GraDeLy"; - unimonId = "идентификатор Unimon"; - rn = "имя ресурса Unimon". |
grdl_console_detached_worker.count | gauge - Количество доступных воркеров со статусом Detached | шт | Метки метрики: - app = "id модуля"; - gdl_version = "версия GraDeLy"; - unimonId = "идентификатор Unimon"; - rn = "имя ресурса Unimon". |
grdl_console_error.count | gauge - Счетчик ошибок консоли связанных с воркерами событий типа ERROR | шт | Метки метрики: - app = "id модуля"; - gdl_version = "версия GraDeLy"; - unimonId = "идентификатор Unimon"; - rn = "имя ресурса Unimon". |
grdl_module.select_duration_ms | gauge - Длительность выполнения select-запроса | мс | Метки метрики: - version = "версия метрики"; - mon_system_ci = "КЭ ИТ-услуги системы мониторинга"; - it_service_ci = "КЭ ИТ-услуги системы источника"; - object_ci = "КЭ БД системы источника"; - replica_tech = "План А+". |
grdl_module.request_count_total | counter - Количество полученных запросов ТКД | шт | Метки метрики: - version = "версия метрики"; - mon_system_ci = "КЭ ИТ-услуги системы мониторинга"; - it_service_ci = "КЭ ИТ-услуги системы источника"; - object_ci = "КЭ БД системы источника"; - replica_tech = "План А+". |
grdl_module.response_count_total | counter - Количество обработанных запросов ТКД | шт | Метки метрики: - version = "версия метрики"; - mon_system_ci = "КЭ ИТ-услуги системы мониторинга"; - it_service_ci = "КЭ ИТ-услуги системы источника"; - object_ci = "КЭ БД системы источника"; - replica_tech = "План А+". |
grdl_module.ddl_operations_total | counter - Общее количество обработанных DDL-операций | шт | Метки метрики: - app = "id модуля"; - gdl_version = "версия GraDeLy"; - unimonId = "идентификатор Unimon"; - rn = "имя ресурса Unimon". |
grdl_module.ddl_operations_filtered | counter - Общее количество отфильтрованных DDL-операций | шт | Метки метрики: - app = "id модуля"; - gdl_version = "версия GraDeLy"; - unimonId = "идентификатор Unimon"; - rn = "имя ресурса Unimon". |
grdl_module.dataready_db_to_cdc_ms | gauge - Разница между временем извлечения инструментом CDC из слота БД и временем коммита транзакции в БД | мс | Метки метрики: - version = "версия метрики"; - mon_system_ci = "КЭ ИТ-услуги системы мониторинга"; - it_service_ci = "КЭ ИТ-услуги системы источника"; - object_ci = "КЭ БД системы источника"; - metric_type = "тип метрики"; - metric_unit = "единица измерения метрики"; - replica_tech = "План А+". |
grdl_module.heartbeat | counter - Текущее время (unixtime) — сигнализирует о работоспособности модуля | с | Метки метрики: - version = "версия метрики"; - mon_system_ci = "КЭ ИТ-услуги системы мониторинга"; - it_service_ci = "КЭ ИТ-услуги системы источника"; - object_ci = "КЭ БД системы источника"; - metric_type = "тип метрики"; - metric_unit = "единица измерения метрики"; - replica_tech = "План А+". |
Результаты работы с секретами HashiCorp Vault
Консоль
Для отслеживания событий с секретами, относящихся к консоли, используется Platform V Monitor.
Воркер
Для отслеживания событий с секретами, относящихся к воркеру, используется собственная система событий GraDeLy. События отображаются в Описании события во вкладке Процессы (подробнее в Руководстве пользователя интерфейса консоли управления).
События:
- успешное чтение и проверка секрета:
Successfully read <secret-name> secret; - неуспешное чтение и проверка секрета:
Failed to read <secret-name> secret; - неуспешное применение секрета:
Failed to commit <secret-name> secret; - неуспешное чтение и проверка секрета при включенной стратегии fail-fast:
Failed to read <secret-name> secret, remainingAttempts=<remaining-attempts-count>; - неуспешное применение секрета при включенной стратегии fail-fast:
Failed to commit <secret-name> secret, remainingAttempts=<remaining-attempts-count>; - секреты для БД применителя применены:
Update target db connections; - запрос на отложенное обновление секретов БД источника принят:
Lazy update source db connections.