Schnelle Überwachung der Integrität von Azure IoT Hub und Diagnose von ProblemenMonitor the health of Azure IoT Hub and diagnose problems quickly

Unternehmen, die Azure IoT Hub implementieren, erwarten zuverlässige Leistung von ihren Ressourcen.Businesses that implement Azure IoT Hub expect reliable performance from their resources. Damit Sie Ihre Vorgänge immer im Blick haben, ist IoT Hub vollständig in Azure Monitor und Azure Resource Health integriert.To help you maintain a close watch on your operations, IoT Hub is fully integrated with Azure Monitor and Azure Resource Health. Diese beiden Dienste liefern Ihnen die Daten, die Sie benötigen, um Ihre IoT-Lösungen in Betrieb und einem ordnungsgemäßen Zustand zu halten.These two services work to provide you with the data you need to keep your IoT solutions up and running in a healthy state.

Azure Monitor ist eine einzelne Überwachungs- und Protokollierungsquelle für alle Azure-Dienste.Azure Monitor is a single source of monitoring and logging for all your Azure services. Sie können die Diagnoseprotokolle, die Azure Monitor generiert, zur benutzerdefinierten Verarbeitung an Azure Monitor-Protokolle, Event Hubs oder Azure Storage senden.You can send the diagnostic logs that Azure Monitor generates to Azure Monitor logs, Event Hubs, or Azure Storage for custom processing. Die Metriken und Diagnoseeinstellungen von Azure Monitor liefern Ihnen Einblicke in die Leistung Ihrer Ressourcen.Azure Monitor's metrics and diagnostics settings give you visibility into the performance of your resources. Um mehr über das Verwenden von Azure Monitor mit Ihrem IoT Hub zu erfahren, lesen Sie nun diesen Artikel.Continue reading this article to learn how to Use Azure Monitor with your IoT hub.

Wichtig

Die vom IoT Hub-Dienst in den Diagnoseprotokollen von Azure Monitor ausgegebenen Ereignisse sind nicht unbedingt zuverlässig oder geordnet.The events emitted by the IoT Hub service using Azure Monitor diagnostic logs are not guaranteed to be reliable or ordered. Einige Ereignisse sind möglicherweise verloren gegangen oder nicht in der richtigen Reihenfolge.Some events might be lost or delivered out of order. Diagnoseprotokolle sind auch nicht als Echtzeitprotokolle gedacht, und es kann einige Minuten dauern, bis die Ereignisse an dem von Ihnen gewählten Zielort protokolliert werden.Diagnostic logs also aren't meant to be real-time, and it may take several minutes for events to be logged to your choice of destination.

Azure Resource Health unterstützt Sie bei der Diagnose und bei Supportanfragen, wenn ein Problem mit Azure Auswirkungen auf Ihre Ressourcen hat.Azure Resource Health helps you diagnose and get support when an Azure issue impacts your resources. Ein Dashboard zeigt aktuelle und vergangene Integritätsstatus für jeden Ihrer IoT Hubs.A dashboard provides current and past health status for each of your IoT hubs. Um mehr über das Verwenden von Azure Resource Health mit Ihrem IoT Hub zu erfahren, fahren Sie mit dem Abschnitt am Ende dieses Artikels fort.Continue to the section at the bottom of this article to learn how to Use Azure Resource Health with your IoT hub.

IoT Hub bietet auch eigene Metriken, die Sie verwenden können, um den Status Ihrer IoT-Ressourcen zu verstehen.IoT Hub also provides its own metrics that you can use to understand the state of your IoT resources. Weitere Informationen finden Sie unter Grundlegendes zu IoT Hub-Metriken.To learn more, see Understand IoT Hub metrics.

Verwenden von Azure MonitorUse Azure Monitor

Azure Monitor stellt Diagnoseinformationen für Azure-Ressourcen bereit, was bedeutet, dass Sie Vorgänge überwachen können, die in Ihrem IoT-Hub ausgeführt werden.Azure Monitor provides diagnostics information for Azure resources, which means that you can monitor operations that take place within your IoT hub.

Weitere Informationen zu den bestimmten Metriken und Ereignissen, die Azure Monitor überwacht, finden Sie unter Unterstützte Metriken von Azure Monitor und Unterstützte Dienste, Schemas und Kategorien für Azure-Diagnoseprotokolle.To learn more about the specific metrics and events that Azure Monitor watches, see Supported metrics with Azure Monitor and Supported services, schemas, and categories for Azure Diagnostic Logs.

Aktivieren der Protokollierung mit DiagnoseeinstellungenEnable logging with diagnostics settings

Hinweis

Dieser Artikel wurde aktualisiert und beinhaltet jetzt das neue Az-Modul von Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. Sie können das AzureRM-Modul weiterhin verwenden, das bis mindestens Dezember 2020 weiterhin Fehlerbehebungen erhält.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Weitere Informationen zum neuen Az-Modul und zur Kompatibilität mit AzureRM finden Sie unter Introducing the new Azure PowerShell Az module (Einführung in das neue Az-Modul von Azure PowerShell).To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Anweisungen zur Installation des Az-Moduls finden Sie unter Install Azure PowerShell (Installieren von Azure PowerShell).For Az module installation instructions, see Install Azure PowerShell.

  1. Melden Sie sich beim Azure-Portal an, und navigieren Sie zu Ihrem IoT Hub.Sign in to the Azure portal and navigate to your IoT hub.

  2. Wählen Sie Diagnoseeinstellungen aus.Select Diagnostics settings.

  3. Wählen Sie Diagnose aktivieren.Select Turn on diagnostics.

    Aktivieren der Diagnose

  4. Benennen Sie die Diagnoseeinstellungen.Give the diagnostic settings a name.

  5. Wählen Sie aus, wohin die Protokolle gesendet werden sollen.Choose where you want to send the logs. Sie können eine beliebige Kombination der drei Optionen auswählen:You can select any combination of the three options:

    • In einem Speicherkonto archivierenArchive to a storage account
    • An einen Event Hub streamenStream to an event hub
    • An Log Analytics sendenSend to Log Analytics
  6. Wählen Sie aus, welche Vorgänge Sie überwachen möchten, und aktivieren Sie die Protokolle für diese Vorgänge.Choose which operations you want to monitor, and enable logs for those operations. Die Vorgänge, für die über die Diagnoseeinstellungen Berichte erstellt werden können, sind die folgenden:The operations that diagnostic settings can report on are:

    • VerbindungenConnections
    • GerätetelemetrieDevice telemetry
    • C2D-NachrichtenCloud-to-device messages
    • Geräte-IdentitätsvorgängeDevice identity operations
    • DateiuploadsFile uploads
    • NachrichtenweiterleitungMessage routing
    • Cloud-zu-Gerät-ZwillingsvorgängeCloud-to-device twin operations
    • Gerät-zu-Cloud-ZwillingsvorgängeDevice-to-cloud twin operations
    • ZwillingsvorgängeTwin operations
    • AuftragsvorgängeJob operations
    • Direkte MethodenDirect methods
    • Verteilte Ablaufverfolgung (Vorschauversion)Distributed tracing (preview)
    • ConfigurationsConfigurations
    • GerätestreamsDevice streams
    • GerätemetrikenDevice metrics
  7. Speichern Sie die neuen Einstellungen.Save the new settings.

Wenn Sie Diagnoseeinstellungen mit PowerShell aktivieren möchten, verwenden Sie den folgenden Code:If you want to turn on diagnostics settings with PowerShell, use the following code:

Connect-AzAccount
Select-AzSubscription -SubscriptionName <subscription that includes your IoT Hub>
Set-AzDiagnosticSetting -ResourceId <your resource Id> -ServiceBusRuleId <your service bus rule Id> -Enabled $true

Neue Einstellungen werden in etwa zehn Minuten wirksam.New settings take effect in about 10 minutes. Danach werden die Protokolle im gewünschten Archivierungsziel auf dem Blatt Diagnoseeinstellungen angezeigt.After that, logs appear in the configured archival target on the Diagnostics settings blade. Weitere Informationen zur Konfiguration von Diagnosen finden Sie unter Erfassen und Nutzen von Protokolldaten aus Ihren Azure-Ressourcen.For more information about configuring diagnostics, see Collect and consume log data from your Azure resources.

Grundlegendes zu den ProtokollenUnderstand the logs

Azure Monitor verfolgt verschiedene Vorgänge nach, die in IoT Hub auftreten.Azure Monitor tracks different operations that occur in IoT Hub. Jede Kategorie verfügt über ein Schema, das definiert, wie Ereignisse in dieser Kategorie gemeldet werden.Each category has a schema that defines how events in that category are reported.

VerbindungenConnections

Die Kategorie für Verbindungen verfolgt Ereignisse zum Herstellen und Trennen von Verbindungen mit einem IoT Hub sowie Fehler nach.The connections category tracks device connect and disconnect events from an IoT hub as well as errors. Diese Kategorie ist bei der Identifizierung nicht autorisierter Verbindungsversuche und/oder bei Warnungen hilfreich, wenn die Verbindung mit Geräten getrennt wird.This category is useful for identifying unauthorized connection attempts and or alerting when you lose connection to devices.

Hinweis

Überprüfen Sie den Gerätetakt, um zuverlässige Informationen zum Verbindungsstatus von Geräten zu erhalten.For reliable connection status of devices check Device heartbeat.

{
   "records":
   [
        {
            "time": " UTC timestamp",
            "resourceId": "Resource Id",
            "operationName": "deviceConnect",
            "category": "Connections",
            "level": "Information",
            "properties": "{\"deviceId\":\"<deviceId>\",\"protocol\":\"<protocol>\",\"authType\":\"{\\\"scope\\\":\\\"device\\\",\\\"type\\\":\\\"sas\\\",\\\"issuer\\\":\\\"iothub\\\",\\\"acceptingIpFilterRule\\\":null}\",\"maskedIpAddress\":\"<maskedIpAddress>\"}",
            "location": "Resource location"
        }
    ]
}

C2D-BefehleCloud-to-device commands

Die Kategorie der C2D-Befehle dient der Nachverfolgung von Fehlern, die auf dem IoT Hub auftreten und in Beziehung zur C2D-Nachrichtenpipeline stehen.The cloud-to-device commands category tracks errors that occur at the IoT hub and are related to the cloud-to-device message pipeline. Zu dieser Kategorie gehören Fehler, die bei folgenden Aktionen auftreten:This category includes errors that occur from:

  • Senden von Cloud-zu-Gerät-Nachrichten (z. B. Fehler aufgrund nicht autorisierter Absender),Sending cloud-to-device messages (like unauthorized sender errors),
  • Empfangen von Cloud-zu-Gerät-Nachrichten (z. B. Fehler des Typs „Übermittlungsanzahl wurde überschritten“) undReceiving cloud-to-device messages (like delivery count exceeded errors), and
  • Empfangen von Cloud-zu-Gerät-Nachrichtenfeedback (z. B. Fehler aufgrund von abgelaufenem Feedback).Receiving cloud-to-device message feedback (like feedback expired errors).

Diese Kategorie fängt keine Fehler ab, wenn die Cloud-zu-Gerät-Nachricht erfolgreich übermittelt wurde, aber dann vom Gerät nicht ordnungsgemäß verarbeitet wird.This category does not catch errors when the cloud-to-device message is delivered successfully but then improperly handled by the device.

{
    "records":
    [
        {
            "time": " UTC timestamp",
            "resourceId": "Resource Id",
            "operationName": "messageExpired",
            "category": "C2DCommands",
            "level": "Error",
            "resultType": "Event status",
            "resultDescription": "MessageDescription",
            "properties": "{\"deviceId\":\"<deviceId>\",\"messageId\":\"<messageId>\",\"messageSizeInBytes\":\"<messageSize>\",\"protocol\":\"Amqp\",\"deliveryAcknowledgement\":\"<None, NegativeOnly, PositiveOnly, Full>\",\"deliveryCount\":\"0\",\"expiryTime\":\"<timestamp>\",\"timeInSystem\":\"<timeInSystem>\",\"ttl\":<ttl>, \"EventProcessedUtcTime\":\"<UTC timestamp>\",\"EventEnqueuedUtcTime\":\"<UTC timestamp>\", \"maskedIpAddress\": \"<maskedIpAddress>\", \"statusCode\": \"4XX\"}",
            "location": "Resource location"
        }
    ]
}

Geräte-IdentitätsvorgängeDevice identity operations

Die Kategorie für Geräte-Identitätsvorgänge dient der Nachverfolgung von Fehlern, die auftreten, wenn Sie versuchen, einen Eintrag in der Identitätsregistrierung Ihres IoT Hubs zu erstellen, zu aktualisieren oder zu löschen.The device identity operations category tracks errors that occur when you attempt to create, update, or delete an entry in your IoT hub's identity registry. Das Nachverfolgen dieser Kategorie ist für Bereitstellungsszenarien nützlich.Tracking this category is useful for provisioning scenarios.

{
    "records":
    [
        {
            "time": "UTC timestamp",
            "resourceId": "Resource Id",
            "operationName": "get",
            "category": "DeviceIdentityOperations",
            "level": "Error",
            "resultType": "Event status",
            "resultDescription": "MessageDescription",
            "properties": "{\"maskedIpAddress\":\"<maskedIpAddress>\",\"deviceId\":\"<deviceId>\", \"statusCode\":\"4XX\"}",
            "location": "Resource location"
        }
    ]
}

RoutenRoutes

Die Kategorie Nachrichtenweiterleitung verfolgt Fehler, die während der Auswertung der Nachrichtenweiterleitung auftreten, und die durch IoT Hub wahrgenommene Endpunktintegrität.The message routing category tracks errors that occur during message route evaluation and endpoint health as perceived by IoT Hub. Diese Kategorie umfasst z. B. folgende Ereignisse:This category includes events such as:

  • Eine Regel wird zu „nicht definiert“ ausgewertet,A rule evaluates to "undefined",
  • IoT Hub markiert einen Endpunkt für unzustellbare Nachrichten, oderIoT Hub marks an endpoint as dead, or
  • Alle Fehler, die von einem Endpunkt empfangen werden.Any errors received from an endpoint.

Diese Kategorie umfasst keine bestimmten Fehler zu den Nachrichten selbst (z. B. Gerätedrosselungsfehler), die in der Kategorie „Gerätetelemetrie“ gemeldet werden.This category does not include specific errors about the messages themselves (like device throttling errors), which are reported under the "device telemetry" category.

{
    "records":
    [
        {
            "time":"2019-12-12T03:25:14Z",
            "resourceId":"/SUBSCRIPTIONS/91R34780-3DEC-123A-BE2A-213B5500DFF0/RESOURCEGROUPS/ANON-TEST/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/ANONHUB1",
            "operationName":"endpointUnhealthy",
            "category":"Routes",
            "level":"Error",
            "resultType":"403004",
            "resultDescription":"DeviceMaximumQueueDepthExceeded",
            "properties":"{\"deviceId\":null,\"endpointName\":\"anon-sb-1\",\"messageId\":null,\"details\":\"DeviceMaximumQueueDepthExceeded\",\"routeName\":null,\"statusCode\":\"403\"}",
            "location":"westus"
        }
    ]
}

Im Folgenden finden Sie weitere Informationen zum Routing von Diagnoseprotokollen:Here are more details on routing diagnostic logs:

GerätetelemetrieDevice telemetry

Die Kategorie für Gerätetelemetrie dient der Nachverfolgung von Fehlern, die auf dem IoT Hub auftreten und in Beziehung zur Telemetriepipeline stehen.The device telemetry category tracks errors that occur at the IoT hub and are related to the telemetry pipeline. Zu dieser Kategorie gehören Fehler, die beim Senden von Telemetrie-Ereignissen (z.B. Drosselung) und Empfangen von Telemetrie-Ereignissen (z.B. nicht autorisierte Leser) auftreten.This category includes errors that occur when sending telemetry events (such as throttling) and receiving telemetry events (such as unauthorized reader). Diese Kategorie kann keine Fehler abfangen, die vom Code verursacht werden, der auf dem Gerät selbst ausgeführt wird.This category cannot catch errors caused by code running on the device itself.

{
    "records":
    [
        {
            "time": "UTC timestamp",
            "resourceId": "Resource Id",
            "operationName": "ingress",
            "category": "DeviceTelemetry",
            "level": "Error",
            "resultType": "Event status",
            "resultDescription": "MessageDescription",
            "properties": "{\"deviceId\":\"<deviceId>\",\"batching\":\"0\",\"messageSizeInBytes\":\"<messageSizeInBytes>\",\"EventProcessedUtcTime\":\"<UTC timestamp>\",\"EventEnqueuedUtcTime\":\"<UTC timestamp>\",\"partitionId\":\"1\"}", 
            "location": "Resource location"
        }
    ]
}

DateiuploadvorgängeFile upload operations

Die Dateiuploadkategorie dient der Nachverfolgung von Fehlern, die auf dem IoT Hub auftreten und in Beziehung zur Dateiuploadfunktionalität stehen.The file upload category tracks errors that occur at the IoT hub and are related to file upload functionality. In diese Kategorie fällt Folgendes:This category includes:

  • Fehler, die beim SAS-URI auftreten, beispielsweise wenn er abläuft, bevor ein Gerät den Hub über einen abgeschlossenen Upload informiertErrors that occur with the SAS URI, such as when it expires before a device notifies the hub of a completed upload.

  • Vom Gerät gemeldete UploadfehlerFailed uploads reported by the device.

  • Fehler, die auftreten, wenn während der IoT Hub-Benachrichtigungserstellung eine Datei nicht im Speicher gefunden wirdErrors that occur when a file is not found in storage during IoT Hub notification message creation.

Diese Kategorie kann keine Fehler abfangen, die auftreten, während das Gerät eine Datei in den Speicher hochlädt.This category cannot catch errors that directly occur while the device is uploading a file to storage.

{
    "records":
    [
        {
            "time": "UTC timestamp",
            "resourceId": "Resource Id",
            "operationName": "ingress",
            "category": "FileUploadOperations",
            "level": "Error",
            "resultType": "Event status",
            "resultDescription": "MessageDescription",
            "durationMs": "1",
            "properties": "{\"deviceId\":\"<deviceId>\",\"protocol\":\"<protocol>\",\"authType\":\"{\\\"scope\\\":\\\"device\\\",\\\"type\\\":\\\"sas\\\",\\\"issuer\\\":\\\"iothub\\\",\\\"acceptingIpFilterRule\\\":null}\",\"blobUri\":\"http//bloburi.com\"}",
            "location": "Resource location"
        }
    ]
}

Cloud-zu-Gerät-ZwillingsvorgängeCloud-to-device twin operations

Die Kategorie der Cloud-zu-Gerät-Zwillingsvorgänge verfolgt von einem Dienst initiierte Ereignisse auf Gerätezwillingen nach.The cloud-to-device twin operations category tracks service-initiated events on device twins. Diese Vorgänge können das Abrufen des Zwillings, Aktualisieren oder Ersetzen von Tags und Aktualisieren oder Ersetzen gewünschter Eigenschaften einschließen.These operations can include get twin, update or replace tags, and update or replace desired properties.

{
    "records":
    [
        {
            "time": "UTC timestamp",
            "resourceId": "Resource Id",
            "operationName": "read",
            "category": "C2DTwinOperations",
            "level": "Information",
            "durationMs": "1",
            "properties": "{\"deviceId\":\"<deviceId>\",\"sdkVersion\":\"<sdkVersion>\",\"messageSize\":\"<messageSize>\"}",
            "location": "Resource location"
        }
    ]
}

Gerät-zu-Cloud-ZwillingsvorgängeDevice-to-cloud twin operations

Die Kategorie der Gerät-zu-Cloud-Zwillingsvorgänge verfolgt von einem Gerät initiierte Ereignisse auf Gerätezwillingen nach.The device-to-cloud twin operations category tracks device-initiated events on device twins. Diese Vorgänge können das Abrufen des Zwillings, das Aktualisieren gemeldeter Eigenschaften und das Abonnieren gewünschter Eigenschaften einschließen.These operations can include get twin, update reported properties, and subscribe to desired properties.

{
    "records":
    [
        {
            "time": "UTC timestamp",
            "resourceId": "Resource Id",
            "operationName": "update",
            "category": "D2CTwinOperations",
            "level": "Information",
            "durationMs": "1",
            "properties": "{\"deviceId\":\"<deviceId>\",\"protocol\":\"<protocol>\",\"authenticationType\":\"{\\\"scope\\\":\\\"device\\\",\\\"type\\\":\\\"sas\\\",\\\"issuer\\\":\\\"iothub\\\",\\\"acceptingIpFilterRule\\\":null}\"}",
            "location": "Resource location"
        }
    ]
}

ZwillingsabfragenTwin queries

Die Kategorie der Zwillingsabfragen berichtet über Abfrageanforderungen für Gerätezwillinge, die in der Cloud initiiert werden.The twin queries category reports on query requests for device twins that are initiated in the cloud.

{
    "records":
    [
        {
            "time": "UTC timestamp",
            "resourceId": "Resource Id",
            "operationName": "query",
            "category": "TwinQueries",
            "level": "Information",
            "durationMs": "1",
            "properties": "{\"query\":\"<twin query>\",\"sdkVersion\":\"<sdkVersion>\",\"messageSize\":\"<messageSize>\",\"pageSize\":\"<pageSize>\", \"continuation\":\"<true, false>\", \"resultSize\":\"<resultSize>\"}",
            "location": "Resource location"
        }
    ]
}

AuftragsvorgängeJobs operations

Die Kategorie der Auftragsvorgänge berichtet über Auftragsanforderungen zum Aktualisieren von Gerätezwillingen oder Aufrufen direkter Methoden auf mehreren Geräten.The jobs operations category reports on job requests to update device twins or invoke direct methods on multiple devices. Diese Anforderungen werden in der Cloud initiiert.These requests are initiated in the cloud.

{
    "records":
    [
        {
            "time": "UTC timestamp",
            "resourceId": "Resource Id",
            "operationName": "jobCompleted",
            "category": "JobsOperations",
            "level": "Information",
            "durationMs": "1",
            "properties": "{\"jobId\":\"<jobId>\", \"sdkVersion\": \"<sdkVersion>\",\"messageSize\": <messageSize>,\"filter\":\"DeviceId IN ['1414ded9-b445-414d-89b9-e48e8c6285d5']\",\"startTimeUtc\":\"Wednesday, September 13, 2017\",\"duration\":\"0\"}",
            "location": "Resource location"
        }
    ]
}

Direkte MethodenDirect Methods

Die Kategorie der direkten Methoden verfolgt Anforderung-Antwort-Interaktionen, die an die einzelnen Geräte gesendet werden.The direct methods category tracks request-response interactions sent to individual devices. Diese Anforderungen werden in der Cloud initiiert.These requests are initiated in the cloud.

{
    "records":
    [
        {
            "time": "UTC timestamp",
            "resourceId": "Resource Id",
            "operationName": "send",
            "category": "DirectMethods",
            "level": "Information",
            "durationMs": "1",
            "properties": "{\"deviceId\":<messageSize>, \"RequestSize\": 1, \"ResponseSize\": 1, \"sdkVersion\": \"2017-07-11\"}",
            "location": "Resource location"
        }
    ]
}

Verteilte Ablaufverfolgung (Vorschauversion)Distributed Tracing (Preview)

Die Kategorie für verteilte Ablaufverfolgung verfolgt die Korrelations-IDs für Nachrichten nach, die den Kontextheader für Ablaufverfolgung enthalten.The distributed tracing category tracks the correlation IDs for messages that carry the trace context header. Zur vollständigen Aktivierung dieser Protokolle muss der clientseitige Code gemäß der Anleitung in Analyze and diagnose IoT applications end-to-end with IoT Hub distributed tracing (preview) (End-to-End-Analyse und -Diagnose von IoT-Anwendungen mit der verteilten Ablaufverfolgung von IoT Hub (Vorschauversion)) aktualisiert werden.To fully enable these logs, client-side code must be updated by following Analyze and diagnose IoT applications end-to-end with IoT Hub distributed tracing (preview).

Hinweis: correlationId entspricht dem W3C-Vorschlag für Ablaufverfolgungskontext insofern, dass sowohl ein trace-id- als auch ein span-id-Element enthalten ist.Note that correlationId conforms to the W3C Trace Context proposal, where it contains a trace-id as well as a span-id.

IoT Hub-D2C-Protokolle (Gerät-zu-Cloud)IoT Hub D2C (device-to-cloud) logs

IoT Hub zeichnet dieses Protokoll auf, wenn eine Nachricht mit gültigen Ablaufverfolgungseigenschaften bei IoT Hub eingeht.IoT Hub records this log when a message containing valid trace properties arrives at IoT Hub.

{
    "records":
    [
        {
            "time": "UTC timestamp",
            "resourceId": "Resource Id",
            "operationName": "DiagnosticIoTHubD2C",
            "category": "DistributedTracing",
            "correlationId": "00-8cd869a412459a25f5b4f31311223344-0144d2590aacd909-01",
            "level": "Information",
            "resultType": "Success",
            "resultDescription":"Receive message success",
            "durationMs": "",
            "properties": "{\"messageSize\": 1, \"deviceId\":\"<deviceId>\", \"callerLocalTimeUtc\": : \"2017-02-22T03:27:28.633Z\", \"calleeLocalTimeUtc\": \"2017-02-22T03:27:28.687Z\"}",
            "location": "Resource location"
        }
    ]
}

Hier wird durationMs nicht berechnet, da die Uhr von IoT Hub möglicherweise nicht mit der Geräteuhr synchronisiert ist und daher eine Berechnung der Dauer irreführend sein kann.Here, durationMs is not calculated as IoT Hub's clock might not be in sync with the device clock, and thus a duration calculation can be misleading. Es wird empfohlen, Logik unter Verwendung der Zeitstempel im Abschnitt properties zu schreiben, um Spitzen in der Gerät-zu-Cloud-Latenz zu erfassen.We recommend writing logic using the timestamps in the properties section to capture spikes in device-to-cloud latency.

EigenschaftProperty typeType BESCHREIBUNGDescription
messageSizemessageSize IntegerInteger Die Größe einer Gerät-zu-Cloud-Nachricht in BytesThe size of device-to-cloud message in bytes
deviceIddeviceId Zeichenfolge aus alphanumerischen 7-Bit-ASCII-ZeichenString of ASCII 7-bit alphanumeric characters Die Identität des GerätsThe identity of the device
callerLocalTimeUtccallerLocalTimeUtc UTC-ZeitstempelUTC timestamp Der Erstellungszeitpunkt der Nachricht wie von der Uhr des lokalen Geräts gemeldetThe creation time of the message as reported by the device local clock
calleeLocalTimeUtccalleeLocalTimeUtc UTC-ZeitstempelUTC timestamp Der Eingangszeitpunkt der Nachricht beim IoT Hub Gateway wie von der Uhr des IoT Hub-Diensts gemeldetThe time of message arrival at the IoT Hub's gateway as reported by IoT Hub service side clock
Eingehende IoT Hub-ProtokolleIoT Hub ingress logs

IoT Hub zeichnet dieses Protokoll auf, wenn die Nachricht mit gültigen Ablaufverfolgungseigenschaften in interne oder integrierte Event Hub-Instanzen schreibt.IoT Hub records this log when message containing valid trace properties writes to internal or built-in Event Hub.

{
    "records":
    [
        {
            "time": "UTC timestamp",
            "resourceId": "Resource Id",
            "operationName": "DiagnosticIoTHubIngress",
            "category": "DistributedTracing",
            "correlationId": "00-8cd869a412459a25f5b4f31311223344-349810a9bbd28730-01",
            "level": "Information",
            "resultType": "Success",
            "resultDescription":"Ingress message success",
            "durationMs": "10",
            "properties": "{\"isRoutingEnabled\": \"true\", \"parentSpanId\":\"0144d2590aacd909\"}",
            "location": "Resource location"
        }
    ]
}

Im properties Abschnitt enthält dieses Protokoll zusätzliche Informationen zum Nachrichteneingang.In the properties section, this log contains additional information about message ingress.

EigenschaftProperty typeType BESCHREIBUNGDescription
isRoutingEnabledisRoutingEnabled StringString Entweder „true“ oder „false“; gibt an, ob Nachrichtenweiterleitung in IoT Hub aktiviert istEither true or false, indicates whether or not message routing is enabled in the IoT Hub
parentSpanIdparentSpanId StringString Das span-id-Element der übergeordneten Nachricht, in diesem Fall die D2C-NachrichtenablaufverfolgungThe span-id of the parent message, which would be the D2C message trace in this case
Ausgehende IoT Hub-ProtokolleIoT Hub egress logs

IoT Hub zeichnet dieses Protokoll auf, wenn die Weiterleitung aktiviert ist und die Nachricht an einen Endpunkt geschrieben wird.IoT Hub records this log when routing is enabled and the message is written to an endpoint. Wenn die Weiterleitung nicht aktiviert ist, zeichnet IoT Hub dieses Protokoll nicht auf.If routing is not enabled, IoT Hub doesn't record this log.

{
    "records":
    [
        {
            "time": "UTC timestamp",
            "resourceId": "Resource Id",
            "operationName": "DiagnosticIoTHubEgress",
            "category": "DistributedTracing",
            "correlationId": "00-8cd869a412459a25f5b4f31311223344-98ac3578922acd26-01",
            "level": "Information",
            "resultType": "Success",
            "resultDescription":"Egress message success",
            "durationMs": "10",
            "properties": "{\"endpointType\": \"EventHub\", \"endpointName\": \"myEventHub\", \"parentSpanId\":\"349810a9bbd28730\"}",
            "location": "Resource location"
        }
    ]
}

Im properties Abschnitt enthält dieses Protokoll zusätzliche Informationen zum Nachrichteneingang.In the properties section, this log contains additional information about message ingress.

EigenschaftProperty typeType BESCHREIBUNGDescription
endpointNameendpointName StringString Der Name des RoutingendpunktsThe name of the routing endpoint
endpointTypeendpointType StringString Der Typ des RoutingendpunktsThe type of the routing endpoint
parentSpanIdparentSpanId StringString Das span-id-Element der übergeordneten Nachricht, in diesem Fall die Ablaufverfolgung des IoT Hub-NachrichteneingangsThe span-id of the parent message, which would be the IoT Hub ingress message trace in this case

ConfigurationsConfigurations

Die Kategorie „IoT Hub-Konfigurationsprotokolle“ verfolgt Ereignisse und Fehler für die Featuregruppe „Automatische Geräteverwaltung“.IoT Hub configuration logs tracks events and error for the Automatic Device Management feature set.

{
    "records":
    [
         {
             "time": "2019-09-24T17:21:52Z",
             "resourceId": "Resource Id",
             "operationName": "ReadManyConfigurations",
             "category": "Configurations",
             "resultType": "",
             "resultDescription": "",
             "level": "Information",
             "durationMs": "17",
             "properties": "{\"configurationId\":\"\",\"sdkVersion\":\"2018-06-30\",\"messageSize\":\"0\",\"statusCode\":null}",
             "location": "southcentralus"
         }
    ]
}

Gerätestreams (Vorschau)Device Streams (Preview)

Die Kategorie „Gerätestreams“ verfolgt Anforderung-Antwort-Interaktionen, die an die einzelnen Geräte gesendet werden.The device streams category tracks request-response interactions sent to individual devices.

{
    "records":
    [
         {
             "time": "2019-09-19T11:12:04Z",
             "resourceId": "Resource Id",
             "operationName": "invoke",
             "category": "DeviceStreams",
             "resultType": "",
             "resultDescription": "",    
             "level": "Information",
             "durationMs": "74",
             "properties": "{\"deviceId\":\"myDevice\",\"moduleId\":\"myModule\",\"sdkVersion\":\"2019-05-01-preview\",\"requestSize\":\"3\",\"responseSize\":\"5\",\"statusCode\":null,\"requestName\":\"myRequest\",\"direction\":\"c2d\"}",
             "location": "Central US"
         }
    ]
}

Lesen von Protokollen aus Azure Event HubsRead logs from Azure Event Hubs

Nachdem Sie die Ereignisprotokollierung über Diagnoseeinstellungen eingerichtet haben, können Sie Anwendungen erstellen, die die Protokolle lesen, sodass Sie anhand der darin enthaltenen Informationen Maßnahmen ergreifen können.After you set up event logging through diagnostics settings, you can create applications that read out the logs so that you can take action based on the information in them. Dieser Beispielcode ruft Protokolle von einem Event Hub ab:This sample code retrieves logs from an event hub:

class Program
{ 
    static string connectionString = "{your AMS eventhub endpoint connection string}";
    static string monitoringEndpointName = "{your AMS event hub endpoint name}";
    static EventHubClient eventHubClient;
    //This is the Diagnostic Settings schema
    class AzureMonitorDiagnosticLog
    {
        string time { get; set; }
        string resourceId { get; set; }
        string operationName { get; set; }
        string category { get; set; }
        string level { get; set; }
        string resultType { get; set; }
        string resultDescription { get; set; }
        string durationMs { get; set; }
        string callerIpAddress { get; set; }
        string correlationId { get; set; }
        string identity { get; set; }
        string location { get; set; }
        Dictionary<string, string> properties { get; set; }
    };

    static void Main(string[] args)
    {
        Console.WriteLine("Monitoring. Press Enter key to exit.\n");
        eventHubClient = EventHubClient.CreateFromConnectionString(connectionString, monitoringEndpointName);
        var d2cPartitions = eventHubClient.GetRuntimeInformationAsync().PartitionIds;
        CancellationTokenSource cts = new CancellationTokenSource();
        var tasks = new List<Task>();
        foreach (string partition in d2cPartitions)
        {
            tasks.Add(ReceiveMessagesFromDeviceAsync(partition, cts.Token));
        }
        Console.ReadLine();
        Console.WriteLine("Exiting...");
        cts.Cancel();
        Task.WaitAll(tasks.ToArray());
    }

    private static async Task ReceiveMessagesFromDeviceAsync(string partition, CancellationToken ct)
    {
        var eventHubReceiver = eventHubClient.GetDefaultConsumerGroup().CreateReceiver(partition, DateTime.UtcNow);
        while (true)
        {
            if (ct.IsCancellationRequested)
            {
                await eventHubReceiver.CloseAsync();
                break;
            }
            EventData eventData = await eventHubReceiver.ReceiveAsync(new TimeSpan(0,0,10));
            if (eventData != null)
            {
                string data = Encoding.UTF8.GetString(eventData.GetBytes());
                Console.WriteLine("Message received. Partition: {0} Data: '{1}'", partition, data);
                var deserializer = new JavaScriptSerializer();
                //deserialize json data to azure monitor object
                AzureMonitorDiagnosticLog message = new JavaScriptSerializer().Deserialize<AzureMonitorDiagnosticLog>(result);
            }
        }
    }
}

Verwenden von Azure Resource HealthUse Azure Resource Health

Verwenden Sie Azure Resource Health, um zu überwachen, ob Ihr IoT Hub ausgeführt wird.Use Azure Resource Health to monitor whether your IoT hub is up and running. Sie können auch erfahren, ob ein regionaler Ausfall Auswirkungen auf die Integrität Ihres IoT Hub hat.You can also learn whether a regional outage is impacting the health of your IoT hub. Um bestimmte Details des Integritätsstatus Ihres Azure IoT Hub zu verstehen, empfehlen wir Ihnen das Verwenden von Azure Monitor.To understand specific details about the health state of your Azure IoT Hub, we recommend that you Use Azure Monitor.

Azure IoT Hub zeigt die Integrität auf regionaler Ebene an.Azure IoT Hub indicates health at a regional level. Wenn ein regionaler Ausfall Auswirkungen auf Ihren IoT-Hub hat, wird der Integritätsstatus Unbekannt angezeigt.If a regional outage impacts your IoT hub, the health status shows as Unknown. Weitere Informationen finden Sie unter Ressourcentypen und Integritätsprüfungen in Azure Resource Health.To learn more, see Resource types and health checks in Azure resource health.

Um die Integrität Ihrer IoT Hubs zu überprüfen, gehen Sie folgendermaßen vor:To check the health of your IoT hubs, follow these steps:

  1. Melden Sie sich beim Azure-Portal an.Sign in to the Azure portal.

  2. Navigieren Sie zu Dienstintegrität > Ressourcenintegrität.Navigate to Service Health > Resource health.

  3. Wählen Sie in den Dropdownlisten Ihr Abonnement und dann IoT Hub als Ressourcentyp aus.From the drop-down boxes, select your subscription then select IoT Hub as the resource type.

Weitere Informationen zum Interpretieren von Integritätsdaten finden Sie unter Übersicht über Azure Resource Health.To learn more about how to interpret health data, see Azure resource health overview.

Nächste SchritteNext steps