Телеметрия и устранение неполадок
Внимание
30 марта 2025 г. пространственный анализ визуального распознавания Azure будет прекращен. Перейдите в индексатор видео Azure AI или другое решение с открытым кодом до указанной даты. Мы рекомендуем вам сделать этот переход быстрее, чтобы получить более широкие преимущества Индексатора видео Azure. Помимо знакомых функций, которые вы используете, вы можете быстро сравнить пространственный анализ визуального распознавания ИИ Azure и Индексатор видео Azure.
Функция | Пространственный анализ визуального распознавания искусственного интеллекта Azure | Индексатор видео ИИ Azure |
---|---|---|
Поддержка пограничных вычислений | Да | Да |
Обнаружение объектов | Только обнаружение людей и автомобилей | Обнаруживает 1000+ объектов |
Обработка звука и речи | Не поддерживается | Поддерживается (включает транскрибирование речи, перевод и сводку) Поддерживается >(включает транскрибирование речи и анализ тональности) |
Обнаружение событий и отслеживание | Поддерживается (отслеживание людей и транспортных средств, обнаружение событий) | Пока не поддерживается в Edge. Частично поддерживается в облаке. |
Поддержка Azure Arc | Не поддерживается | Встроенная поддержка |
Приоритетная область | Визуальный анализ с помощью специализированного отслеживания | Комплексный анализ аудио- и визуального содержимого |
С 30 марта 2025 г. вы можете продолжать использовать пространственный анализ визуального распознавания ИИ Azure или перейти в Индексатор видео Azure AI до указанной даты. После 30 марта 2025 г. контейнер пространственного анализа больше не будет поддерживаться и перестанет обрабатывать новые потоки.
Пространственный анализ включает набор функций для мониторинга работоспособности системы и помощи в диагностике проблем.
Включение визуализаций
Чтобы включить визуализацию событий Аналитики ИИ в видеокадре, необходимо использовать версию .debug
операции пространственного анализа на настольном компьютере или виртуальной машине Azure. Визуализация невозможна на устройствах Azure Stack Edge. Доступны четыре операции отладки.
Если устройство является локальным компьютером на рабочем столе или виртуальной машиной GPU Azure (с включенным удаленным рабочим столом), вы можете переключиться на .debug
версию любой операции и визуализировать выходные данные.
Откройте рабочий стол локально или с помощью клиента удаленного рабочего стола на главном компьютере, выполняющем пространственный анализ.
В окне терминала выполните команду
xhost +
Обновите манифест развертывания в модуле
spaceanalytics
, указав значение переменной средыDISPLAY
. Это значение можно найти, запустивecho $DISPLAY
в терминале на главном компьютере."env": { "DISPLAY": { "value": ":11" } }
Обновите граф в манифесте развертывания, который требуется запустить в режиме отладки. В приведенном ниже примере мы указываем в качестве operationId значение cognitiveservices.vision.spatialanalysis-personcrossingpolygon.debug. Для включения окна визуализатора требуется новый параметр
VISUALIZER_NODE_CONFIG
. Все операции доступны в варианте приложения для отладки. При использовании общих узлов используйте операцию cognitiveservices.vision.spatialanalysis.debug и добавьтеVISUALIZER_NODE_CONFIG
в параметры экземпляра."zonecrossing": { "operationId" : "cognitiveservices.vision.spatialanalysis-personcrossingpolygon.debug", "version": 1, "enabled": true, "parameters": { "VIDEO_URL": "Replace http url here", "VIDEO_SOURCE_ID": "zonecrossingcamera", "VIDEO_IS_LIVE": false, "VIDEO_DECODE_GPU_INDEX": 0, "DETECTOR_NODE_CONFIG": "{ \"gpu_index\": 0 }", "CAMERACALIBRATOR_NODE_CONFIG": "{ \"gpu_index\": 0}", "VISUALIZER_NODE_CONFIG": "{ \"show_debug_video\": true }", "SPACEANALYTICS_CONFIG": "{\"zones\":[{\"name\":\"queue\",\"polygon\":[[0.3,0.3],[0.3,0.9],[0.6,0.9],[0.6,0.3],[0.3,0.3]], \"threshold\":35.0}]}" } }
Повторное развертывание и вы увидите окно визуализатора на хост-компьютере
После завершения развертывания может потребоваться скопировать файл
.Xauthority
из главного компьютера в контейнер и перезапустить его. В нижеприведенном примереpeopleanalytics
— имя контейнера на главном компьютере.sudo docker cp $XAUTHORITY peopleanalytics:/root/.Xauthority sudo docker stop peopleanalytics sudo docker start peopleanalytics xhost +
Сбор телеметрии о работоспособности системы
Telegraf — это образ с открытым исходным кодом, который работает с пространственным анализом и доступен в службе Microsoft Container Registry. Он принимает следующие входные данные и отправляет их в службу Azure Monitor. Модуль Telegraf можно создать с нужными пользовательскими входными и выходными данными. Конфигурация модуля Telegraf в пространственном анализе является частью манифеста развертывания (связанного выше). Этот модуль не является обязательным и может быть удален из манифеста, если он вам не нужен.
Входные данные:
- Метрики пространственного анализа
- Метрики диска
- Метрики ЦП
- Метрики Docker
- Метрики ЦП
Выходные данные:
- Azure Monitor
Предоставленный модуль телеграфа пространственного анализа публикует все данные телеметрии, создаваемые контейнером пространственного анализа в Azure Monitor. См. Azure Monitor для получения информации о добавлении Azure Monitor в вашу подписку.
После настройки Azure Monitor необходимо создать учетные данные, позволяющие модулю отправлять данные телеметрии. Вы можете использовать портал Azure для создания нового субъекта-службы или использовать команду Azure CLI ниже, чтобы создать его.
Примечание.
Эта команда требует наличия у вас прав владельца в подписке.
# Find your Azure IoT Hub resource ID by running this command. The resource ID should start with something like
# "/subscriptions/b60d6458-1234-4be4-9885-c7e73af9ced8/resourceGroups/..."
az iot hub list
# Create a Service Principal with `Monitoring Metrics Publisher` role in the IoTHub resource:
# Save the output from this command. The values will be used in the deployment manifest. The password won't be shown again so make sure to write it down
az ad sp create-for-rbac --role="Monitoring Metrics Publisher" --name "<principal name>" --scopes="<resource ID of IoT Hub>"
В манифесте развертывания для устройства Azure Stack Edge, настольного компьютера или виртуальной машины Azure с GPU найдите модуль Telegraf и замените следующие значения сведениями субъекта-службы на предыдущем шаге и повторном развертывании.
"Telegraf": {
"settings": {
"image": "mcr.microsoft.com/azure-cognitive-services/vision/spatial-analysis/Telegraf:1.0",
"createOptions": "{\"HostConfig\":{\"Runtime\":\"nvidia\",\"NetworkMode\":\"azure-iot-edge\",\"Memory\":33554432,\"Binds\":[\"/var/run/docker.sock:/var/run/docker.sock\"]}}"
},
"type": "docker",
"env": {
"AZURE_TENANT_ID": {
"value": "<Tenant Id>"
},
"AZURE_CLIENT_ID": {
"value": "Application Id"
},
"AZURE_CLIENT_SECRET": {
"value": "<Password>"
},
"region": {
"value": "<Region>"
},
"resource_id": {
"value": "/subscriptions/{subscriptionId}/resourceGroups/{resoureGroupName}/providers/Microsoft.Devices/IotHubs/{IotHub}"
},
...
После развертывания модуля Telegraf доступ к сообщаемым метрикам можно получить либо через службу Azure Monitor, либо выбрав "Мониторинг" в Центр Интернета вещей на портал Azure.
События работоспособности системы
Имя события | Description |
---|---|
archon_exit | Отправляется, когда пользователь изменяет статус модуля пространственного анализа с работает на остановлен. |
archon_error | Отправляется в случае сбоя любого из процессов внутри контейнера. Это является критической ошибкой. |
InputRate | Скорость, с которой график обрабатывает входной видеосигнал. Сообщалось каждые пять минут. |
OutputRate | Скорость, с которой график выводит информацию об ИИ. Сообщалось каждые пять минут. |
archon_allGraphsStarted | Отправляется, когда все графики завершены. |
archon_configchange | Отправляется при изменении конфигурации графика. |
archon_graphCreationFailed | Отправляется, когда график с сообщенным graphId не запускается. |
archon_graphCreationSuccess | Отправляется, когда график с сообщенным graphId запускается успешно. |
archon_graphCleanup | Отправляется, когда диаграмма с сообщенным graphId очищается и закрывается. |
archon_graphHeartbeat | Периодические сигналы отправляются для каждого графика навыка ежеминутно. |
archon_apiKeyAuthFail | Отправляется, если ключ ресурса визуального зрения не проходит проверку подлинности контейнера в течение более 24 часов из-за следующих причин: "Не квота", "Недопустимый", "Автономный". |
VideoIngesterHeartbeat | Отправляется каждый час для указания того, что видео передается из источника видео, с указанием количества ошибок за этот час. Сообщается для каждого графика. |
VideoIngesterState | Отчеты Остановлено или Запущено для потоковой передачи видео. Сообщается для каждого графика. |
Устранение неполадок на устройстве IoT Edge
Вы можете воспользоваться инструментом командной строки iotedge
для проверки состояния и журналов запущенных модулей. Например:
iotedge list
: отображает список запущенных модулей. Вы можете дополнительно проверить наличие ошибок с помощьюiotedge logs edgeAgent
. Еслиiotedge
зависает, попробуйте перезапустить его с помощьюiotedge restart edgeAgent
iotedge logs <module-name>
iotedge restart <module-name>
для перезапуска определенного модуля
Сбор файлов журналов с помощью контейнера диагностики
Функция пространственного анализа генерирует журналы отладки Docker, которые можно использовать для диагностики проблем во время выполнения или включать в заявки в службу поддержки. Модуль диагностики пространственного анализа доступен для загрузки в Microsoft Container Registry. В файле манифеста развертывания для вашего устройства Azure Stack Edge, настольного компьютера или виртуальной машины Azure с графическим процессором найдите модуль диагностики.
В разделе env добавьте следующую конфигурацию:
"diagnostics": {
"settings": {
"image": "mcr.microsoft.com/azure-cognitive-services/vision/spatial-analysis/diagnostics:1.0",
"createOptions": "{\"HostConfig\":{\"Mounts\":[{\"Target\":\"/usr/bin/docker\",\"Source\":\"/home/data/docker\",\"Type\":\"bind\"},{\"Target\":\"/var/run\",\"Source\":\"/run\",\"Type\":\"bind\"}],\"LogConfig\":{\"Config\":{\"max-size\":\"500m\"}}}}"
}
Чтобы оптимизировать журналы, загружаемые в удаленную конечную точку, например в Хранилище BLOB-объектов Azure, мы рекомендуем поддерживать небольшой размер файла. См. нижеприведенный пример для рекомендуемой конфигурации журналов Docker.
{
"HostConfig": {
"LogConfig": {
"Config": {
"max-size": "500m",
"max-file": "1000"
}
}
}
}
Настройка уровня журнала
Конфигурация уровня журнала позволяет контролировать степень детализации создаваемых журналов. Поддерживаемые уровни журнала: none
, verbose
, info
, warning
и error
. Уровень детализации журнала по умолчанию для узлов и платформы — info
.
Уровни журнала можно изменить глобально, установив для переменной среды ARCHON_LOG_LEVEL
одно из допустимых значений.
Его также можно настроить с помощью документа IoT Edge Module Twin либо глобально, для всех развернутых навыков, либо для каждого конкретного навыка, установив значения для platformLogLevel
и nodesLogLevel
, как показано ниже.
{
"version": 1,
"properties": {
"desired": {
"globalSettings": {
"platformLogLevel": "verbose"
},
"graphs": {
"samplegraph": {
"nodesLogLevel": "verbose",
"platformLogLevel": "verbose"
}
}
}
}
}
сбор журналов
Примечание.
Модуль diagnostics
не оказывает влияния на содержимое журнала, а лишь помогает в сборе, фильтрации и загрузке существующих журналов.
Для использования этого модуля у вас должен быть Docker API версии 1.40 или выше.
Образец файла манифеста развертывания для вашего устройства Azure Stack Edge, настольного компьютера или виртуальной машины Azure с графическим процессором включает модуль с именем diagnostics
, который собирает и загружает журналы. Этот модуль отключен по умолчанию и должен быть включен в конфигурации модуля IoT Edge, когда вам нужен доступ к журналам.
Коллекция diagnostics
выполняется по запросу и управляется прямым методом IoT Edge и может отправлять журналы в Хранилище BLOB-объектов Azure.
Настройка целей загрузки диагностических данных
На портале IoT Edge выберите свое устройство, после чего выберите модуль диагностики. В образце файла манифеста развертывания для вашего устройства Azure Stack Edge, настольных компьютеров или виртуальной машины Azure с графическим процессором найдите переменные среды раздел диагностики, названныйenv
, и добавьте следующую информацию:
Настройка загрузки в Хранилище BLOB-объектов Azure
- Создайте собственную учетную запись Хранилища BLOB-объектов Azure, если вы еще этого не сделали.
- Получите строку подключения для своей учетной записи хранения на портале Microsoft Azure. Он находится в ключах доступа.
- Журналы пространственного анализа автоматически передаются в контейнер хранилища BLOB-объектов с именем rtcvlogs со следующим форматом имени файла:
{CONTAINER_NAME}/{START_TIME}-{END_TIME}-{QUERY_TIME}.log
"env":{
"IOTEDGE_WORKLOADURI":"fd://iotedge.socket",
"AZURE_STORAGE_CONNECTION_STRING":"XXXXXX", //from the Azure Blob Storage account
"ARCHON_LOG_LEVEL":"info"
}
Отправка журналов пространственного анализа
Журналы загружаются по запросу с помощью метода getRTCVLogs
IoT Edge в модуле diagnostics
.
- Перейдите на страницу портала Центра Интернета вещей Azure, выберите Пограничные устройства, после чего выберите свое устройство и модуль диагностики.
- Перейдите на страницу сведений модуля и выберите вкладку прямого метода .
- Введите
getRTCVLogs
в имени метода и строку формата json в полезных данных. Вы можете ввести{}
, что представляет собой пустую полезную нагрузку. - Задайте время ожидания подключения и метода и выберите метод Invoke.
- Выберите целевой контейнер и создайте строку json полезной нагрузки, используя параметры, описанные в разделе Синтаксис ведения журнала. Выберите метод Invoke для выполнения запроса.
Примечание.
Вызов метода getRTCVLogs
с пустой полезной нагрузкой вернет список всех контейнеров, развернутых на устройстве. Имя метода учитывает регистр. Если будет указано неправильное имя метода, вы получите ошибку 501.
Синтаксис ведения журнала
В таблице ниже перечислены параметры, которые вы можете использовать при запросе журналов.
Ключевое слово | Description | Значение по умолчанию |
---|---|---|
Время начала | Требуемое время начала ведения журналов в миллисекундах по всемирному координированному времени. | -1 , начало среды выполнения контейнера. Когда [-1.-1] используется в качестве диапазона времени, API возвращает журналы за последний час. |
EndTime | Желаемое время окончания журналов в миллисекундах по всемирному координированному времени. | -1 , текущее время. Если [-1.-1] используется диапазон времени, API возвращает журналы за последний час. |
ContainerId | Целевой контейнер для получения журналов. | null , когда нет идентификатора контейнера. API возвращает всю доступную информацию о контейнерах с идентификаторами. |
DoPost | Выполнение операции загрузки. Если установлено значение false , он выполняет запрошенную операцию и возвращает размер загрузки без выполнения загрузки. Если задано значение true , он инициирует асинхронную отправку выбранных журналов. |
false , не загружать. |
Регулирование | Укажите, сколько строк журналов загружать на пакет | 1000 , используйте этот параметр для регулировки скорости публикации. |
Фильтры | Журналы фильтров для загрузки | null , фильтры могут быть указаны как пары "ключ-значение" на основе структуры журналов пространственного анализа: [UTC, LocalTime, LOGLEVEL,PID, CLASS, DATA] . Например: {"TimeFilter":[-1,1573255761112]}, {"TimeFilter":[-1,1573255761112]}, {"CLASS":["myNode"] |
В нижеприведенной таблице перечислены атрибуты в ответе на запрос.
Ключевое слово | Description |
---|---|
DoPost | Либо true, либо false. Указывает, были ли загружены журналы или нет. Если вы решили не отправлять журналы, API возвращает сведения синхронно. При выборе отправки журналов API возвращает значение 200, если запрос действителен, и начинает асинхронно отправлять журналы. |
TimeFilter | Фильтр времени, примененный к журналам. |
ValueFilters | Фильтры ключевых слов, примененные к журналам. |
TimeStamp | Время начала выполнения метода. |
ContainerId | Идентификатор целевого контейнера. |
FetchCounter | Общее количество строк журнала. |
FetchSizeInByte | Общий объем данных журнала в байтах. |
MatchCounter | Допустимое количество строк журнала. |
MatchSizeInByte | Допустимый объем данных журнала в байтах. |
FilterCount | Общее количество строк журнала после применения фильтра. |
FilterSizeInByte | Общий объем данных журнала в байтах после применения фильтра. |
FetchLogsDurationInMiliSec | Продолжительность операции выборки. |
PaseLogsDurationInMiliSec | Продолжительность работы фильтра. |
PostLogsDurationInMiliSec | Продолжительность постоперации. |
Пример запроса
{
"StartTime": -1,
"EndTime": -1,
"ContainerId": "5fa17e4d8056e8d16a5a998318716a77becc01b36fde25b3de9fde98a64bf29b",
"DoPost": false,
"Filters": null
}
Пример отклика
{
"status": 200,
"payload": {
"DoPost": false,
"TimeFilter": [-1, 1581310339411],
"ValueFilters": {},
"Metas": {
"TimeStamp": "2020-02-10T04:52:19.4365389+00:00",
"ContainerId": "5fa17e4d8056e8d16a5a998318716a77becc01b36fde25b3de9fde98a64bf29b",
"FetchCounter": 61,
"FetchSizeInByte": 20470,
"MatchCounter": 61,
"MatchSizeInByte": 20470,
"FilterCount": 61,
"FilterSizeInByte": 20470,
"FetchLogsDurationInMiliSec": 0,
"PaseLogsDurationInMiliSec": 0,
"PostLogsDurationInMiliSec": 0
}
}
}
Проверьте строки, время и размеры журнала выборки. Если эти настройки подходят, замените DoPost на true
, и журналы с такими же фильтрами будут отправлены в места назначения.
Вы можете экспортировать журналы из Хранилища BLOB-объектов Azure в процессе устранения неполадок.
Устранение неполадок устройства Azure Stack Edge
В нижеприведенном разделе содержится справка по отладке и проверке состояния вашего устройства Azure Stack Edge.
Получите доступ к конечной точке Kubernetes API.
- В локальном интерфейсе вашего устройства перейдите на страницу Устройства.
- В разделе Конечные точки устройства скопируйте конечную точку службы Kubernetes API. Эта конечная точка представляет собой строку в следующем формате:
https://compute..[device-IP-address]
. - Сохраните строку конечной точки. Вы будете использовать это позже при настройке
kubectl
для доступа к кластеру Kubernetes.
Подключение к интерфейсу PowerShell
Удаленно подключитесь с помощью клиента Windows. После создания кластера Kubernetes вы можете управлять приложениями через этот кластер. Необходимо подключиться к интерфейсу PowerShell устройства. В зависимости от операционной системы клиента процедуры удаленного подключения к устройству могут отличаться. Следующие шаги предназначены для клиента Windows, работающего с PowerShell.
Совет
- Прежде чем начать, убедитесь, что ваш клиент Windows работает под управлением Windows PowerShell 5.0 или более поздней версии.
- PowerShell также доступен в Linux.
Запустите сеанс Windows PowerShell от имени администратора.
Убедитесь, что на вашем клиенте запущена служба удаленного управления Windows. В командной строке введите
winrm quickconfig
.Назначьте переменную для IP-адреса устройства. Например,
$ip = "<device-ip-address>"
.Используйте следующую команду для добавления IP-адреса вашего устройства в список доверенных хостов клиента.
Set-Item WSMan:\localhost\Client\TrustedHosts $ip -Concatenate -Force
Запустите на устройстве сеанс Windows PowerShell.
Enter-PSSession -ComputerName $ip -Credential $ip\EdgeUser -ConfigurationName Minishell
В ответ на запрос укажите пароль. Используйте тот же пароль, который используется для входа в локальный веб-интерфейс. Пароль локального веб-интерфейса по умолчанию —
Password1
.
Доступ к кластеру Kubernetes
После создания кластера Kubernetes вы сможете использовать инструмент командной строки kubectl
для доступа к кластеру.
Создайте новое пространство имен.
New-HcsKubernetesNamespace -Namespace
Создайте пользователя и получите файл конфигурации. Эта команда выводит сведения о конфигурации кластера Kubernetes. Скопируйте эту информацию и сохраните ее в файле с именем config. Не сохраняйте файл с расширением файла.
New-HcsKubernetesUser -UserName
Добавьте файл config в папку .kube в вашем профиле пользователя на локальном компьютере.
Настройте связь пространства имен с созданным пользователем.
Grant-HcsKubernetesNamespaceAccess -Namespace -UserName
Установите
kubectl
на свой клиент Windows, используя следующую команду:curl https://storage.googleapis.com/kubernetesrelease/release/v1.15.2/bin/windows/amd64/kubectl.exe -O kubectl.exe
Добавьте запись DNS в файл hosts в системе.
- Запустите Блокнот от имени администратора и откройте файл hosts, расположенный по адресу
C:\windows\system32\drivers\etc\hosts
. - Создайте запись в файле hosts с IP-адресом устройства и доменом DNS, полученным на странице Устройство в локальном пользовательском интерфейсе. Конечная точка, которую вы должны использовать, будет выглядеть примерно так:
https://compute.asedevice.microsoftdatabox.com/10.100.10.10
.
- Запустите Блокнот от имени администратора и откройте файл hosts, расположенный по адресу
Убедитесь, что вы можете подключиться к модулям Kubernetes.
kubectl get pods -n "iotedge"
Чтобы получить журналы контейнера, выполните следующую команду:
kubectl logs <pod-name> -n <namespace> --all-containers
Полезные команды
Команда | Description |
---|---|
Get-HcsKubernetesUserConfig -AseUser |
Создает файл конфигурации Kubernetes. При использовании команды скопируйте сведения в файл с именем config. Не сохраняйте файл с расширением файла. |
Get-HcsApplianceInfo |
Возвращает информацию о вашем устройстве. |
Enable-HcsSupportAccess |
Создает учетные данные для доступа для начала сеанса поддержки. |
Как подать заявку в службу поддержки для пространственного анализа
Если вам требуется дополнительная поддержка в поиске решения проблемы с контейнером пространственного анализа, выполните следующие действия, чтобы заполнить и отправить заявку в службу поддержки. Наша команда вернется к вам с дальнейшим руководством.
Заполнение основных сведений
Создайте новый запрос в службу поддержки на странице Новый запрос в службу поддержки. Следуйте инструкциям по заполнению следующих параметров:
- Установите для Тип проблемы значение
Technical
. - Выберите подписку, используемую для развертывания контейнера пространственного анализа.
- Выберите
My services
иAzure AI services
в качестве услуги. - Выберите ресурс, используемый для развертывания контейнера пространственного анализа.
- Напишите краткое описание проблемы, с которой вы столкнулись.
- В качестве типа проблемы выберите
Spatial Analysis
. - Выберите соответствующий подтип в раскрывающемся списке.
- Выберите Далее: Решения, чтобы перейти к следующей странице.
Рекомендуемые решения
На следующем этапе будут предложены рекомендуемые решения для выбранного вами типа проблемы. Эти решения решают наиболее распространенные проблемы, но если они бесполезны для вашего решения, выберите Далее: Подробности, чтобы перейти к следующему шагу.
Сведения
На этой странице добавьте дополнительные сведения о проблеме, с которой вы столкнулись. Обязательно укажите как можно больше подробностей, так как это поможет нашим инженерам сузить круг возможных причин проблемы. Укажите предпочитаемый способ связи и серьезность проблемы, чтобы мы могли связаться с вами надлежащим образом, и выберите Далее: Просмотр + создание, чтобы перейти к следующему шагу.
Проверка и создание
Просмотрите подробности вашего запроса в службу поддержки, чтобы убедиться, что все верно и эффективно отражает проблему. Когда вы будете готовы, нажмите кнопку "Создать ", чтобы отправить билет в нашу команду! Вы получите подтверждение электронной почты после получения вашего билета, и наша команда будет работать, чтобы вернуться к вам как можно скорее. Состояние виртуальной машины отображается на портале Microsoft Azure.