Форматы сообщений для воркеров аналитики
При запуске воркер аналитики подключается к трем каналам:
Канал статистики (stats) – для отправки своего состояния (память, CPU и т.д.)
Канал событий (raw-events) – для отправки генерируемых событий
Канал управления, через который воркер аналитики получает задания на обработку. Название канала формируется как <название типа аналитики>.<uid>
Статистика
Воркер отправляет в канал статистики два типа сообщений:
Статистика по использованным ресурсам сервера, на котором работает воркер. Такое сообщение оправляется каждые 4 секунды. Формат сообщения имеет следующий вид:
{
"channel": "stats", // название канала в push1st-е
"data": {
"cpu": {
"cpu_count": 8,
"cpu_loadavg_percent_15min": 12.5,
"cpu_loadavg_percent_1min": 12.5,
"cpu_loadavg_percent_5min": 12.5,
}
"memory": {
"total_memory": 8342810624,
"available_memory": 7360401408,
"used_memory": 663388160,
"used_percent_memory": 11.8
}
ipaddress: "192.168.205.151"
}
}
Информация о состоянии кейсов, которые сейчас работают на воркере. Формат сообщения имеет следующий вид:
{
"channel": "stats", // название канала в push1st-е
"data": {
"ovmsUid": "a6e862d2-c6ea-11ec-88bc-59d920260ee8", // uid воркера аналитики
"streams": { // блок с описанием состояний кейсов, запущенных на данном воркере аналитики
"3d1a7e78-2458-11ed-9b5d-21123bef9093": { // идентификатор кейса
"frameProcessRate": 5.128205, // количество обрабатываемых кадров в секунду
"starttime": 1663023697, // время запуска кейса на воркере аналитики
"status": "up", // текущее состояние (может быть up, down, stopped)
"streamUid": "ebb04683-8d33-4a94-8aac-c9ea9c6b45db", // идентификатор видеопотока
"uptime": 120344 // время непрерывного функционирования кейса на данном воркере аналитики
},
"streamsCount": 1 // общее количество кейсов на воркере аналитики
}
},
"event": "stats"
}
События
При фиксировании события, воркер аналитики отправляет соответствующее сообщение в канал raw-events. Формат сообщения может отличаться в зависимости от типа аналитики. Общий вид формата сообщения:
{
"channel": "raw-events", // название канала в push1st-е
"data": {
"AnalyticsType": "motion-detect", // тип аналитики
"CameraGroupUid": "3f3348a9-ae87-4902-947f-725fd25751e3", // идентификатор CameraGroup
"JobUid": "beddb758-303e-11ed-8c49-bd223ebfa82e", // uid кейса аналитики
"StreamUid": "470b1c5e-748f-49a4-91e5-62f7ac53b8eb", // uid видеопотока
"apiPort": "8086", // порт для API воркера аналитики
"ovmsClientUid": "f45d2b96-9adb-11ec-8995-a3b0e5228375", // uid воркера аналитики
"ovmsClientHostIp": "10.244.112.212" // адрес воркера, сгенерировавшего событие
"timestampMs": 1663145196202, // время генерации события
"eventFrameUrl": "/store/95064324-abc5-11ee-8c4f-b5c3d514a8ed/20240122/46707ff2-6505-4fb9-bed9-05a726af12df.jpg", // ссылка на изображение события
.... // далее могут передаваться данные, которые относятся к конкретному типу аналитики
},
"event": "event"
}
Канал управления
Канал управления используется для передачи кейса в работу воркеру аналитики. Название канала формируется как <название типа аналитики>.<uid> и используется оркестратором для создания, удаления и редактирования кейсов.
{
"name":"stream_event",
"channels":[
"face-recognition.cc71f36e-14c5-11ed-9bd9-bb5c75b9991b"
],
"data":{
"type":"job_create", // команда для воркера аналитики, может быть job_create, job_update, job_delete
"data":{
"CaseType":"face-recognition", // тип аналитики
"CameraGroupUid":"be8ba3dd-419f-4a8b-93ab-907b58a7c063",// идентификатор CameraGroup
"Source":{ // информация о видеопотоке для аналитики
"Uid":"8d1267c7-554a-4481-856c-4efb8c518d7d",
"Url":"rtsp://demo.<vms>.io:5554/live/8d1267c7-554a-4481-856c-4efb8c518d7d/?token=F2v53E_ZDg_zXSswjSU2GF5rfhFpWnN7V_4_vbiuryeLLm7rcR3-H6jJwtI2e-5eelwpTSaoDAQ9oncDmGeOF1N_5MVuLJcJxdrUK8TILKAam7Es1Bg7gGEezzfhCDLTIu_f5M1R6oQkfyL5i1XA_A~~",
"Output":{
"Encoding":"none",
"FPS":5
}
},
"JobUid":"16a7dfd4-14bc-11ed-9bd9-bb5c75b9991b" // идентификатор кейса аналитики
.... // далее в этом блоке передаются данные, которые могут относиться к конкретному типу аналитики
}
}
}