Wie konfiguriere ich die Protokollierungsebenen dynamisch für bestimmte Ressourcen in AWS IoT Core?

Lesedauer: 5 Minute
0

Ich möchte die ressourcenspezifische Protokollierung für meine AWS IoT Core-Protokolle dynamisch konfigurieren.

Kurzbeschreibung

Hinweis: Dieser Artikel bezieht sich nur auf Version 2 der AWS IoT Core-Protokolle.

Sie können AWS IoT Core-Protokolle verwenden, um die Protokollierungsebenen für bestimmte Ressourcen dynamisch festzulegen. Sie können eine dynamische Objektgruppe verwenden, um eine ressourcenspezifische Protokollierungsstufe festzulegen. Sie müssen Ihre Kunden als Objekte registrieren und sich mit derselben Client-ID verbinden, die dem Objektnamen zugeordnet ist. Die dynamische Objektgruppe verwendet eine Flottenindexierungs-Abfrage, die kontinuierlich Objekte findet und diese automatisch zu der Gruppe hinzufügt, die die Abfragebedingungen erfüllen.

Es hat sich bewährt, für die Standardprotokollierung eine niedrigere Ausführlichkeitsebene und für die ressourcenspezifische Protokollierung eine höhere Ausführlichkeitsebene zu konfigurieren. Zu den Ausführlichkeitsebenen der Protokolle gehören DISABLED (niedrigste), ERROR, WARN, INFO und DEBUG (höchste).

Wenn Sie eine dynamische Objektgruppe erstellen oder aktualisieren, können Objekte in einer dynamischen Objektgruppe enthalten sein und nicht automatisch zu ihr hinzugefügt werden. Weitere Informationen finden Sie unter Erfolgreiche Befehle können Fehler protokollieren.

Wichtig: Abhängig von der Größe Ihrer AWS IoT Core-Flotte kann die Aktivierung ausführlicherer Protokollebenen hohe Kosten verursachen und die Fehlerbehebung erschweren. INFO oder DEBUG dürfen bei der Problembehebung nur vorübergehend verwendet werden. Nach Abschluss der Problembehebung sollten die Protokollierungsebenen auf eine weniger ausführliche Einstellung zurückgesetzt werden.

Lösung

Voraussetzung

Stellen Sie sicher, dass Sie die AWS Command Line Interface (AWS CLI) lokal mit den Anmeldeinformationen für IoT-Administratorrechte installiert haben. Die standardmäßige AWS-Region für die AWS-CLI sollte auf die AWS-Zielregion verweisen. Sie müssen Clients haben, die mit Ihren AWS IoT Core-Endpunkten verbunden sind und mit diesen als registrierte IoT-Objekte interagieren.

Hinweis: Wenn Sie beim Ausführen von AWS-CLI-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste Version der AWS-CLI verwenden.

Konfigurieren der automatischen Protokollierung für bestimmte Ressourcen

1.    Erstellen Sie ein AWS-IoT-Objekt und fügen Sie ihm ein Objekt-Attribut hinzu.

Hinweis: Sie können nach Bedarf weitere Objekt-Attribute hinzufügen. Sie können dann die dynamische Objektgruppen-Abfrage ändern, um nach diesen zu suchen.

2.    Schalten Sie die Indizierung von Objekten ein.

3.    Führen Sie den Befehl DescribeIndex aus, um zu überprüfen, ob Ihr Objektindex über ein IndexStatus-Attribut ACTIVE verfügt:

aws iot describe-index --index-name "AWS_Things"

4.    Erstellen Sie mithilfe der AWS IoT-Konsole oder der AWS-CLI eine dynamische Objektgruppe.

AWS-IoT-Konsole

1.    Aktivieren Sie die Flottenindexierung, falls Sie dies noch nicht getan haben.

2.    Melden Sie sich bei der AWS IoT-Konsole an.

3.    Wählen Sie im Navigationsbereich All devices (Alle Geräte) und dann Thing groups (Objektgruppen).

4.    Wählen Sie Create thing group (Objektgruppe erstellen).

5.    Wählen Sie als Thing group type (Objektgruppentyp) die Option Create dynamic thing group (Dynamische Objektgruppe erstellen) und dann Next (Weiter).

6.    Geben Sie für Thing group name (Objektgruppenname) logging_level_debug_dynamic ein. Wählen Sie dann Create thing group (Objektgruppe erstellen).
Hinweis: Ersetzen Sie logging_level_debug_dynamic durch den Namen Ihrer Objektgruppe.

7.    Geben Sie unter Query (Abfrage) attributes.firmware:1 ein und drücken Sie dann die Eingabetaste, um die Suchabfrage anzuwenden.
Hinweis: Ersetzen Sie firmware:1 durch das Objekt-Attribut und den Wert, den Sie für die Abfrage verwenden möchten.

8.    Wählen Sie Preview query (Abfragevorschau), um alle Objekte zu sehen, die den Abfragekriterien entsprechen.

9.    Wählen Sie Create thing group (Objektgruppe erstellen).

AWS-CLI

1.    Führen Sie den Befehl CreateDynamicThingGroup aus, um eine dynamische Objektgruppe zu erstellen:

Hinweis: Die Erstellung dynamischer Objektgruppen erfolgt nicht sofort und es kann einige Zeit dauern, bis sie abgeschlossen ist. Weitere Informationen finden Sie unter Erstellen einer dynamischen Objektgruppe.

aws iot create-dynamic-thing-group \
 --thing-group-name "logging_level_debug_dynamic" \
 --query-string "attributes.firmware:1"

Hinweis: Ersetzen Sie im vorherigen Beispiel firmware:1 durch das Attribut und den Wert, die Sie für die Abfrage verwenden möchten. Ersetzen Sie logging_level_debug_dynamic durch den Namen Ihrer Objektgruppe.

Die Ausgabe sieht ähnlich wie die folgende Meldung aus:

{
 "thingGroupName": "logging_level_debug_dynamic",
 "thingGroupArn": "arn:aws:iot:eu-west-1:123456789012:thinggroup/logging_level_debug_dynamic",
 "thingGroupId": "b8f96cc3-f36b-4da2-b0f8-e28f5a123456",
 "indexName": "AWS_Things",
 "queryString": "attributes.firmware:1",
 "queryVersion": "2017-09-30"
}

2.    Führen Sie den Befehl DescribeThingGroup aus, um zu überprüfen, ob Ihre dynamische Objektgruppe AKTIV ist:

aws iot describe-thing-group --thing-group-name "logging_level_debug_dynamic"

Hinweis: Ersetzen Sie im vorherigen Beispiel logging_level_debug_dynamic durch den Namen Ihrer Objektgruppe.

Die Ausgabe sieht ähnlich wie die folgende Meldung aus:

{
 "thingGroupName": "logging_level_debug_dynamic",
 "thingGroupId": "b8f96cc3-f36b-4da2-b0f8-e28f5a123456",
 "thingGroupArn": "arn:aws:iot:eu-west-1:123456789012:thinggroup/logging_level_debug_dynamic",
 "version": 1,
 "thingGroupProperties": {},
 "thingGroupMetadata": {
 "creationDate": "2022-11-30T12:37:19.980000+00:00"
 },
 "indexName": "AWS_Things",
 "queryString": "attributes.firmware:1",
 "queryVersion": "2017-09-30",
 "status": "ACTIVE"
}

3.    Führen Sie den Befehl SetV2LoggingLevel aus, um die Protokollierungsebene für die Ressource festzulegen. Das Einstellen der Protokollierungsstufe kann bis zu zehn Minuten dauern.

aws iot set-v2-logging-level \
 --log-target targetType=THING_GROUP,targetName=logging_level_debug_dynamic \
 --log-level DEBUG

Hinweis: Ersetzen Sie im vorherigen Beispiel logging_level_debug_dynamic durch den Namen Ihrer dynamischen Objektgruppe.

Die Ausgabe sieht ähnlich wie die folgende Meldung aus. Die Standardprotokollierung ist in der Ausgabe enthalten und enthält die Details, die auf Ihren Konfigurationen basieren. Andere Protokollierungsstufen, die Sie konfiguriert haben, werden ebenfalls angezeigt.

{
"logTargetConfigurations": [{
"logTarget": {
"targetType": "DEFAULT"
},
"logLevel": "WARN"
},
{
"logTarget": {
"targetType": "THING_GROUP",
"targetName": "
logging_level_debug_dynamic "
},
"logLevel": "DEBUG"
}
]
}

Überwachen generierter Protokolle

Es hat sich bewährt, IoT-Protokolle auf Probleme zu überwachen. Sie können entweder die AWS CloudWatch Logs-Konsole oder die AWS-CLI verwenden, um Ihre AWS IoT Core-Protokolle zu überwachen. Weitere Informationen finden Sie im Abschnitt „Überwachen von Protokolleinträgen“ unter Wie verwalte ich die Protokollierungsebenen meiner AWS IoT-Protokolle in AWS IoT Core am besten?

Ähnliche Informationen

Preise für das AWS-IoT-Gerätemanagement

Wie konfiguriere ich die Standardprotokollierungseinstellungen für AWS IoT Core?

Wie konfiguriere ich die Protokollierungsebenen manuell für bestimmte Ressourcen in AWS IoT Core?

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr