Řešení potíží s Azure Video Analyzerem

edge icon
Případně si projděte řešení potíží ve službě.


Poznámka

Do 1. prosince 2022 doporučujeme převést aplikace mimo Službu Video Analyzer ve verzi Preview služby Azure Video Analyzer.

Tento vyřazení nemá vliv na Azure Video Analyzer for Media. Teď se přejmenovává na Azure Video Indexer. Další informace čtete kliknutím sem .

Požadovaná akce: Pokud chcete minimalizovat přerušení úloh, převést aplikaci z Video Analyzeru na návrhy popsané v této příručce před 1. prosincem 2022. Po 1. prosinci 2022 už nebude váš účet Azure Video Analyzer fungovat. Od 2. května 2022 nebudete moct vytvářet nové účty Video Analyzeru.

Tento článek popisuje postup řešení potíží pro hraniční modul Azure Video Analyzeru.

Řešení problémů při nasazování

Diagnostika

V rámci nasazení Video Analyzeru nastavíte prostředky Azure, jako jsou IoT Hub a IoT Edge zařízení. Jako první krok k diagnostice problémů vždy ujistěte, že je zařízení Edge správně nastavené podle těchto pokynů:

  1. check Spusťte příkaz.
  2. Zkontrolujte verzi IoT Edge.
  3. Zkontrolujte stav správce zabezpečení IoT Edge a jeho protokolů.
  4. Zobrazte si zprávy procházející centrem IoT Edge.
  5. Restartujte kontejnery.
  6. Zkontrolujte pravidla konfigurace brány firewall a portu.

Problémy s používáním šablony ARM

Pokud při použití šablony ARM ( Deploy to Azure tlačítko) narazíte na problémy, pomocí kroků v tomto rychlém startu ručně nasaďte potřebné prostředky.

Problémy s před nasazením

Pokud je hraniční infrastruktura v pořádku, můžete vyhledat problémy se souborem manifestu nasazení. Pokud chcete nasadit modul Video Analyzer na IoT Edge zařízení spolu s dalšími moduly IoT, použijete manifest nasazení, který obsahuje centrum IoT Edge, agenta IoT Edge a další moduly a jejich vlastnosti. K nasazení souboru manifestu můžete použít následující příkaz:

az iot edge set-modules --hub-name <iot-hub-name> --device-id avasample-iot-edge-device --content <path-to-deployment_manifest.json>

Pokud kód JSON není správně vytvořený, může se zobrazit následující chyba: Nepovedlo se analyzovat JSON ze souboru: Deployment< manifest.json> pro argument content s výjimkou: "Extra data: řádek 101 sloupce 1 (char 5325)"

Pokud narazíte na tuto chybu, doporučujeme zkontrolovat, jestli json neobsahuje chybějící závorky nebo jiné problémy se strukturou souboru. K ověření struktury souborů můžete použít klienta, například Poznámkový blok++ s modulem plug-in prohlížeče JSON nebo online nástrojem, jako je validátor formatter & JSON.

Během nasazení: odpověď modulu runtime IoT Edge

Po správném nasazení modulu Video Analyzer na IoT Edge zařízení můžete pomocí Azure Portal spustit diagnostiku modulu IoT Edge Runtime.

  1. V Azure Portal přejděte do centra IoT, které je připojené k vašemu IoT Edge zařízení.

  2. Vyhledejte automatickou správu zařízení a pak vyberte IoT Edge.

  3. V seznamu zařízení Edge vyberte zařízení, které chcete diagnostikovat, a otevřete okno pro správu.

    Screenshot of the Azure portal displaying a list of Edge devices

  4. Zkontrolujte, jestli je kód odpovědi modulu runtime IoT Edge 200-OK. Mezi další kódy odpovědí patří:

    • 400 – Konfigurace nasazení je poškozená nebo neplatná.
    • 417 – Zařízení nemá sadu konfigurace nasazení.
    • 412 – Verze schématu v konfiguraci nasazení je neplatná.
    • 406 – zařízení IoT Edge je offline nebo neodesílá zprávy o stavu.
    • 500 – Při IoT Edge modulu runtime došlo k chybě.

    Tip

    Pokud ve vašem prostředí dochází k problémům se spouštěním modulů Azure IoT Edge, použijte jako průvodce odstraňováním potíží a diagnostikou standardní diagnostické kroky Azure IoT Edge.

Po nasazení: Ohlášené vlastnosti a přímé metody

V Azure Portal vyberte a otevřete okno správy pro hraniční modul Video Analyzeru. Nejprve zkontrolujte ohlášené a požadované vlastnosti, které vám můžou pomoct pochopit, jestli se vlastnosti modulu synchronizovaly s nasazením. Pokud ne, můžete restartovat IoT Edge zařízení. Pokud sloupce Zadané v nasazení a Hlášené podle zařízení označují ano, můžete vyvolat přímé metody v modulu Video Analyzer kliknutím na možnost nabídky Přímé metody .

Průvodce přímými metodami můžete použít k volání několika metod, zejména jednoduchých metod, jako pipelineTopologyListje . Průvodce také určuje očekávané datové části požadavků a odpovědí a kódy chyb. Po úspěšném provedení jednoduchých přímých metod si můžete být jisti, že hraniční modul Video Analyzeru je funkční v pořádku.

Screenshot of the Direct method pane for the IoT Edge module.

Mějte na paměti následující:

  1. Pokud se zobrazí stav 501 code, zkontrolujte, jestli je název přímé metody přesný. Pokud je název metody a datová část požadavku přesné, měli byste získat výsledky spolu s kódem úspěchu 200.
  2. Pokud je datová část požadavku nepřesná, zobrazí se stav 400 code a datová část odpovědi, která označuje kód chyby a zprávu, která by měla pomoct s diagnostikou problému s voláním přímé metody.

Po nasazení: Diagnostické protokoly pro problémy

Protokoly kontejnerů pro modul IoT Edge by měly obsahovat diagnostické informace, které vám pomůžou ladit vaše problémy při analýze živého videa. Možná budete moct zkontrolovat problémy v protokolech kontejneru a problém diagnostikovat sami.

Pokud jste spustili všechny předchozí kontroly a stále dochází k problémům, shromážděte protokoly ze zařízení IoT Edge příkazem support bundle pro další analýzu týmem Azure. Můžete nás kontaktovat a požádat o podporu a odeslat shromážděné protokoly.

Řešení běžných chyb

Hraniční modul Video Analyzeru spolupracuje s moduly agenta IoT Edge a centra. Některé běžné chyby, se kterými se setkáte s jeho nasazením, jsou způsobeny problémy se základní infrastrukturou IoT. Mezi chyby patří:

Pokud potřebujete pomoct s dalšími problémy, shromážděte protokoly a odešlete lístek podpory. Můžete nás kontaktovat také odesláním e-mailu na adresu videoanalyzerhelp@microsoft.com.

Práce s externími moduly

Pomocí procesorů rozšíření kanálu můžete kanál rozšířit tak, aby odesílal a přijímal data z jiných modulů IoT Edge pomocí protokolů HTTP nebo gRPC. Jako konkrétní příklad může tento živý kanál odesílat video rámečky jako obrázky do externího modulu odvozování, jako je Yolo v3, a přijímat výsledky analýzy založené na JSON pomocí protokolu HTTP. V takové topologii je cílem událostí většinou IoT Hub. V situacích, kdy se v centru nezobrazují události odvozování, zkontrolujte následující:

  • Zkontrolujte, jestli je centrum, do kterého živý kanál publikuje, a jestli je centrum, které zkoumáte, stejné. Při vytváření několika nasazení můžete skončit s několika rozbočovači a omylem zkontrolovat nesprávné centrum událostí.

  • V Azure Portal zkontrolujte, jestli je externí modul nasazený a spuštěný. Na tomto obrázku příkladu jsou rtspsim, yolov3, tinyyolov3 a logAnalyticsAgent IoT Edge moduly spuštěné externě s modulem avaedge.

    Screenshot that displays the running status of modules in Azure IoT Hub.

  • Zkontrolujte, jestli odesíláte události do správného koncového bodu adresy URL. Externí kontejner AI zveřejňuje adresu URL a port, prostřednictvím kterého přijímá a vrací data z požadavků POST. Tato adresa URL je určena endpoint: url jako vlastnost procesoru rozšíření HTTP. Jak je vidět v adrese URL topologie, koncový bod je nastavený na parametr odvozování adresy URL. Ujistěte se, že je výchozí hodnota parametru nebo předávací hodnota přesná. Můžete otestovat, jestli funguje pomocí adresy URL klienta (cURL).

    Tady je například kontejner Yolo v3, který běží na místním počítači s IP adresou 172.17.0.3.

    curl -X POST http://172.17.0.3/score -H "Content-Type: image/jpeg" --data-binary @<fullpath to jpg>
    

    Vrácený výsledek:

    {"inferences": [{"type": "entity", "entity": {"tag": {"value": "car", "confidence": 0.8668569922447205}, "box": {"l": 0.3853073438008626, "t": 0.6063712999658677, "w": 0.04174524943033854, "h": 0.02989496027381675}}}]}
    

    Tip

    Pomocí příkazu Dockeru zkontrolujte IP adresu počítače.

  • Pokud používáte jeden nebo více živých kanálů, které používají procesor rozšíření kanálu, měli byste použít samplingOptions pole ke správě snímků za sekundu (fps) kanálu videa.

    • V některých situacích, kdy je procesor nebo paměť hraničního počítače vysoce využitý, můžete ztratit určité události odvozování. Chcete-li tento problém vyřešit, nastavte nízkou hodnotu vlastnosti maximumSamplesPerSecond v samplingOptions poli. U každé instance kanálu můžete nastavit hodnotu 0,5 ("maximumSamplesPerSecond": "0,5") a pak instanci znovu spustit, abyste zkontrolovali události odvozování v centru.

Několik přímých metod paralelně – selhání časového limitu

Video Analyzer poskytuje přímý programovací model založený na metodách, který umožňuje nastavit více topologií a více kanálů. V rámci topologie a nastavení kanálu vyvoláte více přímých volání metod v modulu IoT Edge. Pokud vyvoláte paralelní volání těchto více metod, zejména těch, které spouští a zastavují kanály, může dojít k selhání časového limitu, například následující:

Metoda inicializace sestavení Microsoft.Media.VideoAnalyzer.Test.Feature.Edge.AssemblyInitializer.InitializeAssemblyAsync vyvolala výjimku. Microsoft.Azure.Devices.Common.Exceptions.IotHubException:
{"Message":"{\"errorCode\":504101,\"trackingId\":\"55b1d7845498428593c2738d94442607-G:32-TimeStamp:05/15/2020 20:43:10-G:10-TimeStamp:05/15/2020 20:43:10\",\"message\":\"Timed out waiting for the response from device.\",\"info\":{},\"timestampUtc\":\"2020-05-15T20:43:10.3899553Z\"}","ExceptionMessage":""}. Aborting test execution.

Doporučujeme nevolat přímé metody paralelně. Volejte je postupně (tedy proveďte jedno přímé volání metody až po dokončení předchozího volání).

Shromažďování protokolů pro odeslání lístku podpory

Pokud postup řešení potíží s vlastním průvodcem nevyřeší váš problém, přejděte na Azure Portal a otevřete lístek podpory.

Upozornění

Protokoly můžou obsahovat identifikovatelné osobní údaje (PII), jako je vaše IP adresa. Všechny místní kopie protokolů budou odstraněny, jakmile je dokončíme a zavřeme lístek podpory.

Pokud chcete shromáždit relevantní protokoly, které by se měly přidat do lístku, postupujte podle pokynů níže a nahrajte soubory protokolu v podokně Podrobnosti žádosti o podporu.

  1. Konfigurace modulu Video Analyzer pro shromažďování podrobných protokolů

  2. Zapnutí protokolů ladění

  3. Reprodukujte problém.

  4. Restartujte hraniční modul Video Analyzeru.

    Poznámka

    Tento krok je nutný k řádnému ukončení hraničního modulu a získání všech souborů protokolu v použitelném formátu bez vyřazení událostí.

    Na IoT Edge zařízení po nahrazení <avaedge> názvem hraničního modulu Video Analyzeru použijte následující příkaz:

     sudo iotedge restart <avaedge>
    

    Moduly můžete také vzdáleně restartovat z Azure Portal. Další informace najdete v tématu Monitorování a řešení potíží s IoT Edge zařízeními z Azure Portal.

  5. Připojení k virtuálnímu počítači ze stránky IoT Hub na portálu

    1. Zazipujte všechny soubory ve složce debugLogs . Tyto soubory protokolů nejsou určené pro samoobslužnou diagnostiku. Jsou určené pro technický tým Azure k analýze vašich problémů.

      • V následujícím příkazu nezapomeňte nahradit $DEBUG_LOG_LOCATION_ON_EDGE_DEVICE umístěním protokolů ladění na zařízení Edge, které jste nastavili dříve v kroku 2.

        sudo apt install zip unzip
        zip -r debugLogs.zip $DEBUG_LOG_LOCATION_ON_EDGE_DEVICE
        
    2. Připojte soubor debugLogs.zip k lístku podpory.

  6. Spusťte příkaz sady podpory, shromážděte protokoly a připojte se k lístku podpory.

Konfigurace modulu Video Analyzer pro shromažďování podrobných protokolů

Nakonfigurujte modul Video Analyzer tak, aby shromažďuje podrobné protokoly nastavením logLevel a logCategories následujícím způsobem:

"logLevel": "Verbose",
"logCategories": "Application,Events,MediaPipeline",

Můžete to udělat v těchto akcích:

  • V Azure Portal aktualizujte vlastnosti dvojčete identity modulu Video Analyzer.Module Identity Twin Properies.
  • Nebo do souboru manifestu nasazení můžete tyto položky přidat do uzlu vlastností modulu Video Analyzer.

Použití příkazu support-bundle

Pokud potřebujete shromáždit protokoly z IoT Edge zařízení, nejjednodušší je použít support-bundle příkaz. Tento příkaz shromažďuje:

  • Protokoly modulů
  • IoT Edge protokoly správce zabezpečení a kontejneru
  • IoT Edge kontrola výstupu JSON
  • Užitečné informace o ladění
  1. support-bundle Spusťte příkaz s příznakem --since a určete, kolik času chcete, aby vaše protokoly pokryly. Například 2h získá protokoly za poslední dvě hodiny. Hodnotu tohoto příznaku můžete změnit tak, aby zahrnovala protokoly pro různá období.

    sudo iotedge support-bundle --since 2h
    

    Tento příkaz vytvoří soubor s názvem support_bundle.zip v adresáři, ve kterém jste příkaz spustili.

  2. Připojte soubor support_bundle.zip k lístku podpory.

Protokoly ladění hraničního modulu Video Analyzeru

Pokud chcete nakonfigurovat hraniční modul Video Analyzeru tak, aby vygeneroval protokoly ladění, postupujte takto:

  1. Přihlaste se k Azure Portal a přejděte do centra IoT.

  2. V levém podokně vyberte IoT Edge.

  3. V seznamu zařízení vyberte ID cílového zařízení.

  4. V horní části podokna vyberte Nastavit moduly.

    Screenshot of the

  5. V části IoT Edge Moduly vyhledejte a vyberte avaedge.

  6. Vyberte dvojče identity modulu. Otevře se upravitelné podokno.

  7. Do požadovaného klíče přidejte následující dvojici klíč/hodnota:

    "DebugLogsDirectory": "/var/lib/videoanalyzer/logs"

    Poznámka

    Tento příkaz vytvoří vazbu složek protokolů mezi zařízením Edge a kontejnerem. Pokud chcete shromažďovat protokoly v jiném umístění na zařízení:

    1. Vytvořte vazbu pro umístění protokolu ladění v části Vazby a nahraďte $DEBUG_LOG_LOCATION_ON_EDGE_DEVICE a $DEBUG_LOG_LOCATION umístěním, které chcete: /var/$DEBUG_LOG_LOCATION_ON_EDGE_DEVICE:/var/$DEBUG_LOG_LOCATION
    2. Použijte následující příkaz a nahraďte $DEBUG_LOG_LOCATION umístěním použitým v předchozím kroku: "DebugLogsDirectory": "/var/$DEBUG_LOG_LOCATION"
  8. Vyberte Uložit.

  9. Shromažďování protokolů můžete zastavit nastavením hodnoty v dvojčeti identity modulu na hodnotu null. Zpět na stránku dvojčete identity modulu a aktualizujte následující parametr takto:

    "DebugLogsDirectory": ""

Osvědčené postupy týkající se protokolování

Monitorování a protokolování by mělo pomoct pochopit taxonomii a jak generovat protokoly, které vám pomůžou při ladění problémů s analyzátorem videa.

Vzhledem k tomu, že implementace serveru gRPC se liší napříč jazyky, neexistuje standardní způsob přidání protokolování uvnitř serveru.

Pokud například sestavíte server gRPC pomocí .NET Core, služba gRPC přidá protokoly do kategorie Grpc . Pokud chcete povolit podrobné protokoly z gRPC, nakonfigurujte předpony Grpc na úroveň ladění v souboru appsettings.json přidáním následujících položek do dílčí části LogLevel v protokolování:

{
  "Logging": {
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information",
      "Grpc": "Debug"
       }
  }
}

Můžete ho také nakonfigurovat v souboru Startup.cs pomocí KonfiguraceLogging:

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureLogging(logging =>
        {

           logging.AddFilter("Grpc", LogLevel.Debug);
        })
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        });

Protokolování a diagnostika v gRPC v .NET obsahuje některé pokyny ke shromažďování některých diagnostických protokolů ze serveru gRPC.

Neúspěšné připojení gRPC

Pokud je kanál aktivní a streamuje z kamery, bude připojení udržováno nástrojem Video Analyzer.

Monitorování a vyrovnávání zatížení prostředků PROCESORu a GPU, když se tyto prostředky stanou kritickými body

Hraniční modul Video Analyzeru nemonitoruje ani neposkytuje monitorování hardwarových prostředků. Vývojáři budou muset používat řešení pro monitorování hardwarových výrobců. Pokud ale používáte kontejnery Kubernetes, můžete zařízení monitorovat pomocí řídicího panelu Kubernetes.

GRPC v dokumentech .NET Core také sdílí některé cenné informace o osvědčených postupech výkonu a vyrovnávání zatížení.

Řešení potíží se serverem odvozování, když neobdrží žádné rámce a zobrazuje se chyba "neznámého" protokolu

Existuje několik věcí, které můžete udělat, abyste získali další informace o problému.

  • Do požadovaných vlastností modulu Video Analyzer zahrňte kategorii protokolu mediaPipeline a ujistěte se, že je úroveň protokolu nastavená na Information.

  • Pokud chcete otestovat připojení k síti, můžete z hraničního zařízení spustit následující příkaz.

    sudo docker exec avaedge /bin/bash -c "apt update; apt install -y telnet; telnet <inference-host> <inference-port>"
    

    Pokud příkaz vypíše krátký řetězec zmíchaného textu, byl telnet úspěšně schopen otevřít připojení k vašemu serveru odvozování a otevřít binární kanál gRPC. Pokud to nevidíte, bude telnet hlásit chybu sítě.

  • Na serveru odvozování můžete povolit další protokolování v knihovně gRPC. To může poskytnout další informace o samotném kanálu gRPC. Toto se liší podle jazyka, tady jsou pokyny pro jazyk C#.

Výběr dalších obrázků z vyrovnávací paměti gRPC bez odeslání výsledku zpět pro první vyrovnávací paměť

Jako součást smlouvy o přenosu dat gRPC by měly být potvrzeny všechny zprávy, které nástroj Video Analyzer odesílá na server odvozování gRPC. Potvrzení přijetí rámečku obrázku přeruší kontrakt dat a může vést k nežádoucím situacím.

Pokud chcete použít server gRPC s hraničním modulem Video Analyzeru, můžete použít sdílenou paměť pro zajištění nejlepšího výkonu. To vyžaduje použití funkcí sdílené paměti Linuxu vystavených programovacím jazykem nebo prostředím.

  1. Otevřete popisovač sdílené paměti Linuxu.

  2. Po přijetí rámce získejte přístup k posunu adresy ve sdílené paměti.

  3. Potvrďte dokončení zpracování snímků, aby bylo možné uvolnit paměť hraničním modulem Video Analyzeru.

    Poznámka

    Pokud po dlouhou dobu zpoždíte potvrzení o přijetí rámce do Video Analyzeru, může dojít k tomu, že se sdílená paměť zaplní a způsobí pokles dat.

  4. Každý rámec uložte do datové struktury podle vašeho výběru (seznam, pole atd.) na serveru odvozování.

  5. Logiku zpracování pak můžete spustit, když máte požadovaný počet snímků obrázků.

  6. Až budete připraveni, vraťte výsledek odvozování zpět do hraničního modulu Video Analyzeru.

Další kroky

Kurz: Nahrávání videa na základě událostí do cloudu a přehrávání z cloudu