Freigeben über


Exportieren von IoT-Daten nach Event Hubs

In diesem Artikel wird beschrieben, wie Sie den Datenexport konfigurieren, um Daten an Event Hubs zu senden.

Verwenden Sie dieses Feature für den fortlaufenden Export von gefilterten und angereicherten IoT-Daten aus Ihrer IoT Central-Anwendung. Beim Datenexport werden Änderungen nahezu in Echtzeit in andere Teile Ihrer Cloudlösung gepusht, damit Sie umsetzbare Einblicke, Analyseergebnisse und Speicherinformationen erhalten.

Beispielsweise können Sie folgende Aktionen ausführen:

  • Fortlaufendes Exportieren von Telemetriedaten, Eigenschaftsänderungen, Gerätekonnektivität, Gerätelebenszyklus, Lebenszyklus der Gerätevorlage und Überwachungsprotokolldaten im JSON-Format nahezu in Echtzeit
  • Filtern der Datenströme zum Exportieren von Daten, die die benutzerdefinierten Bedingungen erfüllen.
  • Anreichern der Datenströme mit benutzerdefinierten Werten und Eigenschaftswerten aus dem Gerät.
  • Transformieren der Datenströme, um deren Form und Inhalt zu ändern.

Tipp

Wenn Sie den Datenexport aktivieren, erhalten Sie nur die Daten ab dem jeweiligen Aktivierungszeitpunkt. Wenn Sie mehr Verlaufsdaten beibehalten möchten, aktivieren Sie den Datenexport frühzeitig. Informationen zum manuellen Exportieren von Daten für Zeiten, in denen der Datenexport deaktiviert war, finden Sie unter Verwenden der REST-API in IoT Central zum Abfragen von Geräten.

Hinweis

In bestimmten Fällen kann es bis zu 60 Sekunden dauern, bis die Nachrichten exportiert werden. Hierbei handelt es sich um die Zeitspanne zwischen dem Zeitpunkt, zu dem IoT Central die Nachricht vom zugrunde liegenden IoT-Hub empfängt, und dem Zeitpunkt, zu dem die Nachricht an den Zielendpunkt übermittelt wird.

Voraussetzungen

Damit Sie die Datenexportfeatures verwenden können, müssen Sie über die Berechtigung Datenexport verfügen.

Einrichten eines Event Hubs-Exportziels

IoT Central exportiert Daten nahezu in Echtzeit. Die Daten befinden sich im Nachrichtentext und liegen im JSON-Format vor, das als UTF-8 codiert ist.

Die Sammlung von Anmerkungen bzw. Systemeigenschaften der Nachricht enthält die Felder iotcentral-device-id, iotcentral-application-id, iotcentral-message-source und iotcentral-message-type mit denselben Werten wie die entsprechenden Felder im Nachrichtentext.

Verbindungsoptionen

Bei Event Hubs-Zielen können Sie die Verbindung mit einem Verbindungsstring oder einer verwalteten Identität konfigurieren.

Verwaltete Identitäten sind aus folgenden Gründen sicherer:

  • Sie speichern die Anmeldeinformationen für Ihre Ressource nicht in einer Verbindungszeichenfolge in Ihrer IoT Central-Anwendung.
  • Die Anmeldeinformationen sind automatisch an die Lebensdauer Ihrer IoT Central-Anwendung gebunden.
  • Verwaltete Identitäten rotieren ihre Sicherheitsschlüssel automatisch regelmäßig.

IoT Central verwendet derzeit systemseitig zugewiesene verwaltete Identitäten.

Wenn Sie eine verwaltete Identität konfigurieren, müssen Sie einen Bereich und eine Rolle festlegen:

  • Mit dem Bereich wird definiert, wo die verwaltete Identität verwendet werden kann. Sie können zum Beispiel eine Azure-Ressourcengruppe als Bereich festlegen. In diesem Fall müssen sich die IoT Central-Anwendung und das Ziel in derselben Ressourcengruppe befinden.
  • Mit der Rolle wird definiert, über welche Berechtigungen die IoT Central-Anwendung im Zieldienst verfügt. Damit eine IoT Central-Anwendung Daten an einen Event Hub senden kann, muss der verwalteten Identität beispielsweise die Rolle Azure Event Hubs Data Sender (Azure Event Hubs-Datensender) zugewiesen sein.

Das folgende Video enthält weitere Informationen zu vom System zugewiesenen verwalteten Identitäten:

Achtung

Verwenden Sie zum Exportieren in Blob Storage nicht den Speicherkontomitwirkenden, wie im Video gezeigt. Verwenden Sie stattdessen die Rolle Mitwirkender an Storage-Blobdaten.

Erstellen eines Event Hubs-Ziels

In diesem Artikel wird gezeigt, wie eine verwaltete Identität mithilfe der Azure CLI erstellt wird. Sie können eine verwaltete Identität auch über das Azure-Portal erstellen.

Wenn es keinen Event Hubs-Namespace als Exportziel gibt, führen Sie das folgende Skript in der Azure Cloud Shell Bash-Umgebung aus. Das Skript erstellt eine Ressourcengruppe, einen Event Hubs-Namespace und einen Event Hub. Anschließend aktiviert das Skript die verwaltete Identität für Ihre IoT Central-Anwendung und weist die Rolle zu, die für den Zugriff auf Ihren Event Hub benötigt wird:

# Replace the Event Hubs namespace name with your own unique value
EHNS=your-event-hubs-namespace-$RANDOM

# Replace the IoT Central app name with the name of your
# IoT Central application.
CA=your-iot-central-app

EH=exportdata
RG=centralexportresources
LOCATION=eastus

RGID=$(az group create -n $RG --location $LOCATION --query "id" --output tsv)
az eventhubs namespace create --name $EHNS --resource-group $RG -l $LOCATION
az eventhubs eventhub create --name $EH --resource-group $RG --namespace-name $EHNS

# This assumes your IoT Central application is in the 
# default `IOTC` resource group.
az iot central app identity assign --name $CA --resource-group IOTC --system-assigned
PI=$(az iot central app identity show --name $CA --resource-group IOTC --query "principalId" --output tsv)

az role assignment create --assignee $PI --role "Azure Event Hubs Data Sender" --scope $RGID

az role assignment list --assignee $PI --all -o table

echo "Host name: $EHNS.servicebus.windows.net"
echo "Event Hub: $EH"

Informationen dazu, wie Sie Ihren Event Hub weiter sichern und den Zugriff nur aus vertrauenswürdigen Diensten mit verwalteten Identitäten zulassen, finden Sie unter Exportieren von Daten in ein sicheres Ziel in einem Azure Virtual Network.

So erstellen Sie das Event Hubs-Ziel in IoT Central auf der Seite Datenexport:

  1. Wählen Sie +Neues Ziel aus.

  2. Wählen Sie als Zieltyp Azure Event Hubs aus.

  3. Wählen Sie Systemzugeordnete verwaltete Identität als Autorisierungstyp.

  4. Geben Sie den Hostnamen Ihrer Event Hubs Ressource ein. Geben Sie dann den Event Hub-Namen ein, bei dem die Groß-/Kleinschreibung beachtet wird. Hostnamen sehen wie folgt aus: contoso-waste.servicebus.windows.net.

  5. Wählen Sie Speichern.

Sollten bei Ihrem Zieldienst keine Daten ankommen, lesen Sie Behandeln von Problemen mit Datenexporten aus Ihrer Azure IoT Central-Anwendung.

Einrichten des Datenexports

Sie haben ein Ziel für den Export Ihrer Daten eingerichtet und richten jetzt den Datenexport in ihrer IoT Central Anwendung mit den folgenden Schritten ein:

  1. Melden Sie sich bei Ihrer IoT Central-Anwendung an.

  2. Wählen Sie im linken Bereich die Option Datenexport aus.

    Tipp

    Falls Datenexport dort nicht angezeigt wird, haben Sie keine Berechtigungen zum Konfigurieren des Datenexports in Ihrer App. Wenden Sie sich an Ihren Administrator, damit dieser den Datenexport einrichtet.

  3. Wählen Sie + Neuer Export aus.

  4. Geben Sie einen Anzeigenamen für Ihren neuen Export ein, und stellen Sie sicher, dass der Datenexport Aktiviert ist.

  5. Wählen Sie den zu exportierenden Datentyp aus. In der folgenden Tabelle sind die unterstützten Datenexporttypen aufgeführt:

    Datentyp Beschreibung Datenformat
    Telemetrie Exportiert Telemetrienachrichten von Geräten nahezu in Echtzeit. Jede exportierte Nachricht enthält den vollständigen Inhalt der ursprünglichen Gerätenachricht (normalisiert). Format der Telemetrienachricht
    Eigenschaftsänderungen Exportiert Änderungen zu den Geräte- und Cloudeigenschaften nahezu in Echtzeit. Bei schreibgeschützten Geräteeigenschaften werden Änderungen an den gemeldeten Werten exportiert. Bei Lese-/Schreibeigenschaften werden sowohl gemeldete als auch gewünschte Werte exportiert. Format der Eigenschaftsänderungsnachricht
    Gerätekonnektivität Exportieren von Ereignissen zu verbundenen und getrennten Geräten Nachrichtenformat zur Gerätekonnektivität
    Gerätelebenszyklus Exportieren der Geräteereignisse „registered“, „deleted“, „provisioned“, „enabled“, „disabled“, „displayNameChanged“ und „deviceTemplateChanged“ Nachrichtenformat der Gerätelebenszyklusänderungen
    Gerätevorlagenlebenszyklus Exportiert Änderungen an veröffentlichten Gerätevorlagen wie etwa Erstellungs-, Aktualisierungs- und Löschvorgänge. Nachrichtenformat der Änderungen des Gerätevorlagenlebenszyklus
    Überwachungsprotokolle Protokolle von benutzerseitig ausgelösten Updates für Entitäten in der Anwendung. Weitere Informationen finden Sie unter Verwenden von Überwachungsprotokollen zum Nachverfolgen von Aktivitäten in Ihrer IoT Central-Anwendung. Format der Überwachungsprotokollmeldung
  6. Fügen Sie optional Filter hinzu, um die Menge der exportierten Daten zu verringern. Für jeden Datenexporttyp gibt es verschiedene Arten von Filtern:

    Datentyp Verfügbare Filter
    Telemetrie
    • Filtern nach Gerätename, Geräte-ID, Gerätevorlage und simulierten Geräten
    • Filtern des Datenstroms, sodass er nur Telemetriedaten enthält, die den Filterbedingungen entsprechen
    • Filtern des Datenstroms, sodass er nur Telemetriedaten von Geräten mit Eigenschaften enthält, die den Filterbedingungen entsprechen
    • Filtern des Datenstroms, sodass er nur Telemetriedaten mit Nachrichteneigenschaften enthält, die den Filterbedingungen entsprechen. Nachrichteneigenschaften (auch als Anwendungseigenschaften bezeichnet) werden in einer Sammlung von Schlüssel-Wert-Paaren in jeder Telemetrienachricht gesendet. Zum Erstellen eines Nachrichteneigenschaftenfilters geben Sie den gesuchten Nachrichteneigenschaftsschlüssel ein, und geben Sie eine Bedingung an. Nur Telemetrienachrichten mit Eigenschaften, die die angegebene Filterbedingung erfüllen, werden exportiert. Weitere Informationen zu Anwendungseigenschaften finden Sie in der IoT Hub-Dokumentation.
    Eigenschaftsänderungen
    • Filtern nach Gerätename, Geräte-ID, Gerätevorlage und simulierten Geräten
    • Filtern des Datenstroms, sodass er nur Eigenschaftsänderungen enthält, die den Filterbedingungen entsprechen
    Gerätekonnektivität
    • Filtern nach Gerätename, Geräte-ID, Gerätevorlage, Organisationen und ob das Gerät simuliert ist
    • Filtern des Datenstroms, sodass er nur Änderungen von Geräten mit Eigenschaften enthält, die den Filterbedingungen entsprechen
    Gerätelebenszyklus
    • Filtern nach Gerätename, Geräte-ID, Gerätevorlage und bereitgestellten, aktivierten oder simulierten Geräten
    • Filtern des Datenstroms, sodass er nur Änderungen von Geräten mit Eigenschaften enthält, die den Filterbedingungen entsprechen
    Gerätevorlagenlebenszyklus
    • Filtern nach Gerätevorlage
    Überwachungsprotokolle N/V
  7. Reichern Sie optional exportierte Nachrichten mit zusätzlichen Metadaten für Schlüssel-Wert-Paare an. Die folgenden Anreicherungen stehen für die Datenexporttypen „Telemetrie“, „Eigenschaftsänderungen“, „Gerätekonnektivität“ und „Gerätelebenszyklus“ zur Verfügung:

    • Benutzerdefinierte Zeichenfolge: Fügt jeder Nachricht eine benutzerdefinierte statische Zeichenfolge hinzu. Geben Sie einen beliebigen Schlüssel und einen beliebigen Zeichenfolgenwert ein.
    • Eigenschaft, die jeder Nachricht Folgendes hinzufügt:
      • Gerätemetadaten wie Gerätename, Gerätevorlagenname, aktiviert, Organisationen, bereitgestellt und simuliert.
      • Die aktuelle vom Gerät gemeldete Eigenschaft oder den Cloudeigenschaftswert Wenn die exportierte Nachricht aus einem Gerät stammt, das die angegebene Eigenschaft nicht hat, erhält die exportierte Nachricht die Anreicherung nicht.

Konfigurieren Sie das Exportziel:

  1. Wählen Sie + Ziel aus, um ein Ziel hinzuzufügen, das Sie bereits erstellt haben, oder wählen Sie Ein Neues Erstellen aus.

  2. Wählen Sie + Transformieren aus, um Ihre Daten vor dem Export zu transformieren. Weitere Informationen finden Sie unter Transformieren von Daten in Ihrer IoT Central-Anwendung für den Export.

  3. Wählen Sie + Ziel, um bis zu fünf Ziele zu einem einzigen Export hinzuzufügen.

  4. Wenn Sie das Einrichten Ihres Exports abgeschlossen haben, wählen Sie Speichern aus. Nach einigen Minuten werden Ihre Daten in Ihren Zielen angezeigt.

Überwachen des Exports

In IoT Central können Sie auf der Seite Datenexport den Status Ihrer Exporte überprüfen. Darüber hinaus können Sie in Azure Monitor die Datenmenge sehen, die exportiert wird, sowie etwaige Exportfehler. Sie können auf Metriken zum Export und zur Geräteintegrität in Diagrammen im Azure-Portal über die REST-API sowie über Abfragen in PowerShell oder über die Azure CLI zugreifen. Derzeit können Sie die folgenden Datenexportmetriken in Azure Monitor überwachen:

  • Anzahl der eingehenden Nachrichten für den Export vor dem Anwenden von Filtern
  • Anzahl der Nachrichten, die die Filter durchlaufen
  • Anzahl von Nachrichten, die erfolgreich an die Ziele exportiert wurden
  • Anzahl der gefundenen Fehler.

Weitere Informationen finden Sie unter Überwachen der Anwendungsintegrität.

Datenformate

In den folgenden Abschnitten werden die Formate der exportierten Daten beschrieben:

Telemetrieformat

Jede exportierte Nachricht enthält eine normalisierte Form der vollständigen Nachricht, die das Gerät im Nachrichtentext gesendet hat. Die Nachricht ist im JSON-Format und als UTF-8 codiert. Jede Nachricht enthält folgende Informationen:

  • applicationId: Die ID der IoT Central-Anwendung.
  • messageSource: Die Quelle für die Nachricht (telemetry).
  • deviceId:Die ID des Geräts, von dem die Telemetrienachricht gesendet wurde.
  • schema: Den Namen und die Version des Nutzdatenschemas.
  • templateId: Die ID der Gerätevorlage, die dem Gerät zugewiesen ist
  • enqueuedTime: Den Zeitpunkt, zu dem diese Nachricht von IoT Central empfangen wurde.
  • enrichments: Alle im Export eingerichteten Anreicherungen.
  • module: Das IoT Edge-Modul, das diese Nachricht gesendet hat. Dieses Feld wird nur angezeigt, wenn die Nachricht aus einem IoT Edge-Modul stammt.
  • component: Die Komponente, die diese Nachricht gesendet hat. Dieses Feld wird nur angezeigt, wenn die in der Nachricht gesendeten Funktionen als eine Komponente in der Gerätevorlage modelliert wurden.
  • messageProperties: Hierbei handelt es sich um weitere Eigenschaften, die das Gerät zusammen mit der Nachricht gesendet hat. Diese Eigenschaften werden manchmal auch als Anwendungseigenschaften bezeichnet. Weitere Informationen zu IoT Hub-Dokumenten.

Nachrichteneigenschaften

Telemetrie-Nachrichten haben Eigenschaften für Metadaten sowie für die Telemetrie-Nutzdaten. Der vorherige Codeausschnitt zeigt Beispiele für Systemmeldungen wie deviceId und enqueuedTime. Weitere Informationen zu Eigenschaften von Systemmeldungen finden Sie unter Systemeigenschaften von Gerät-zu-Cloud-IoT Hub-Nachrichten.

Sie können Telemetrienachrichten Eigenschaften hinzufügen, wenn Sie Ihren Telemetrienachrichten benutzerdefinierte Metadaten hinzufügen möchten. Beispielsweise können Sie einen Zeitstempel für den Zeitpunkt hinzufügen, zu dem das Gerät die Meldung erstellt hat.

Der folgende Codeausschnitt zeigt, wie Sie der Nachricht die iothub-creation-time-utc-Eigenschaft hinzufügen, wenn diese auf dem Gerät erstellt wird:

Wichtig

Das Format dieses Zeitstempels muss UTC ohne Zeitzoneninformationen sein. Beispiel: 2021-04-21T11:30:16Z ist gültig, 2021-04-21T11:30:16-07:00 ist ungültig.

async function sendTelemetry(deviceClient, index) {
  console.log('Sending telemetry message %d...', index);
  const msg = new Message(
    JSON.stringify(
      deviceTemperatureSensor.updateSensor().getCurrentTemperatureObject()
    )
  );
  msg.properties.add("iothub-creation-time-utc", new Date().toISOString());
  msg.contentType = 'application/json';
  msg.contentEncoding = 'utf-8';
  await deviceClient.sendEvent(msg);
}

Format für Eigenschaftsänderungen

Jede Nachricht oder jeder Datensatz stellt Änderungen an Geräte- und Cloudeigenschaften dar. Die exportierte Nachricht enthält folgende Informationen:

  • applicationId: Die ID der IoT Central-Anwendung.
  • messageSource: Die Quelle für die Nachricht (properties).
  • messageType: Entweder cloudPropertyChange, devicePropertyDesiredChange oder devicePropertyReportedChange
  • deviceId:Die ID des Geräts, von dem die Telemetrienachricht gesendet wurde.
  • schema: Den Namen und die Version des Nutzdatenschemas.
  • enqueuedTime: Den Zeitpunkt, zu dem diese Änderung von IoT Central erkannt wurde.
  • templateId: Die ID der Gerätevorlage, die dem Gerät zugewiesen ist
  • properties: Ein Array von Eigenschaften, die geändert wurden, einschließlich der Namen der geänderten Eigenschaften und Werte. Die Komponenten- und Modulinformationen werden eingeschlossen, wenn die Eigenschaft innerhalb einer Komponente oder eines IoT Edge-Moduls modelliert wird.
  • enrichments: Alle im Export eingerichteten Anreicherungen.

Änderungsformat bei der Gerätekonnektivität

Jede Nachricht und jeder Datensatz stellt ein Konnektivitätsereignis von einem einzelnen Gerät dar. Die exportierte Nachricht enthält folgende Informationen:

  • applicationId: Die ID der IoT Central-Anwendung.
  • messageSource: Die Quelle für die Nachricht (deviceConnectivity).
  • messageType: Entweder connected oder disconnected
  • deviceId: Die ID des Geräts, das geändert wurde.
  • schema: Den Namen und die Version des Nutzdatenschemas.
  • templateId: Die ID der Gerätevorlage, die dem Gerät zugewiesen ist
  • enqueuedTime: Der Zeitpunkt, zu dem diese Änderung in IoT Central aufgetreten ist
  • enrichments: Alle im Export eingerichteten Anreicherungen.

Format der Gerätelebenszyklusänderungen

Jede Nachricht bzw. jeder Datensatz stellt eine Änderung an einem einzelnen Gerät dar. Die exportierte Nachricht enthält folgende Informationen:

  • applicationId: Die ID der IoT Central-Anwendung.
  • messageSource: Die Quelle für die Nachricht (deviceLifecycle).
  • messageType: Der Typ des aufgetretenen Fehlers. Einer der Werte registered, deleted, provisioned, enabled, disabled, displayNameChanged oder deviceTemplateChanged.
  • deviceId: Die ID des Geräts, das geändert wurde.
  • schema: Den Namen und die Version des Nutzdatenschemas.
  • templateId: Die ID der Gerätevorlage, die dem Gerät zugewiesen ist
  • enqueuedTime: Der Zeitpunkt, zu dem diese Änderung in IoT Central aufgetreten ist
  • enrichments: Alle im Export eingerichteten Anreicherungen.

Format der Änderungen des Gerätevorlagenlebenszyklus

Jede Nachricht bzw. jeder Datensatz stellt eine Änderung an einer einzelnen veröffentlichten Gerätevorlage dar. Die exportierte Nachricht enthält folgende Informationen:

  • applicationId: Die ID der IoT Central-Anwendung.
  • messageSource: Die Quelle für die Nachricht (deviceTemplateLifecycle).
  • messageType: Entweder created, updated oder deleted
  • schema: Den Namen und die Version des Nutzdatenschemas.
  • templateId: Die ID der Gerätevorlage, die dem Gerät zugewiesen ist
  • enqueuedTime: Der Zeitpunkt, zu dem diese Änderung in IoT Central aufgetreten ist
  • enrichments: Alle im Export eingerichteten Anreicherungen.

Format der Überwachungsprotokolle

Jede Überwachungsprotokollmeldung stellt eine benutzerseitig ausgelöste Änderung an einer überprüfbaren Entität innerhalb der IoT Central-Anwendung dar. Die exportierte Nachricht enthält folgende Informationen:

  • actor: Informationen zu dem Benutzer, der die Entität geändert hat.
  • applicationId: Die ID der IoT Central-Anwendung.
  • messageSource: Die Quelle für die Nachricht (audit).
  • messageType: Der Typ des aufgetretenen Fehlers. Einer der folgenden Werte: updated, created, deleted.
  • updated: Nur vorhanden, wenn messageType updated lautet. Bietet weitere Details zum Update.
  • resource: Details der geänderten Entität
  • schema: Den Namen und die Version des Nutzdatenschemas.
  • deviceId: Die ID des Geräts, das geändert wurde.
  • enqueuedTime: Der Zeitpunkt, zu dem diese Änderung in IoT Central aufgetreten ist
  • enrichments: Alle im Export eingerichteten Anreicherungen.

Bei Event Hubs exportiert IoT Central neue Nachrichtendaten nahezu in Echtzeit in Ihren Event Hub. In die Benutzereigenschaften (auch als „Anwendungseigenschaften“ bezeichnet) jeder Nachricht werden die Eigenschaften iotcentral-device-id, iotcentral-application-id, iotcentral-message-source und iotcentral-message-type automatisch einbezogen.

Nächste Schritte

Sie wissen nun, wie Sie in Event Hubs exportieren. Als nächster Schritt wird empfohlen, sich mit dem Exportieren in Azure Data Explorer vertraut zu machen.