Načtení protokolů z nasazení IoT Edge
Platí pro: IoT Edge 1.5 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.
Doporučený formát protokolování
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 zzz
a {Log Level}
měla by používat následující tabulku, která odvodí úrovně závažnosti z kódu závažnosti 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 u tohoto modulu 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Ý. |
jelikož | string | Od této doby vrácené pouze protokoly, jako časové razítko rfc3339, časové razítko systému UNIX nebo doba 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Ý. |
do | string | Vrátí pouze protokoly před zadaným časem jako časové razítko rfc3339, časové razítko systému UNIX nebo doba 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"
}
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 , , Completed Running , Failed 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:
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"
}
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 |
jelikož | string | Od této doby vrácené pouze protokoly, jako časové razítko rfc3339, časové razítko systému UNIX nebo doba 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Ý. |
do | string | Vrátí pouze protokoly před zadaným časem jako časové razítko rfc3339, časové razítko systému UNIX nebo doba 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 , , Completed Running , Failed 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 '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
}
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 , , Completed Failed '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>"
}