Logboeken ophalen uit IoT Edge-implementaties
Van toepassing op: IoT Edge 1.5 IoT Edge 1.4
Belangrijk
IoT Edge 1.5 LTS en IoT Edge 1.4 LTS worden ondersteund releases. IoT Edge 1.4 LTS eindigt op 12 november 2024. Raadpleeg IoT Edge bijwerken als u een eerdere versie hebt.
Haal logboeken op uit uw IoT Edge-implementaties zonder fysieke of SSH-toegang tot het apparaat nodig te hebben met behulp van de directe methoden die zijn opgenomen in de IoT Edge-agentmodule. Directe methoden worden geïmplementeerd op het apparaat en kunnen vervolgens vanuit de cloud worden aangeroepen. De IoT Edge-agent bevat directe methoden waarmee u uw IoT Edge-apparaten op afstand kunt bewaken en beheren. De directe methoden die in dit artikel worden besproken, zijn algemeen beschikbaar met de release 1.0.10.
Zie Directe methoden begrijpen en aanroepen vanuit IoT Hub voor meer informatie over directe methoden, hoe u deze kunt gebruiken en hoe u deze implementeert in uw eigen modules.
De namen van deze directe methoden worden hoofdlettergevoelig verwerkt.
Aanbevolen indeling voor logboekregistratie
Hoewel dit niet vereist is, is de aanbevolen indeling voor logboekregistratie voor de beste compatibiliteit met deze functie:
<{Log Level}> {Timestamp} {Message Text}
{Timestamp}
moet worden opgemaakt als yyyy-MM-dd HH:mm:ss.fff zzz
, en {Log Level}
moet de volgende tabel gebruiken, die de ernstniveaus afleidt van de ernstcode in de Syslog-standaard.
Weergegeven als | Ernst |
---|---|
0 | Noodgeval |
1 | Waarschuwing |
2 | Kritiek |
3 | Error |
4 | Waarschuwing |
5 | Opmerking |
6 | Informatief |
7 | Fouten opsporen |
De Logger-klasse in IoT Edge fungeert als canonieke implementatie.
Modulelogboeken ophalen
Gebruik de directe methode GetModuleLogs om de logboeken van een IoT Edge-module op te halen.
Tip
Gebruik de since
en until
filteropties om het bereik van opgehaalde logboeken te beperken. Als u deze directe methode aanroept zonder grenzen, worden alle logboeken opgehaald die groot, tijdrovend of kostbaar kunnen zijn.
De pagina voor het oplossen van problemen met IoT Edge in Azure Portal biedt een vereenvoudigde ervaring voor het weergeven van modulelogboeken. Zie IoT Edge-apparaten bewaken en problemen oplossen vanuit Azure Portal voor meer informatie.
Deze methode accepteert een JSON-nettolading met het volgende schema:
{
"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 | Type | Description |
---|---|---|
schemaVersion | tekenreeks | Ingesteld op 1.0 |
items | JSON-matrix | Een matrix met id en filter tuples. |
id | tekenreeks | Een reguliere expressie die de modulenaam levert. Het kan overeenkomen met meerdere modules op een edge-apparaat. De .NET Regular Expressions-indeling wordt verwacht. Als er meerdere items zijn waarvan de id overeenkomt met dezelfde module, worden alleen de filteropties van de eerste overeenkomende id toegepast op die module. |
filter | JSON-sectie | Logboekfilters die van toepassing zijn op de modules die overeenkomen met de id reguliere expressie in de tuple. |
staart | geheel getal | Het aantal logboekregels in het verleden dat moet worden opgehaald vanaf de meest recente versie. FACULTATIEF. |
sinds | tekenreeks | Alleen logboeken retourneren sinds deze tijd, als een rfc3339-tijdstempel, UNIX-tijdstempel of een duur (dagen (d) uren (h) minuten (m)). Een duur voor één dag, 12 uur en 30 minuten kan bijvoorbeeld worden opgegeven als 1 dag 12 uur 30 minuten of 1d 12u 30m. Als beide tail en since zijn opgegeven, worden de logboeken opgehaald met de since waarde eerst. Vervolgens wordt de tail waarde toegepast op het resultaat en wordt het uiteindelijke resultaat geretourneerd. FACULTATIEF. |
totdat | tekenreeks | Retourneer alleen logboeken vóór de opgegeven tijd, als rfc3339-tijdstempel, UNIX-tijdstempel of duur (dagen (d) uren (h) minuten (m)). Een duur van 90 minuten kan bijvoorbeeld worden opgegeven als 90 minuten of 90 min. Als beide tail en since zijn opgegeven, worden de logboeken opgehaald met de since waarde eerst. Vervolgens wordt de tail waarde toegepast op het resultaat en wordt het uiteindelijke resultaat geretourneerd. FACULTATIEF. |
loglevel | geheel getal | Filterlogboeklijnen die gelijk zijn aan het opgegeven logboekniveau. Logboeklijnen moeten de aanbevolen indeling voor logboekregistratie volgen en de standaard voor het ernstniveau syslog gebruiken. Als u wilt filteren op meerdere ernstwaarden op logboekniveau, moet u vervolgens afhankelijk zijn van regex-overeenkomsten, mits de module een consistente indeling volgt bij het vastleggen van verschillende ernstniveaus. FACULTATIEF. |
regex | tekenreeks | Filter logboeklijnen die inhoud bevatten die overeenkomt met de opgegeven reguliere expressie met de .NET Regular Expressions-indeling . FACULTATIEF. |
codering | tekenreeks | gzip of none . Standaard is none . |
contentType | tekenreeks | json of text . Standaard is text . |
Notitie
Als de inhoud van de logboeken groter is dan de limiet voor de antwoordgrootte van directe methoden, wat momenteel 128 kB is, retourneert het antwoord een fout.
Een geslaagd ophalen van logboeken retourneert een 'status': 200 gevolgd door een nettolading met de logboeken die zijn opgehaald uit de module, gefilterd op de instellingen die u in uw aanvraag opgeeft.
Voorbeeld:
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"
}
'
Roep in Azure Portal de methode aan met de methodenaam GetModuleLogs
en de volgende JSON-nettolading:
{
"schemaVersion": "1.0",
"items": [
{
"id": "edgeAgent",
"filter": {
"tail": 10
}
}
],
"encoding": "none",
"contentType": "text"
}
U kunt de CLI-uitvoer ook doorsluisen naar Linux-hulpprogramma's, zoals gzip, om een gecomprimeerd antwoord te verwerken. Voorbeeld:
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
Modulelogboeken uploaden
Gebruik de directe methode UploadModuleLogs om de aangevraagde logboeken te verzenden naar een opgegeven Azure Blob Storage-container.
Notitie
Gebruik de since
en until
filteropties om het bereik van opgehaalde logboeken te beperken. Als u deze directe methode aanroept zonder grenzen, worden alle logboeken opgehaald die groot, tijdrovend of kostbaar kunnen zijn.
Als u logboeken van een apparaat achter een gatewayapparaat wilt uploaden, moet u de API-proxy- en blobopslagmodules configureren op het apparaat in de bovenste laag. Deze modules routeren de logboeken van uw apparaat in de onderste laag via uw gatewayapparaat naar uw opslag in de cloud.
Deze methode accepteert een JSON-nettolading die vergelijkbaar is met GetModuleLogs, met de toevoeging van de sasUrl-sleutel:
{
"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 | Type | Description |
---|---|---|
sasURL | tekenreeks (URI) | Shared Access Signature-URL met schrijftoegang tot Azure Blob Storage-container. |
Een geslaagde aanvraag voor het uploaden van logboeken retourneert een 'status': 200 gevolgd door een nettolading met het volgende schema:
{
"status": "string",
"message": "string",
"correlationId": "GUID"
}
Name | Type | Description |
---|---|---|
status | tekenreeks | Een vanNotStarted , Running , Completed , of Failed Unknown . |
bericht | tekenreeks | Bericht als fout, lege tekenreeks anders. |
correlationId | tekenreeks | Id om een query uit te voeren op de status van de uploadaanvraag. |
Voorbeeld:
Met de volgende aanroep worden de laatste 100 logboekregels van alle modules geüpload, in gecomprimeerde JSON-indeling:
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"
}
'
Met de volgende aanroep worden de laatste 100 logboeklijnen van edgeAgent en edgeHub geüpload met de laatste 1000 logboeklijnen van de tempSensor-module in niet-gecomprimeerde tekstindeling:
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"
}
'
Roep in Azure Portal de methode aan met de methodenaam UploadModuleLogs
en de volgende JSON-nettolading nadat u de sasURL hebt ingevuld met uw gegevens:
{
"schemaVersion": "1.0",
"sasUrl": "<sasUrl>",
"items": [
{
"id": "edgeAgent",
"filter": {
"tail": 10
}
}
],
"encoding": "none",
"contentType": "text"
}
Diagnostische gegevens van ondersteuningsbundel uploaden
Gebruik de directe methode UploadSupportBundle om een zip-bestand van IoT Edge-modulelogboeken te bundelen en te uploaden naar een beschikbare Azure Blob Storage-container. Met deze directe methode wordt de iotedge support-bundle
opdracht op uw IoT Edge-apparaat uitgevoerd om de logboeken te verkrijgen.
Notitie
Als u logboeken van een apparaat achter een gatewayapparaat wilt uploaden, moet u de API-proxy- en blobopslagmodules configureren op het apparaat in de bovenste laag. Deze modules routeren de logboeken van uw apparaat in de onderste laag via uw gatewayapparaat naar uw opslag in de cloud.
Deze methode accepteert een JSON-nettolading met het volgende schema:
{
"schemaVersion": "1.0",
"sasUrl": "Full path to SAS url",
"since": "2d",
"until": "1d",
"edgeRuntimeOnly": false
}
Name | Type | Description |
---|---|---|
schemaVersion | tekenreeks | Ingesteld op 1.0 |
sasURL | tekenreeks (URI) | Shared Access Signature-URL met schrijftoegang tot Azure Blob Storage-container |
sinds | tekenreeks | Alleen logboeken retourneren sinds deze tijd, als een rfc3339-tijdstempel, UNIX-tijdstempel of een duur (dagen (d) uren (h) minuten (m)). Een duur voor één dag, 12 uur en 30 minuten kan bijvoorbeeld worden opgegeven als 1 dag 12 uur 30 minuten of 1d 12u 30m. FACULTATIEF. |
totdat | tekenreeks | Retourneer alleen logboeken vóór de opgegeven tijd, als rfc3339-tijdstempel, UNIX-tijdstempel of duur (dagen (d) uren (h) minuten (m)). Een duur van 90 minuten kan bijvoorbeeld worden opgegeven als 90 minuten of 90 min. FACULTATIEF. |
edgeRuntimeOnly | boolean | Indien waar, retourneert u alleen logboeken van de Edge-agent, Edge Hub en de Edge-beveiligingsdaemon. Standaard: onwaar. FACULTATIEF. |
Belangrijk
IoT Edge-ondersteuningsbundel kan persoonsgegevens bevatten.
Een geslaagde aanvraag voor het uploaden van logboeken retourneert een 'status': 200 gevolgd door een nettolading met hetzelfde schema als het antwoord UploadModuleLogs :
{
"status": "string",
"message": "string",
"correlationId": "GUID"
}
Name | Type | Description |
---|---|---|
status | tekenreeks | Een vanNotStarted , Running , Completed , of Failed Unknown . |
bericht | tekenreeks | Bericht als fout, lege tekenreeks anders. |
correlationId | tekenreeks | Id om een query uit te voeren op de status van de uploadaanvraag. |
Voorbeeld:
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
}
'
Roep in Azure Portal de methode aan met de methodenaam UploadSupportBundle
en de volgende JSON-nettolading nadat u de sasURL hebt ingevuld met uw gegevens:
{
"schemaVersion": "1.0",
"sasUrl": "Full path to SAS url",
"since": "2d",
"until": "1d",
"edgeRuntimeOnly": false
}
Status van uploadaanvraag ophalen
Gebruik de directe methode GetTaskStatus om een query uit te voeren op de status van een aanvraag voor uploadlogboeken. De nettolading van de GetTaskStatus-aanvraag maakt gebruik van de correlationId
aanvraag voor het uploaden van logboeken om de status van de taak op te halen. De correlationId
waarde wordt geretourneerd als reactie op de aanroep van de directe methode UploadModuleLogs .
Deze methode accepteert een JSON-nettolading met het volgende schema:
{
"schemaVersion": "1.0",
"correlationId": "<GUID>"
}
Een geslaagde aanvraag voor het uploaden van logboeken retourneert een 'status': 200 gevolgd door een nettolading met hetzelfde schema als het antwoord UploadModuleLogs :
{
"status": "string",
"message": "string",
"correlationId": "GUID"
}
Name | Type | Description |
---|---|---|
status | tekenreeks | Een van NotStarted , Running , Completed , , Failed 'Geannuleerd' of Unknown . |
bericht | tekenreeks | Bericht als fout, lege tekenreeks anders. |
correlationId | tekenreeks | Id om een query uit te voeren op de status van de uploadaanvraag. |
Voorbeeld:
az iot hub invoke-module-method --method-name 'GetTaskStatus' -n <hub name> -d <device id> -m '$edgeAgent' --method-payload \
'
{
"schemaVersion": "1.0",
"correlationId": "<GUID>"
}
'
Roep in Azure Portal de methode aan met de methodenaam GetTaskStatus
en de volgende JSON-nettolading nadat u de GUID hebt ingevuld met uw gegevens:
{
"schemaVersion": "1.0",
"correlationId": "<GUID>"
}
Volgende stappen
Eigenschappen van de IoT Edge-agent en ioT Edge-hubmoduledubbels