Механизм восполнения пробелов в метриках

Проблема

Метрики поступают в агент неравномерно. Некоторые устройства не могут прислать метрики из-за проблем с сетью или по причине того что они выключены. Для исключения пробелов в метриках был реализован механизм восполнения пробелов в метриках

Реализация

Для реализации механизма понадобилось переработать хранение метрик в локальной базе агента - удаление метрик после отправки заменил на установку флага синхронизации. Сами метрики хранятся в локальной базе агента в течении N дней (задается в переменной CFG_AGENT_METRICS_AGE_MAX_DAYS).

В механизме используются следующие сущности метрики:

gap_checker производит анализ метрик в локальной базе

Промежуток времени не содержит метрики если истинно одно из условий

Механизм работает следующим образом:

  1. По расписанию (задается в переменной CFG_AGENT_METRICS_CHECK_GAPS_CRON) запускается функция выявления пробелов (далее gap_checker)
  2. При CFG_AGENT_METRICS_CHECK_GAPS_ENABLED != 1 выполнение завершается
  3. Для каждого зарегистрированного (is_new == False) устройства с выключенным пассивным режимом и поддерживающим команду upload_data gap_checker просматривает все метрики в локальной базе за промежуток с CHECKER_PERIOD_START до CHECKER_PERIOD_END.
  4. Если gap_checker находит промежутки времени, не содержащие ни одной метрики
    1. Скачивание исторических данных с устройства по каждому промежутку

Revision #6
Created 6 April 2023 12:15:35 by Роман Каржавин
Updated 19 April 2023 13:03:02 by Роман Каржавин