Telemetri och felsökning
Rumslig analys innehåller en uppsättning funktioner för att övervaka systemets hälsotillstånd och hjälpa till med diagnostiseringsproblem.
Aktivera visualiseringar
Om du vill aktivera en visualisering av AI Insight-händelser i en videoram måste du använda versionen av en spatial analysåtgärd på en stationär dator .debug eller virtuell Azure-dator. Visualiseringen är inte möjlig på Azure Stack Edge enheter. Det finns fyra tillgängliga felsökningsåtgärder.
Om enheten är en lokal dator eller virtuell Azure GPU-dator (med fjärrskrivbord aktiverat) kan du växla till version av valfri åtgärd .debug och visualisera utdata.
Öppna skrivbordet antingen lokalt eller med hjälp av en fjärrskrivbordsklient på värddatorn som kör Spatial Analysis.
I terminalkörningen
xhost +Uppdatera distributionsmanifestet
spaceanalyticsunder modulen med värdet förDISPLAYmiljövariabeln. Du hittar dess värde genom attecho $DISPLAYköra i terminalen på värddatorn."env": { "DISPLAY": { "value": ":11" } }Uppdatera diagrammet i distributionsmanifestet som du vill köra i felsökningsläge. I exemplet nedan uppdaterar vi operationId till cognitiveservices.vision.spatialanalysis-personcrossingpolygon.debug. En ny parameter
VISUALIZER_NODE_CONFIGkrävs för att aktivera visualiseringsfönstret. Alla åtgärder är tillgängliga i felsöknings smak. När du använder delade noder använder du åtgärden cognitiveservices.vision.spatialanalysis.debug och läggerVISUALIZER_NODE_CONFIGtill i instansparametrarna."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}]}" } }Omdistribuera visas visualiserarfönstret på värddatorn
När distributionen är klar kan du behöva kopiera filen
.Xauthorityfrån värddatorn till containern och starta om den. I exemplet nedanpeopleanalyticsär namnet på containern på värddatorn.sudo docker cp $XAUTHORITY peopleanalytics:/root/.Xauthority sudo docker stop peopleanalytics sudo docker start peopleanalytics xhost +
Samla in telemetri om systemhälsa
Telegraf är en bild med öppen källkod som fungerar med rumslig analys och är tillgänglig i Microsoft Container Registry. Den tar följande indata och skickar dem till Azure Monitor. Telegraf-modulen kan byggas med önskade anpassade indata och utdata. Telegraf-modulkonfigurationen i Spatial Analysis är en del av distributionsmanifestet (länkat ovan). Den här modulen är valfri och kan tas bort från manifestet om du inte behöver den.
Ingångar:
- Mått för rumslig analys
- Diskmått
- CPU-mått
- Docker-mått
- GPU-mått
Utgångar:
- Azure Monitor
Den angivna telegraf-modulen för rumslig analys publicerar alla telemetridata som skickas av containern för rumslig analys till Azure Monitor. Se Azure Monitor information om hur du lägger Azure Monitor till din prenumeration.
När du Azure Monitor måste du skapa autentiseringsuppgifter som gör att modulen kan skicka telemetri. Du kan använda Azure Portal för att skapa ett nytt huvudnamn för tjänsten eller använda Azure CLI-kommandot nedan för att skapa ett.
Anteckning
Det här kommandot kräver att du har ägarbehörighet för prenumerationen.
# 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>"
I distributionsmanifestet för din Azure Stack Edge-enhet, stationär dator eller virtuell Azure-datormed GPU letar du upp telegraf-modulen och ersätter följande värden med informationen om tjänstens huvudnamn från föregående steg och distribuerar om.
"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}"
},
...
När telegraf-modulen har distribuerats kan de rapporterade måtten nås antingen via Azure Monitor-tjänsten eller genom att välja Övervakning i IoT Hub på Azure Portal.
Systemhälsohändelser
| Händelsenamn | Description |
|---|---|
| archon_exit | Skickas när en användare ändrar status för modulen Spatial Analysis från att köras till stoppad. |
| archon_error | Skickas när någon av processerna i containern kraschar. Det här är ett kritiskt fel. |
| InputRate | Den hastighet med vilken grafen bearbetar videoindata. Rapporteras var femte minut. |
| OutputRate | Den hastighet med vilken grafen matar ut AI-insikter. Rapporteras var femte minut. |
| archon_allGraphsStarted | Skickas när alla grafer har börjat. |
| archon_configchange | Skickas när en grafkonfiguration har ändrats. |
| archon_graphCreationFailed | Skickas när grafen med rapporterade graphId inte startar. |
| archon_graphCreationSuccess | Skickas när grafen med den rapporterade graphId startar korrekt. |
| archon_graphCleanup | Skickas när grafen med den rapporterade graphId rensningen rensas och avslutas. |
| archon_graphHeartbeat | Pulsslag som skickas varje minut för varje graf i en färdighet. |
| archon_apiKeyAuthFail | Skickas när Visuellt innehåll-resursnyckeln inte kan autentisera containern i mer än 24 timmar, på grund av följande orsaker: Utanför kvot, Ogiltig, Offline. |
| VideoIngesterPatibeat | Skickas varje timme för att indikera att videon strömmas från videokällan, med antalet fel under den timmen. Rapporteras för varje graf. |
| VideoIngesterState | Rapporter stoppade eller startade för videouppspelning. Rapporteras för varje graf. |
Felsöka en IoT Edge enhet
Du kan använda iotedge kommandoradsverktyget för att kontrollera status och loggar för de moduler som körs. Exempel:
iotedge list: Rapporterar en lista över moduler som körs. Du kan ytterligare söka efter fel mediotedge logs edgeAgent. Omiotedgefastnar kan du prova att starta om den mediotedge restart edgeAgentiotedge logs <module-name>iotedge restart <module-name>för att starta om en specifik modul
Samla in loggfiler med diagnostikcontainern
Rumslig analys genererar Docker-felsökningsloggar som du kan använda för att diagnostisera körningsproblem eller inkludera dem i supportärenden. Modulen Diagnostik för rumslig analys finns i Microsoft Container Registry som du kan ladda ned. Leta upp diagnostikmodulen i manifestdistributionsfilen förAzure Stack Edge enhet,stationär dator eller virtuell Azure-dator med GPU.
I avsnittet "env" lägger du till följande konfiguration:
"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\"}}}}"
}
Om du vill optimera loggar som laddats upp till en fjärrslutpunkt, till exempel Azure Blob Storage, rekommenderar vi att du behåller en liten filstorlek. Se exemplet nedan för den rekommenderade konfigurationen av Docker-loggar.
{
"HostConfig": {
"LogConfig": {
"Config": {
"max-size": "500m",
"max-file": "1000"
}
}
}
}
Konfigurera loggnivån
Med loggnivåkonfigurationen kan du styra hur utförliga de genererade loggarna är. Loggnivåer som stöds är: none , , , och verbose info warning error . Standardloggens utförliga nivå för både noder och plattform är info .
Loggnivåer kan ändras globalt genom att ange ARCHON_LOG_LEVEL miljövariabeln till något av de tillåtna värdena.
Det kan också anges via dokumentet IoT Edge-modultvilling antingen globalt, för alla distribuerade färdigheter eller för varje specifik kunskap genom att ange värdena för och platformLogLevel nodesLogLevel enligt nedan.
{
"version": 1,
"properties": {
"desired": {
"globalSettings": {
"platformLogLevel": "verbose"
},
"graphs": {
"samplegraph": {
"nodesLogLevel": "verbose",
"platformLogLevel": "verbose"
}
}
}
}
}
Samla in loggar
Anteckning
Modulen diagnostics påverkar inte loggningsinnehållet, utan hjälper bara till att samla in, filtrera och ladda upp befintliga loggar.
Du måste ha Docker API version 1.40 eller senare för att kunna använda den här modulen.
Exempeldistributionsmanifestfilen för din Azure Stack Edge,stationär dator eller virtuell Azure-dator med GPU innehåller en modul med namnet som samlar in och laddar upp diagnostics loggar. Den här modulen är inaktiverad som standard och bör aktiveras via IoT Edge-modulkonfigurationen när du behöver åtkomst till loggar.
Samlingen är på begäran och styrs via en IoT Edge direktmetod och kan skicka loggar till diagnostics en Azure Blob Storage.
Konfigurera mål för uppladdning av diagnostik
Från IoT Edge portalen väljer du din enhet och sedan diagnostikmodulen. I exemplet på distributionsmanifestfil för din Azure Stack Edge enhet,stationära datorer eller virtuella Azure-datorer med GPU letar du efter avsnittet Miljövariabler för diagnostik med namnet och lägger till följande env information:
Konfigurera Upload till Azure Blob Storage
- Skapa ett eget Azure Blob Storage-konto, om du inte redan har gjort det.
- Hämta anslutningssträngen för ditt lagringskonto från Azure Portal. Den finns i Åtkomstnycklar.
- Loggar för rumslig analys laddas automatiskt upp till en Blob Storage-container med namnet rtcvlogs med följande filnamnsformat:
{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"
}
Ladda upp loggar för rumslig analys
Loggar laddas upp på begäran med getRTCVLogs IoT Edge-metoden i diagnostics modulen.
- Gå till IoT Hub portalsida, välj Edge-enheter och välj sedan din enhet och diagnostikmodulen.
- Gå till informationssidan för modulen och klicka på fliken Direktmetod.
- Skriv
getRTCVLogspå Metodnamn och en json-formatsträng i nyttolasten. Du kan ange{}, som är en tom nyttolast. - Ange tidsgränser för anslutningar och metoder och klicka på Anropa metod.
- Välj målcontainern och skapa en json-sträng för nyttolasten med hjälp av parametrarna som beskrivs i avsnittet Loggningssyntax. Klicka på Anropa metod för att utföra begäran.
Anteckning
När metoden getRTCVLogs anropas med en tom nyttolast returneras en lista över alla containrar som distribueras på enheten. Metodnamnet är ärendekänsligt. Du får ett 501-fel om ett felaktigt metodnamn anges.

Loggningssyntax
I tabellen nedan visas de parametrar som du kan använda när du frågar loggar.
| Sökord | Beskrivning | Standardvärde |
|---|---|---|
| StartTime | Starttid för önskade loggar, i millisekunder UTC. | -1, början av containerns körning. När [-1.-1] används som ett tidsintervall returnerar API:et loggar från den senaste timmen. |
| EndTime | Sluttid för önskade loggar, i millisekunder UTC. | -1, den aktuella tiden. När [-1.-1] du använder ett tidsintervall returnerar API:et loggar från den senaste timmen. |
| ContainerId | Målcontainer för att hämta loggar. | nullnär det inte finns något container-ID. API:et returnerar all tillgänglig containerinformation med -ID:n. |
| DoPost | Utför uppladdningsåtgärden. När det här är false inställt på utför den begärda åtgärden och returnerar uppladdningsstorleken utan att utföra uppladdningen. När det här true är inställt på initierar det den asynkrona uppladdningen av de valda loggarna |
false, ladda inte upp. |
| Begränsning | Ange hur många rader med loggar som ska laddas upp per batch | 1000, Använd den här parametern för att justera posthastigheten. |
| Filter | Filtrerar loggar som ska laddas upp | null, kan filter anges som nyckelvärdepar baserat på loggstrukturen för rumslig analys: [UTC, LocalTime, LOGLEVEL,PID, CLASS, DATA] . Exempelvis: {"TimeFilter":[-1,1573255761112]}, {"TimeFilter":[-1,1573255761112]}, {"CLASS":["myNode"] |
I följande tabell visas attributen i frågesvaret.
| Sökord | Description |
|---|---|
| DoPost | Antingen sant eller falskt. Anger om loggar har laddats upp eller inte. När du väljer att inte ladda upp loggar returnerar API:et information synkront _. När du väljer att ladda upp loggar returnerar API:et 200, om begäran är giltig, och börjar ladda upp loggar _asynkront**. |
| TimeFilter | Tidsfilter som tillämpas på loggarna. |
| ValueFilters | Nyckelordsfilter som tillämpas på loggarna. |
| TimeStamp | Starttid för metodkörning. |
| ContainerId | Målcontainer-ID. |
| FetchCounter | Totalt antal loggrader. |
| FetchSizeInByte | Total mängd loggdata i byte. |
| MatchCounter | Giltigt antal loggrader. |
| MatchSizeInByte | Giltig mängd loggdata i byte. |
| FilterCount | Totalt antal loggrader efter att filtret har tillämpats. |
| FilterSizeInByte | Total mängd loggdata i byte efter tillämpat filter. |
| FetchLogsDurationInMiliSec | Varaktighet för hämtningsåtgärd. |
| PaseLogsDurationInMiliSec | Varaktighet för filteråtgärd. |
| PostLogsDurationInMiliSec | Efter åtgärdens varaktighet. |
Exempelbegäran
{
"StartTime": -1,
"EndTime": -1,
"ContainerId": "5fa17e4d8056e8d16a5a998318716a77becc01b36fde25b3de9fde98a64bf29b",
"DoPost": false,
"Filters": null
}
Exempelsvar
{
"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
}
}
}
Kontrollera hämtningsloggens rader, tider och storlekar. Om de inställningarna ser bra ut ersätter du DoPost till så push-hämtas loggarna med samma true filter till mål.
Du kan exportera loggar från Azure Blob-Storage när du felsöker problem.
Felsöka Azure Stack Edge enhet
Följande avsnitt innehåller hjälp med felsökning och verifiering av statusen för din Azure Stack Edge enhet.
Åtkomst till Kubernetes API-slutpunkten.
- I enhetens lokala användargränssnitt går du till sidan Enheter.
- Under Enhetsslutpunkter kopierar du Kubernetes API-tjänstslutpunkten. Den här slutpunkten är en sträng i följande format:
https://compute..[device-IP-address]. - Spara slutpunktssträngen. Du kommer att använda detta senare när du
kubectlkonfigurerar för åtkomst till Kubernetes-klustret.
Anslut till PowerShell-gränssnitt
Fjärranslut från en Windows klient. När Kubernetes-klustret har skapats kan du hantera programmen via det här klustret. Du måste ansluta till Enhetens PowerShell-gränssnitt. Beroende på klientoperativsystemet kan procedurerna för att fjärransluta till enheten vara olika. Följande steg gäller för en Windows som kör PowerShell.
Tips
- Innan du börjar kontrollerar du att Windows klient kör Windows PowerShell 5.0 eller senare.
- PowerShell är också tillgängligt i Linux.
Kör en Windows PowerShell-session som administratör.
- Kontrollera att Windows Remote Management-tjänsten körs på klienten. Skriv i
winrm quickconfigkommandotolken.
- Kontrollera att Windows Remote Management-tjänsten körs på klienten. Skriv i
Tilldela en variabel för enhetens IP-adress. Till exempel
$ip = "<device-ip-address>".Använd följande kommando för att lägga till IP-adressen för enheten i klientens lista över betrodda värdar.
Set-Item WSMan:\localhost\Client\TrustedHosts $ip -Concatenate -ForceStarta en Windows PowerShell-session på enheten.
Enter-PSSession -ComputerName $ip -Credential $ip\EdgeUser -ConfigurationName MinishellAnge lösenordet när du uppmanas att göra det. Använd samma lösenord som används för att logga in på det lokala webbgränssnittet. Standardlösenordet för det lokala webbgränssnittet är
Password1.
Åtkomst till Kubernetes-klustret
När Kubernetes-klustret har skapats kan du använda kubectl kommandoradsverktyget för att komma åt klustret.
Skapa ett nytt namnområde.
New-HcsKubernetesNamespace -NamespaceSkapa en användare och hämta en konfigurationsfil. Det här kommandot matar ut konfigurationsinformation för Kubernetes-klustret. Kopiera den här informationen och spara den i en fil med namnet config. Spara inte filen med ett filnamnstillägg.
New-HcsKubernetesUser -UserNameLägg till konfigurationsfilen i .kube-mappen i din användarprofil på den lokala datorn.
Associera namnområdet med den användare som du skapade.
Grant-HcsKubernetesNamespaceAccess -Namespace -UserNameInstallera
kubectlpå Windows-klienten med följande kommando:curl https://storage.googleapis.com/kubernetesrelease/release/v1.15.2/bin/windows/amd64/kubectl.exe -O kubectl.exeLägg till en DNS-post i värdfilen på datorn.
- Kör Anteckningar administratör och öppna värdfilen som finns på
C:\windows\system32\drivers\etc\hosts. - Skapa en post i värdfilen med enhetens IP-adress och DNS-domän som du fick från sidan Enhet i det lokala användargränssnittet. Den slutpunkt som du bör använda ser ut ungefär så här:
https://compute.asedevice.microsoftdatabox.com/10.100.10.10.
- Kör Anteckningar administratör och öppna värdfilen som finns på
Kontrollera att du kan ansluta till Kubernetes-poddarna.
kubectl get pods -n "iotedge"
Kör följande kommando för att hämta containerloggar:
kubectl logs <pod-name> -n <namespace> --all-containers
Användbara kommandon
| Kommando | Beskrivning |
|---|---|
Get-HcsKubernetesUserConfig -AseUser |
Genererar en Kubernetes-konfigurationsfil. När du använder kommandot kopierar du informationen till en fil med namnet config. Spara inte filen med ett filnamnstillägg. |
Get-HcsApplianceInfo |
Returnerar information om din enhet. |
Enable-HcsSupportAccess |
Genererar autentiseringsuppgifter för åtkomst för att starta en supportsession. |
Så här gör du för att skapa en supportbiljett för rumslig analys
Om du behöver mer support för att hitta en lösning på ett problem som du har med containern Spatial Analysis följer du dessa steg för att fylla i och skicka en supportbiljett. Vårt team kommer att gå tillbaka till dig med ytterligare vägledning.
Fyll i grunderna
Skapa en ny supportbegäran på sidan Ny supportbegäran. Följ anvisningarna för att fylla i följande parametrar:

- Ange Problemtyp till
Technical. - Välj den prenumeration som du använder för att distribuera containern spatial analys.
- Välj
My servicesoch välj somCognitive Servicestjänst. - Välj den resurs som du använder för att distribuera containern spatial analys.
- Skriv en kort beskrivning som beskriver problemet.
- Välj
Spatial Analysissom problemtyp. - Välj lämplig undertyp i listrutan.
- Välj Nästa: Lösningar för att gå vidare till nästa sida.
Rekommenderade lösningar
Nästa steg erbjuder rekommenderade lösningar för den problemtyp som du har valt. Dessa lösningar löser de vanligaste problemen, men om det inte är användbart för din lösning väljer du Nästa: Information för att gå till nästa steg.
Information
På den här sidan lägger du till ytterligare information om det problem som du har haft. Var noga med att ta med så mycket information som möjligt, eftersom det hjälper våra tekniker att bättre begränsa problemet. Ta med din önskade kontaktmetod och problemets allvarlighetsgrad så att vi kan kontakta dig på rätt sätt och välj Nästa: Granska + skapa för att gå vidare till nästa steg.
Granska och skapa
Granska informationen i din supportbegäran för att se till att allt är korrekt och representerar problemet effektivt. När du är klar väljer du Skapa för att skicka biljetten till vårt team! Du får en e-postbekräftelse när din biljett har tagits emot och vårt team kommer att arbeta för att komma tillbaka till dig så snart som möjligt. Du kan visa status för din biljett i Azure Portal.