# Мониторинг

## Что контролировать

| Объект | Где смотреть | Показатели |
|---|---|---|
| Подключённые роботы | Портал управления, страница «Подключения» веб-интерфейса | Список устройств, SID, тип, статус, время последнего heartbeat |
| Подключённые операторы | Портал управления | Кто подключён, к каким роботам |
| Модели ИИ | Web UI оператора (мониторинг моделей), AI Runtime | Входные и выходные данные, команды, логи, загрузка GPU |
| Сервисы платформы | Prometheus + Grafana | Задержки потоков, частота кадров и телеметрии, ошибки, использование CPU/RAM/сети |
| Серверная логика | ConsoleLogModule | Все данные, проходящие через выбранные порты конвейера |
| Робот | Логи SDK (`all.log`, `error.log`) | События подключения, heartbeat, полученные команды, ошибки |

## Ключевые метрики и пороги

| Метрика | Норма | Действие при отклонении |
|---|---|---|
| Задержка видео камера → оператор | < 200 мс | Снизить разрешение/качество кадра, проверить сеть |
| Задержка команда → привод | < 50 мс | Проверить загрузку ХАБа и сеть робота |
| Пропуск heartbeat | 0 | Проверить питание и связь робота |
| Частота телеметрии | стабильна (до 30/с) | Проверить основной цикл робота |

## Получение логов с робота удалённо

Сервер может запросить у робота файлы логов командой типа `file` — SDK отвечает событием `file` с содержимым:

| Команда | Результат |
|---|---|
| `{"file": "log"}` | Содержимое `all.log` |
| `{"file": "error"}` | Содержимое `error.log` |
| `{"file": "clear"}` | Очистка обоих файлов логов |

Логи в файлы пишутся, если на роботе задано `"logger_type": "file"`. Подробнее — [Протокол обмена с сервером](https://docs.mephi-ai.ru/books/po-dlia-robota/page/protokol-obmena-s-serverom).

## Grafana: рекомендуемые панели

- Число подключённых роботов / операторов / моделей.
- Задержки по каждому потоку (p50, p95, p99).
- Пропускная способность видео по роботам.
- Ошибки Gateway (4xx/5xx), отказы авторизации.
- Загрузка GPU и очередь задач AI Runtime.