Skip to main content

Агент

Переменные среды

CFG_AGENT_SERVICE_MODE
  • 0 - флаг выключенного сервисного режима. значение по умолчанию
  • 1 - флаг включенного сервисного режима
CFG_AGENT_SERVICE_MODE_URL_BASE

url для получения команд в сервисном режиме

CFG_AGENT_SERVICE_MODE_URL_DATA

url для дополнительной выгрузки (в сервис) метрик в сервисном режиме

CFG_AGENT_SERVICE_MODE_TOKEN

токен сервиса в сервисном режиме

CFG_AGENT_SERVICE_MODE_SYNC_METRIC_CRON

крон расписание для синхронизации метрик коробки и сервиса. Значение по умолчанию - "10 * * * *"

CFG_AGENT_SERVICE_MODE_METRIC_SYNC_PERIOD

количество дней для синхронизации метрик коробки и сервиса по расписанию. Значение по умолчанию - 14

CFG_AGENT_SERVICE_MODE_METRIC_SYNC_CHUNK_MIN

минимальное количество дней в запросе сумм и метрик при синхронизации. Значение по умолчанию - 1

CFG_AGENT_SERVICE_MODE_METRIC_SYNC_CHUNK_MAX

максимальное количество дней в запросе сумм и метрик при синхронизации. Значение по умолчанию - 7

Команды

service_mode.sync_metrics

команда синхронизации с произвольным промежутком

Параметры:

  • from - начало промежутка. utc unixtime
  • to - окончание промежутка. utc unixtime
  • force - флаг принудительной синхронизации. при force == True поиск различий не производится и выгружаются все метрики
service_mode.sync_object_struct

команда для передачи измененных объектов из сервиса в коробку. команда-singleton - агент не добавит команду, если в очереди команд есть команда с таким типом.

Параметры

  • object_struct - строка с бинарными данными структуры объекта в формате base64

API сервиса

GET: /agent/service_mode/get_sum

wiki

запрос сумм метрик за промежуток времени

  • from - начало промежутка. utc unixtime
  • to - окончание промежутка. utc unixtime
GET: /agent/service_mode/get_metrics

wiki

запрос метрик за промежуток времени

  • from - начало промежутка. utc unixtime
  • to - окончание промежутка. utc unixtime

API 1с

POST: /agent/service_mode/object_struct

Отправка измененных данных объектов из сервиса в коробочное издание.

{
	"object_struct": "BASE64 строка"
}
POST: /agent/service_mode/metrics

Отправка метрик из сервиса в коробку. Предполагается пересылка без изменения формата

Пример тела запроса

{
    "client_id": "de61e105-f743-44aa-b1ab-f799cd513229",
    "db_name": "DB_2",
    "from": 1679443000,
    "to": 1679529000,
    "metrics": [
      	...,
        {
            "times": "2022-01-31T11:00:00",
            "device_id": "a26c126b-7372-4123-a825-55d1526d1b1d",
            "sensor_id": "80116311-1e27-4fe1-06c3-9d6a75fe6f84",
            "metric_type": "in",
            "count": 0
        },
		...
    ],
    "portal_metrics": [
        {
            "times": "2022-01-31T11:00:00",
            "portal_id": "287641f2-47b5-40c4-ac28-de2f53a3cf3c",
            "metric_type": "in",
            "count": 0,
            "modify_data": 0
        }
    ]
}
GET: /agent/service_mode/get_sum

запрос хэш-сумм метрик за промежуток времени. wiki

  • from - начало промежутка. utc unixtime
  • to - окончание промежутка. utc unixtime

Описание процессов

Автоматическая синхронизация метрик

  • период сверки - 14 дней
  • максимальный размер чанка - 7 дней (TODO)
  • минимальный размер чанка - 1 день (TODO)
  1. Начало итерации (по рассписанию)
  2. Сверка сумм
    1.  запрос сумм в сервисе
    2. запрос сумм в коробке
    3. сравнение сумм в чанке
      1. при несовпадении сумм повторяем пункты 2.1, 2.2, 2.3 (бинарный поиск)
      2. при достижении минимального размера чанка - заносим промежуток в список data_discrepancy
  3. Передача данных
    1. запрос данных в сервисе. параметры - промежутки из data_discrepancy
    2.  передача данных в коробку
  4. Окончание итерации

Cинхронизация метрик по команде от сервиса

Идентично автоматической синхронизации метрик.

Исключение - период сверки, который берется из параметров корманды

Передача измененных данных объектов из сервиса в коробочное издание

Передача измененных данных объектов из сервиса в коробку

Передача происходит через команду service_mode.sync_object_struct