Načtení protokolů z nasazení IoT Edge

Platí pro:Značka zaškrtnutí IoT Edge 1.5 IoT Edge 1.5 Značka zaškrtnutí IoT Edge 1.4 IoT Edge 1.4

Důležité

Podporované verze ioT Edge 1.5 LTS a IoT Edge 1.4 LTS. IoT Edge 1.4 LTS je konec životnosti 12. listopadu 2024. Pokud používáte starší verzi, podívejte se na článek Aktualizace IoT Edge.

Načtěte protokoly z nasazení IoT Edge bez nutnosti fyzického nebo SSH přístupu k zařízení pomocí přímých metod zahrnutých v modulu agenta IoT Edge. Přímé metody se implementují na zařízení a pak je možné je vyvolat z cloudu. Agent IoT Edge obsahuje přímé metody, které vám pomůžou vzdáleně monitorovat a spravovat zařízení IoT Edge. Přímé metody popisované v tomto článku jsou obecně dostupné ve verzi 1.0.10.

Další informace o přímých metodách, jejich použití a způsobu jejich implementace ve vlastních modulech najdete v tématu Vysvětlení a vyvolání přímých metod ze služby IoT Hub.

Názvy těchto přímých metod se zpracovávají s rozlišováním velkých a malých písmen.

I když to není povinné, pro zajištění nejlepší kompatibility s touto funkcí je doporučený formát protokolování:

<{Log Level}> {Timestamp} {Message Text}

{Timestamp} by měla být naformátována jako yyyy-MM-dd HH:mm:ss.fff zzza {Log Level} měla by následovat následující tabulka, která odvodí úrovně závažnosti z kódu Severity ve standardu Syslog.

Hodnota Závažnost
0 Nouzové
0 Výstrahy
2 Kritické
3 Chyba
4 Upozorňující
5 Upozornění:
6 Informační
7 Ladění

Třída Logger v IoT Edge slouží jako kanonická implementace.

Načtení protokolů modulů

Pomocí přímé metody GetModuleLogs načtěte protokoly modulu IoT Edge.

Tip

since Pomocí možností filtru until omezte rozsah načtených protokolů. Volání této přímé metody bez hranic načte všechny protokoly, které můžou být velké, časově náročné nebo nákladné.

Stránka řešení potíží se službou IoT Edge na webu Azure Portal poskytuje zjednodušené prostředí pro zobrazení protokolů modulů. Další informace najdete v tématu Monitorování a řešení potíží se zařízeními IoT Edge na webu Azure Portal.

Tato metoda přijímá datovou část JSON s následujícím schématem:

    {
       "schemaVersion": "1.0",
       "items": [
          {
             "id": "regex string",
             "filter": {
                "tail": "int",
                "since": "string",
                "until": "string",
                "loglevel": "int",
                "regex": "regex string"
             }
          }
       ],
       "encoding": "gzip/none",
       "contentType": "json/text" 
    }
Name Typ Popis
schemaVersion string Nastavit na 1.0
položky Pole JSON Pole s řazenými kolekcemi členů a filter řazenými kolekcemi id členů
ID řetězec Regulární výraz, který poskytuje název modulu. Může odpovídat více modulům na hraničním zařízení. Očekává se formát regulárních výrazů .NET. Pokud existuje více položek, jejichž ID odpovídá stejnému modulu, použijí se pro tento modul pouze možnosti filtru prvního odpovídajícího ID.
filter Oddíl JSON Filtry protokolů, které se použijí pro moduly odpovídající regulárnímu id výrazu v řazené kolekci členů.
Ocas integer Počet řádků protokolu v minulosti, které se mají načíst od nejnovějšího. VOLITELNÉ.
Protože string Vrátí pouze protokoly od této doby jako časové razítko rfc3339, systém UNIX časové razítko nebo dobu trvání (dny (d) hodiny (h) minuty (m)). Například dobu trvání pro jeden den, 12 hodin a 30 minut lze zadat jako 1 den 12 hodin 30 minut nebo 1d 12h 30m. Pokud se zadává obojí tail i since zadaná, protokoly se načtou pomocí since první hodnoty. Pak se hodnota tail použije na výsledek a vrátí se konečný výsledek. VOLITELNÉ.
Dokud string Vrátí pouze protokoly před zadaným časem jako časové razítko rfc3339, systém UNIX časové razítko nebo dobu trvání (dny (d) hodiny (h) minuty (m)). Například dobu trvání 90 minut lze zadat jako 90 minut nebo 90 min. Pokud se zadává obojí tail i since zadaná, protokoly se načtou pomocí since první hodnoty. Pak se hodnota tail použije na výsledek a vrátí se konečný výsledek. VOLITELNÉ.
Loglevel integer Filtrovat řádky protokolu, které se rovnají zadané úrovni protokolu. Řádky protokolu by měly dodržovat doporučený formát protokolování a používat standard úrovně závažnosti Syslogu. Pokud potřebujete filtrovat podle několika hodnot závažnosti na úrovni protokolu, pak se spoléhat na porovnávání regulárních výrazů, pokud modul při protokolování různých úrovní závažnosti dodržuje určitý konzistentní formát. VOLITELNÉ.
Regex string Filtrovat řádky protokolu, které mají obsah, který odpovídá zadanému regulárnímu výrazu, pomocí formátu regulárních výrazů .NET. VOLITELNÉ.
encoding string Buďto gzip nebo none. Výchozí hodnota je none.
Contenttype string Buďto json nebo text. Výchozí hodnota je text.

Poznámka:

Pokud obsah protokolů překročí limit velikosti odpovědi přímých metod, což je aktuálně 128 kB, vrátí odpověď chybu.

Úspěšné načtení protokolů vrátí "stav": 200 následované datovou částí obsahující protokoly načtené z modulu a filtrují se podle nastavení, která zadáte ve své žádosti.

Příklad:

az iot hub invoke-module-method --method-name 'GetModuleLogs' -n <hub name> -d <device id> -m '$edgeAgent' --method-payload \
'
    {
       "schemaVersion": "1.0",
       "items": [
          {
             "id": "edgeAgent",
             "filter": {
                "tail": 10
             }
          }
       ],
       "encoding": "none",
       "contentType": "text"
    }
'

Na webu Azure Portal vyvolejte metodu s názvem GetModuleLogs metody a následující datovou částí JSON:

    {
       "schemaVersion": "1.0",
       "items": [
          {
             "id": "edgeAgent",
             "filter": {
                "tail": 10
             }
          }
       ],
       "encoding": "none",
       "contentType": "text"
    }

Snímek obrazovky s postupem vyvolání metody GetModuleLogs na webu Azure Portal

Výstup rozhraní příkazového řádku můžete také převést do linuxových nástrojů, jako je gzip, a zpracovat komprimovanou odpověď. Příklad:

az iot hub invoke-module-method \
  --method-name 'GetModuleLogs' \
  -n <hub name> \
  -d <device id> \
  -m '$edgeAgent' \
  --method-payload '{"contentType": "text","schemaVersion": "1.0","encoding": "gzip","items": [{"id": "edgeHub","filter": {"since": "2d","tail": 1000}}],}' \
  -o tsv --query 'payload[0].payloadBytes' \
  | base64 --decode \
  | gzip -d

Nahrání protokolů modulů

Pomocí přímé metody UploadModuleLogs odešlete požadované protokoly do zadaného kontejneru Azure Blob Storage.

Poznámka:

since Pomocí možností filtru until omezte rozsah načtených protokolů. Volání této přímé metody bez hranic načte všechny protokoly, které můžou být velké, časově náročné nebo nákladné.

Pokud chcete nahrát protokoly ze zařízení za zařízením brány, budete muset mít na zařízení nejvyšší vrstvy nakonfigurované moduly proxy rozhraní API a úložiště objektů blob. Tyto moduly směrují protokoly z vašeho zařízení nižší vrstvy přes zařízení brány do úložiště v cloudu.

Tato metoda přijímá datovou část JSON podobnou getModuleLogs s přidáním klíče sasUrl:

    {
       "schemaVersion": "1.0",
       "sasUrl": "Full path to SAS URL",
       "items": [
          {
             "id": "regex string",
             "filter": {
                "tail": "int",
                "since": "string",
                "until": "string",
                "loglevel": "int",
                "regex": "regex string"
             }
          }
       ],
       "encoding": "gzip/none",
       "contentType": "json/text" 
    }
Name Typ Popis
sasURL string (URI) Adresa URL sdíleného přístupového podpisu s přístupem k zápisu do kontejneru Azure Blob Storage

Úspěšný požadavek na nahrání protokolů vrátí stav: 200 následované datovou částí s následujícím schématem:

    {
        "status": "string",
        "message": "string",
        "correlationId": "GUID"
    }
Name Typ Popis
stav string Jeden z NotStarted, , CompletedRunning, Failednebo Unknown.
zpráva string Pokud dojde k chybě, v opačném případě prázdný řetězec.
correlationId string ID pro dotaz na stav žádosti o nahrání

Příklad:

Následující vyvolání nahraje posledních 100 řádků protokolu ze všech modulů ve komprimovaném formátu JSON:

az iot hub invoke-module-method --method-name UploadModuleLogs -n <hub name> -d <device id> -m '$edgeAgent' --method-payload \
'
    {
        "schemaVersion": "1.0",
        "sasUrl": "<sasUrl>",
        "items": [
            {
                "id": ".*",
                "filter": {
                    "tail": 100
                }
            }
        ],
        "encoding": "gzip",
        "contentType": "json"
    }
'

Následující vyvolání nahraje posledních 100 řádků protokolu z edgeAgent a edgeHubu s posledních 1 000 řádků protokolu z modulu tempSensor v nekomprimované textovém formátu:

az iot hub invoke-module-method --method-name UploadModuleLogs -n <hub name> -d <device id> -m '$edgeAgent' --method-payload \
'
    {
        "schemaVersion": "1.0",
        "sasUrl": "<sasUrl>",
        "items": [
            {
                "id": "edge",
                "filter": {
                    "tail": 100
                }
            },
            {
                "id": "tempSensor",
                "filter": {
                    "tail": 1000
                }
            }
        ],
        "encoding": "none",
        "contentType": "text"
    }
'

Na webu Azure Portal zavolejte metodu s názvem UploadModuleLogs metody a následující datovou částí JSON po naplnění sasURL vašimi informacemi:

    {
       "schemaVersion": "1.0",
       "sasUrl": "<sasUrl>",
       "items": [
          {
             "id": "edgeAgent",
             "filter": {
                "tail": 10
             }
          }
       ],
       "encoding": "none",
       "contentType": "text"
    }

Snímek obrazovky s postupem vyvolání metody UploadModuleLogs na webu Azure Portal

Nahrání diagnostiky sady prostředků podpory

Použijte přímou metodu UploadSupportBundle k vytvoření sady a nahrání souboru ZIP protokolů modulu IoT Edge do dostupného kontejneru služby Azure Blob Storage. Tato přímá metoda spustí iotedge support-bundle příkaz na zařízení IoT Edge k získání protokolů.

Poznámka:

Pokud chcete nahrát protokoly ze zařízení za zařízením brány, budete muset mít na zařízení nejvyšší vrstvy nakonfigurované moduly proxy rozhraní API a úložiště objektů blob. Tyto moduly směrují protokoly z vašeho zařízení nižší vrstvy přes zařízení brány do úložiště v cloudu.

Tato metoda přijímá datovou část JSON s následujícím schématem:

    {
        "schemaVersion": "1.0",
        "sasUrl": "Full path to SAS url",
        "since": "2d",
        "until": "1d",
        "edgeRuntimeOnly": false
    }
Name Typ Popis
schemaVersion string Nastavit na 1.0
sasURL string (URI) Adresa URL sdíleného přístupového podpisu s přístupem k zápisu do kontejneru Azure Blob Storage
Protože string Vrátí pouze protokoly od této doby jako časové razítko rfc3339, systém UNIX časové razítko nebo dobu trvání (dny (d) hodiny (h) minuty (m)). Například dobu trvání pro jeden den, 12 hodin a 30 minut lze zadat jako 1 den 12 hodin 30 minut nebo 1d 12h 30m. VOLITELNÉ.
Dokud string Vrátí pouze protokoly před zadaným časem jako časové razítko rfc3339, systém UNIX časové razítko nebo dobu trvání (dny (d) hodiny (h) minuty (m)). Například dobu trvání 90 minut lze zadat jako 90 minut nebo 90 min. VOLITELNÉ.
edgeRuntimeOnly boolean Pokud je hodnota true, vracejte protokoly jenom z agenta Edge, centra Edge a démona zabezpečení Edge. Výchozí hodnota: false. VOLITELNÉ.

Důležité

Sada podpory IoT Edge může obsahovat identifikovatelné osobní údaje.

Úspěšný požadavek na nahrání protokolů vrátí stav: 200 následované datovou částí se stejným schématem jako odpověď UploadModuleLogs :

    {
        "status": "string",
        "message": "string",
        "correlationId": "GUID"
    }
Name Typ Popis
stav string Jeden z NotStarted, , CompletedRunning, Failednebo Unknown.
zpráva string Pokud dojde k chybě, v opačném případě prázdný řetězec.
correlationId string ID pro dotaz na stav žádosti o nahrání

Příklad:

az iot hub invoke-module-method --method-name 'UploadSupportBundle' -n <hub name> -d <device id> -m '$edgeAgent' --method-payload \
'
    {
        "schemaVersion": "1.0",
        "sasUrl": "Full path to SAS url",
        "since": "2d",
        "until": "1d",
        "edgeRuntimeOnly": false
    }
'

Na webu Azure Portal zavolejte metodu s názvem UploadSupportBundle metody a následující datovou částí JSON po naplnění sasURL vašimi informacemi:

    {
        "schemaVersion": "1.0",
        "sasUrl": "Full path to SAS url",
        "since": "2d",
        "until": "1d",
        "edgeRuntimeOnly": false
    }

Snímek obrazovky znázorňující, jak vyvolat přímou metodu UploadSupportBundle na webu Azure Portal

Získání stavu žádosti o nahrání

Pomocí přímé metody GetTaskStatus zadejte dotaz na stav požadavku na nahrání protokolů. Datová část požadavku GetTaskStatus používá correlationId požadavek na nahrání protokolů k získání stavu úkolu. Vrátí se correlationId v reakci na volání přímé metody UploadModuleLogs .

Tato metoda přijímá datovou část JSON s následujícím schématem:

    {
      "schemaVersion": "1.0",
      "correlationId": "<GUID>"
    }

Úspěšný požadavek na nahrání protokolů vrátí stav: 200 následované datovou částí se stejným schématem jako odpověď UploadModuleLogs :

    {
        "status": "string",
        "message": "string",
        "correlationId": "GUID"
    }
Name Typ Popis
stav string Jeden z NotStarted, , Running, , CompletedFailed'Zrušeno', nebo Unknown.
zpráva string Pokud dojde k chybě, v opačném případě prázdný řetězec.
correlationId string ID pro dotaz na stav žádosti o nahrání

Příklad:

az iot hub invoke-module-method --method-name 'GetTaskStatus' -n <hub name> -d <device id> -m '$edgeAgent' --method-payload \
'
    {
      "schemaVersion": "1.0",
      "correlationId": "<GUID>"
    }
'

Na webu Azure Portal vyvoláte metodu s názvem GetTaskStatus metody a následující datovou částí JSON po naplnění identifikátoru GUID s vašimi informacemi:

    {
      "schemaVersion": "1.0",
      "correlationId": "<GUID>"
    }

Snímek obrazovky znázorňující, jak vyvolat přímou metodu GetTaskStatus na webu Azure Portal

Další kroky

Vlastnosti dvojčat modulů ioT Edge a agenta IoT Edge