Потеря состояния аварии в сервисе метрик
Описание
Поскольку синхронизация состояния узлов в сервисе метрик происходит с определённым интервалом (по умолчанию минута), при нештатном завершении работы сервиса метрик может возникнуть ситуация потери состояния. Особенно критично это при настроенных порогах аварий. Столкнулись со следующей ситуацией: Настроен порог на проверку доступности порта, при недоступности устройства (Ping Failed
) возникает и авария по недоступности в следующем порядке
- Проверка доступности порта, поднятие аварии
- Устройство недоступно -
Ping Failed
- Нештатное завершение работы сервиса метрик
- После поднятия актуальные метрики с устройства не снимаются, поскольку оно недоступно
- После восстановления устройства метрика приходит в норму, но отметки о срабатывании порога нет. Поэтому авария не закрывается.
Необходимо предусмотреть механизм для кпирования ситуации отсутствия закрытия аварии по опросу.
Предложение
На ум приходит несколько вариантов действий:
- Сократить интервал синхронизации состояний. Не даёт гарантии, только уменьшает размер потерянных данных
- Привязать коммит курсора к завершению сохранения состояния. В этом случае после восстановления работы произойдёт повторная обработка метрик с последнего сохранённого состояния. При этом будут дубликаты метрик в таблице
- Отдельный механизм сохранения состояний для ноды
Alarms
Предпочтительным выглядит вариант номер 2, поскольку он даёт гарантию восстановления актуального состояния.