Teilen über


Senden von Daten aus einer Azure IoT-Datenprozessor (Preview)-Pipeline an Azure Data Explorer

Wichtig

Die von Azure Arc aktivierte Azure IoT Operations Preview befindet sich derzeit in der VORSCHAU. Sie sollten diese Vorschausoftware nicht in Produktionsumgebungen verwenden.

Die zusätzlichen Nutzungsbestimmungen für Microsoft Azure-Vorschauen enthalten rechtliche Bedingungen. Sie gelten für diejenigen Azure-Features, die sich in der Beta- oder Vorschauversion befinden oder aber anderweitig noch nicht zur allgemeinen Verfügbarkeit freigegeben sind.

Verwenden Sie das Azure Data Explorer-Ziel zum Schreiben von Daten in eine Tabelle im Azure Data Explorer aus einer Azure IoT-Datenprozessor (Preview)-Pipeline. In der Zielstufe werden die Nachrichten gebündelt, bevor sie an Azure Data Explorer gesendet werden.

Voraussetzungen

Um eine Zielpipelinestufe für Azure Data Explorer zu konfigurieren und zu verwenden, benötigen Sie Folgendes:

Einrichten des Azure-Daten-Explorers

Bevor Sie aus einer Datenpipeline in Azure Data Explorer schreiben können, müssen Sie über die Pipeline Zugriff auf die Datenbank gewähren. Sie können entweder einen Dienstprinzipal oder eine verwaltete Identität verwenden, um die Pipeline für die Datenbank zu authentifizieren. Der Vorteil der Verwendung einer verwalteten Identität besteht darin, dass Sie den Lebenszyklus des Dienstprinzipals nicht verwalten müssen. Die verwaltete Identität wird automatisch von Azure verwaltet und ist an den Lebenszyklus der Ressource gebunden, der sie zugewiesen ist.

So erstellen Sie einen Dienstprinzipal mit einem geheimen Clientschlüssel:

  1. Verwenden Sie den folgenden Azure CLI-Befehl, um einen Dienstprinzipal zu erstellen.

    az ad sp create-for-rbac --name <YOUR_SP_NAME> 
    
  2. Die Ausgabe dieses Befehls enthält eine appId, displayName, password und tenant. Notieren Sie sich diese Werte, die Sie verwenden müssen, wenn Sie den Zugriff auf Ihre Cloudressource wie Microsoft Fabric konfigurieren, einen geheimen Schlüssel erstellen und ein Pipelineziel konfigurieren:

    {
        "appId": "<app-id>",
        "displayName": "<name>",
        "password": "<client-secret>",
        "tenant": "<tenant-id>"
    }
    

Um Administratorzugriff auf Ihre Azure Data Explorer-Datenbank zu gewähren, führen Sie den folgenden Befehl in der Registerkarte „Datenbankabfrage“ aus:

.add database <DatabaseName> admins (<ApplicationId>) <Notes>

Damit die Zielstufe eine Verbindung mit dem Azure-Daten-Explorer herstellen kann, muss sie auf einen geheimen Schlüssel zugreifen, der die Authentifizierungsdetails enthält. So erstellen Sie ein Geheimnis

  1. Verwenden Sie den folgenden Befehl, um Ihrem Azure Key Vault einen geheimen Schlüssel hinzuzufügen, der den geheimen Clientschlüssel enthält, den Sie beim Erstellen des Dienstprinzipals notieren haben:

    az keyvault secret set --vault-name <your-key-vault-name> --name AccessADXSecret --value <client-secret>
    
  2. Fügen Sie den Geheimnisverweis zu Ihrem Kubernetes-Cluster hinzu, indem Sie die Schritte in Verwalten von Geheimnissen für Ihre Azure IoT Einsatz (Preview)-Bereitstellung ausführen.

Batchverarbeitung

Der Datenverarbeiter schreibt in Batches in Azure Data Explorer. Während Sie Daten im Datenverarbeitungsauftragsverarbeiter vor dem Senden stapeln, verfügt Azure Data Explorer über eine eigene standardmäßige Batchverarbeitungsrichtlinie. Daher werden Ihre Daten möglicherweise nicht unmittelbar nach dem Schreiben des Datenverarbeiters in das Azure Data Explorer-Ziel angezeigt.

Um Daten im Azure Data Explorer anzuzeigen, sobald die Pipeline sie sendet, können Sie die Anzahl der Ingestion-Batching-Richtlinien auf 1 setzen. Führen Sie zum Bearbeiten der Batchverarbeitungsrichtlinie den folgenden Befehl in der Registerkarte „Datenbankabfrage“ aus:

.alter database <your-database-name> policy ingestionbatching
```
{
    "MaximumBatchingTimeSpan" : "00:00:30",
    "MaximumNumberOfItems" : 1,
    "MaximumRawDataSizeMB": 1024
}
```

Konfigurieren der Zielstufe

Die JSON-Konfiguration der Azure Data Explorer-Zielstufe definiert die Details der Phase. Um die Phase zu erstellen, können Sie entweder mit der formularbasierten Benutzeroberfläche interagieren oder die JSON-Konfiguration auf der Registerkarte Erweitert bereitstellen:

Feld Typ Beschreibung Erforderlich Standard Beispiel
Anzeigename String Ein Name, der in der Datenprozessoroberfläche angezeigt werden soll. Ja - Azure IoT MQ output
Beschreibung String Eine benutzerfreundliche Beschreibung der Funktionsweise der Stufe. Nein Write to topic default/topic1
Cluster-URL String Der URI (Dieser Wert ist nicht der Datenaufnahme-URI). Ja -
Datenbank String Der Datenbankname. Ja -
Tabelle String Der Name der Tabelle, in die geschrieben werden soll. Ja -
Batch Batch Wie Sie Daten stapeln. No 60s 10s
Erneut versuchen Wiederholen Die zu verwendende Wiederholungsrichtlinie. No default fixed
Authentifizierung1 String Die Authentifizierungsdetails zum Herstellen einer Verbindung mit Azure Data Explorer. Service principal oder Managed identity Dienstprinzipal Ja -
Spalten > Namen Zeichenfolge Der Name der Spalte. Ja temperature
Spalten > Pfad Path Die Position innerhalb jedes Datensatzes der Daten, aus denen der Wert der Spalte gelesen werden soll. No .{{name}} .temperature

1Authentifizierung: Derzeit unterstützt die Zielstufe die dienstprinzipalbasierte Authentifizierung, wenn sie eine Verbindung mit Azure Data Explorer herstellt.

Um die dienstprinzipalbasierte Authentifizierung zu konfigurieren, stellen Sie die folgenden Werte bereit. Sie haben diese Werte beim Erstellen des Dienstprinzipals notiert und den geheimen Verweis zu Ihrem Cluster hinzugefügt.

Feld Beschreibung Erforderlich
TenantId Die Mandanten-ID. Ja
ClientId Die App-ID, die Sie notiert haben, als Sie den Dienstprinzipal erstellt haben, der Zugriff auf die Datenbank hat. Ja
Geheimnis Der geheime Verweis, den Sie in Ihrem Cluster erstellt haben. Ja

Beispielkonfiguration

Das folgende JSON-Beispiel zeigt eine vollständige Azure Data Explorer-Zielstufenkonfiguration, die die gesamte Nachricht in die quickstart Tabelle in der Datenbank schreibt:

{
    "displayName": "Azure data explorer - 71c308",
    "type": "output/dataexplorer@v1",
    "viewOptions": {
        "position": {
            "x": 0,
            "y": 784
        }
    },
    "clusterUrl": "https://clusterurl.region.kusto.windows.net",
    "database": "databaseName",
    "table": "quickstart",
    "authentication": {
        "type": "servicePrincipal",
        "tenantId": "tenantId",
        "clientId": "clientId",
        "clientSecret": "secretReference"
    },
    "batch": {
        "time": "5s",
        "path": ".payload"
    },
    "columns": [
        {
            "name": "Timestamp",
            "path": ".Timestamp"
        },
        {
            "name": "AssetName",
            "path": ".assetName"
        },
        {
            "name": "Customer",
            "path": ".Customer"
        },
        {
            "name": "Batch",
            "path": ".Batch"
        },
        {
            "name": "CurrentTemperature",
            "path": ".CurrentTemperature"
        },
        {
            "name": "LastKnownTemperature",
            "path": ".LastKnownTemperature"
        },
        {
            "name": "Pressure",
            "path": ".Pressure"
        },
        {
            "name": "IsSpare",
            "path": ".IsSpare"
        }
    ],
    "retry": {
        "type": "fixed",
        "interval": "20s",
        "maxRetries": 4
    }
}

Die Konfiguration definiert Folgendes:

  • Nachrichten werden 5 Sekunden lang gestapelt.
  • Verwendet den Batchpfad .payload, um die Daten für die Spalten zu suchen.

Beispiel

Das folgende Beispiel zeigt eine Beispieleingabenachricht an die Zielstufe des Azure-Daten-Explorers:

{
  "payload": {
    "Batch": 102,
    "CurrentTemperature": 7109,
    "Customer": "Contoso",
    "Equipment": "Boiler",
    "IsSpare": true,
    "LastKnownTemperature": 7109,
    "Location": "Seattle",
    "Pressure": 7109,
    "Timestamp": "2023-08-10T00:54:58.6572007Z",
    "assetName": "oven"
  },
  "qos": 0,
  "systemProperties": {
    "partitionId": 0,
    "partitionKey": "quickstart",
    "timestamp": "2023-11-06T23:42:51.004Z"
  },
  "topic": "quickstart"
}