Telemetri och felsökning

Rumslig analys innehåller en uppsättning funktioner för att övervaka systemets hälsa och hjälpa till med att diagnostisera problem.

Aktivera visualiseringar

Om du vill aktivera en visualisering av AI Insight-händelser i en videoram måste du använda .debug versionen av en rumslig analysåtgärd på en stationär dator eller en 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 en virtuell Azure GPU-dator (med fjärrskrivbord aktiverat) kan du växla till .debug version av alla åtgärder och visualisera utdata.

  1. Öppna skrivbordet antingen lokalt eller med hjälp av en fjärrskrivbordsklient på värddatorn som kör Spatial Analysis.

  2. I terminalkörningen xhost +

  3. Uppdatera distributionsmanifestet under modulen spaceanalytics med värdet för DISPLAY miljövariabeln. Du kan hitta dess värde genom att köra echo $DISPLAY det i terminalen på värddatorn.

    "env": {        
        "DISPLAY": {
            "value": ":11"
            }
    }
    
  4. 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_CONFIG krävs för att aktivera visualiserarfönstret. Alla åtgärder är tillgängliga i felsökningssmaken. När du använder delade noder använder du åtgärden cognitiveservices.vision.spatialanalysis.debug och lägger till VISUALIZER_NODE_CONFIG 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}]}"
         }
    }
    
  5. Omdistribuera så visas visualiseringsfönstret på värddatorn

  6. När distributionen har slutförts kan du behöva kopiera .Xauthority filen från värddatorn till containern och starta om den. I exemplet nedan peopleanalytics ä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 för systemhälsa

Telegraf är en öppen källkod avbildning som fungerar med spatial 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. Konfigurationen av Telegraf-modulen 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 tillhandahållna telegrafmodulen spatial analys publicerar alla telemetridata som genereras av containern Spatial Analysis till Azure Monitor. Mer information om hur du lägger till Azure Monitor i din prenumeration finns i Azure Monitor .

När du har konfigurerat Azure Monitor måste du skapa autentiseringsuppgifter som gör att modulen kan skicka telemetri. Du kan använda Azure-portalen för att skapa ett nytt huvudnamn för tjänsten eller använda Azure CLI-kommandot nedan för att skapa ett.

Kommentar

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ära dator eller virtuella Azure-dator med GPU letar du efter 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 rapporterade mått nås antingen via Azure Monitor-tjänsten eller genom att välja Övervakning i IoT Hub på Azure-portalen.

Azure Monitor telemetry report

Systemhälsohändelser

Händelsenamn beskrivning
archon_exit Skickas när en användare ändrar modulstatus för rumslig analys 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. Rapporterad var femte minut.
Utdatahastighet Den hastighet med vilken diagrammet matar ut AI-insikter. Rapporterad var femte minut.
archon_allGraphsStarted Skickas när alla diagram har startats.
archon_configchange Skickas när en grafkonfiguration har ändrats.
archon_graphCreationFailed Skickas när grafen med den rapporterade graphId misslyckas att starta.
archon_graphCreationSuccess Skickas när grafen med den rapporterade graphId startar.
archon_graphCleanup Skickas när grafen med den rapporterade graphId rensas och avslutas.
archon_graphHeartbeat Pulsslag skickas varje minut för varje graf av en färdighet.
archon_apiKeyAuthFail Skickas när visionsresursnyckeln inte kan autentisera containern i mer än 24 timmar, på grund av följande orsaker: Out of Quota, Invalid, Offline.
VideoIngesterHeartbeat 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 diagram.
VideoIngesterState Rapporter har stoppats eller startats för videouppspelning. Rapporteras för varje diagram.

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. Till exempel:

  • iotedge list: Rapporterar en lista över moduler som körs. Du kan söka efter fel med iotedge logs edgeAgent. Om iotedge fastnar kan du prova att starta om den med iotedge restart edgeAgent
  • iotedge logs <module-name>
  • iotedge restart <module-name> för att starta om en specifik modul

Samla in loggfiler med diagnostikcontainern

Spatial Analysis genererar Docker-felsökningsloggar som du kan använda för att diagnostisera körningsproblem eller inkludera i supportärenden. Modulen spatial analysdiagnostik är tillgänglig i Microsoft Container Registry som du kan ladda ned. Leta efter diagnostikmodulen i manifestdistributionsfilen för din Azure Stack Edge-enhet, stationära dator eller virtuella 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\"}}}}"
  }

För att 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 Docker-loggkonfigurationen.

{
    "HostConfig": {
        "LogConfig": {
            "Config": {
                "max-size": "500m",
                "max-file": "1000"
            }
        }
    }
}

Konfigurera loggnivån

Med konfiguration på loggnivå kan du styra utförligheten i de genererade loggarna. Loggnivåerna som stöds är: none, verbose, info, warningoch error. Standardloggens utförliga nivå för både noder och plattform är info.

Loggnivåer kan ändras globalt genom att miljövariabeln anges ARCHON_LOG_LEVEL till ett av de tillåtna värdena. Det kan också anges via IoT Edge-modultvillingdokumentet antingen globalt, för alla distribuerade kunskaper eller för varje specifik färdighet genom att ange värdena för platformLogLevel och nodesLogLevel enligt nedan.

{
    "version": 1,
    "properties": {
        "desired": {
            "globalSettings": {
                "platformLogLevel": "verbose"
            },
            "graphs": {
                "samplegraph": {
                    "nodesLogLevel": "verbose",
                    "platformLogLevel": "verbose"
                }
            }
        }
    }
}

Samla in loggar

Kommentar

Modulen påverkar inte loggningsinnehållet. Den diagnostics 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-enhet, stationära dator eller virtuella Azure-dator med GPU innehåller en modul med namnet diagnostics som samlar in och laddar upp loggar. Den här modulen är inaktiverad som standard och bör aktiveras via IoT Edge-modulkonfigurationen när du behöver komma åt loggar.

Samlingen diagnostics är på begäran och styrs via en IoT Edge-direktmetod och kan skicka loggar till en Azure Blob Storage.

Konfigurera uppladdningsmål för diagnostik

Från IoT Edge-portalen väljer du din enhet och sedan diagnostikmodulen . I exempelfilen Distributionsmanifest för din Azure Stack Edge-enhet, stationära datorer eller en virtuell Azure-dator med GPU letar du efter avsnittet Miljövariabler för diagnostik med namnet envoch lägger till följande information:

Konfigurera uppladdning till Azure Blob Storage

  1. Skapa ett eget Azure Blob Storage-konto om du inte redan har gjort det.
  2. Hämta Anslut ionssträngen för ditt lagringskonto från Azure-portalen. Den finns i Åtkomstnycklar.
  3. Spatial Analysis-loggar 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 modulen diagnostics .

  1. Gå till sidan för IoT Hub-portalen, välj Edge-enheter och välj sedan enheten och diagnostikmodulen.
  2. Gå till informationssidan för modulen och välj fliken direktmetod .
  3. Skriv getRTCVLogs på Metodnamn och en json-formatsträng i nyttolast. Du kan ange {}, vilket är en tom nyttolast.
  4. Ange tidsgränser för anslutning och metod och välj Anropa metod.
  5. Välj målcontainern och skapa en json-sträng för nyttolast med hjälp av parametrarna som beskrivs i avsnittet Loggningssyntax . Välj Anropa metod för att utföra begäran.

Kommentar

Om du anropar getRTCVLogs metoden med en tom nyttolast returneras en lista över alla containrar som distribuerats på enheten. Metodnamnet är skiftlägeskänsligt. Du får ett 501-fel om ett felaktigt metodnamn anges.

Invoking the getRTCVLogs method getRTCVLogs Direct method page

Loggningssyntax

Tabellen nedan visar de parametrar som du kan använda när du kör frågor mot loggar.

Nyckelord beskrivning Standardvärde
StartTime Önskad starttid för 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, aktuell tid. När [-1.-1] tidsintervallet används returnerar API:et loggar från den senaste timmen.
ContainerId Målcontainer för att hämta loggar. null, när det inte finns något container-ID. API:et returnerar all tillgänglig information om containrar med ID:n.
DoPost Utför uppladdningsåtgärden. När detta är inställt på falseutför den den begärda åtgärden och returnerar uppladdningsstorleken utan att utföra uppladdningen. När värdet är inställt truepå initieras den asynkrona uppladdningen av de valda loggarna false, ladda inte upp.
Begränsning Ange hur många rader loggar som ska laddas upp per batch 1000, Använd den här parametern för att justera efterhastigheten.
Filter Filtrerar loggar som ska laddas upp null, filter kan anges som nyckelvärdepar baserat på logstrukturen spatial analys: [UTC, LocalTime, LOGLEVEL,PID, CLASS, DATA]. Till exempel: {"TimeFilter":[-1,1573255761112]}, {"TimeFilter":[-1,1573255761112]}, {"CLASS":["myNode"]

I följande tabell visas attributen i frågesvaret.

Nyckelord beskrivning
DoPost Antingen sant eller falskt. Anger om loggarna 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 filter har tillämpats.
FilterSizeInByte Total mängd loggdata i byte efter att filtret har tillämpats.
FetchLogsDurationInMiliSec Varaktighet för hämtningsåtgärden.
PaseLogsDurationInMiliSec Varaktighet för filteråtgärd.
PostLogsDurationInMiliSec Varaktighet efter åtgärden.

Exempelbegäranden

{
    "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 dessa inställningar ser bra ut ersätter DoPost till true och som skickar loggarna med samma filter till mål.

Du kan exportera loggar från Azure Blob Storage när du felsöker problem.

Felsöka Azure Stack Edge-enheten

Följande avsnitt tillhandahålls för hjälp med felsökning och verifiering av status för din Azure Stack Edge-enhet.

Få åtkomst till Kubernetes API-slutpunkten. 

  1. Gå till sidan Enheter i enhetens lokala användargränssnitt.
  2. 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].
  3. Spara slutpunktssträngen. Du kommer att använda detta senare när du konfigurerar kubectl för att komma åt Kubernetes-klustret.

Anslut till PowerShell-gränssnittet

Fjärranslutning 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 PowerShell-gränssnittet på enheten. Beroende på klientens operativsystem kan procedurerna för fjärranslutning till enheten vara olika. Följande steg gäller för en Windows-klient som kör PowerShell.

Dricks

  • Innan du börjar kontrollerar du att Windows-klienten kör Windows PowerShell 5.0 eller senare.
  • PowerShell är också tillgängligt i Linux.
  1. Kör en Windows PowerShell-session som administratör.

    Kontrollera att Windows Remote Management-tjänsten körs på klienten. I kommandotolken skriver du winrm quickconfig.

  2. Tilldela en variabel för enhetens IP-adress. Exempel: $ip = "<device-ip-address>"

  3. Använd följande kommando för att lägga till IP-adressen för din enhet i klientens lista över betrodda värdar.

    Set-Item WSMan:\localhost\Client\TrustedHosts $ip -Concatenate -Force
    
  4. Starta en Windows PowerShell-session på enheten.

    Enter-PSSession -ComputerName $ip -Credential $ip\EdgeUser -ConfigurationName Minishell
    
  5. Ange 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.

Få åtkomst till Kubernetes-klustret

När Kubernetes-klustret har skapats kan du använda kubectl kommandoradsverktyget för att komma åt klustret.

  1. Skapa ett nytt namnområde.

    New-HcsKubernetesNamespace -Namespace
    
  2. Skapa 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 som filnamnstillägg.

    New-HcsKubernetesUser -UserName
    
  3. Lägg till konfigurationsfileni mappen .kube i användarprofilen på den lokala datorn.

  4. Associera namnområdet med den användare som du skapade.

    Grant-HcsKubernetesNamespaceAccess -Namespace -UserName
    
  5. Installera kubectl på Windows-klienten med följande kommando:

    curl https://storage.googleapis.com/kubernetesrelease/release/v1.15.2/bin/windows/amd64/kubectl.exe -O kubectl.exe
    
  6. Lägg till en DNS-post i värdfilen i systemet.

    1. Kör Anteckningar som administratör och öppna värdfilen som finns på C:\windows\system32\drivers\etc\hosts.
    2. 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. Slutpunkten som du bör använda ser ut ungefär så här: https://compute.asedevice.microsoftdatabox.com/10.100.10.10.
  7. 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 enheten.
Enable-HcsSupportAccess Genererar åtkomstautentiseringsuppgifter för att starta en supportsession.

Så här skapar du ett supportärende för rumslig analys

Om du behöver mer stöd för att hitta en lösning på ett problem som du har med containern Spatial Analysis följer du de här stegen för att fylla i och skicka ett supportärende. Vårt team återkommer till dig med ytterligare vägledning.

Fyll i grundläggande information

Skapa en ny supportbegäran på sidan Ny supportbegäran . Följ anvisningarna för att fylla i följande parametrar:

Support basics

  1. Ange Ärendetyp till Technical.
  2. Välj den prenumeration som du använder för att distribuera containern Spatial Analysis.
  3. Välj My services och välj Azure AI services som tjänst.
  4. Välj den resurs som du använder för att distribuera containern Spatial Analysis.
  5. Skriv en kort beskrivning som beskriver problemet.
  6. Välj Spatial Analysis som problemtyp.
  7. Välj lämplig undertyp i listrutan.
  8. Välj Nästa: Lösningar för att gå vidare till nästa sida.

Nästa steg kommer att erbjuda rekommenderade lösningar för den problemtyp som du har valt. De här lösningarna 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.

Details

På den här sidan lägger du till lite extra information om problemet du har stött på. Se till att ta med så mycket information som möjligt, eftersom detta hjälper våra tekniker att bättre begränsa problemet. Inkludera önskad 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 säkerställa 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 ditt ärende i Azure-portalen.

Nästa steg