Freigeben über


Sammeln Ihrer Apache Spark-Anwendungsprotokolle und -Metriken mithilfe von Azure Event Hubs (Vorschau)

Die Diagnoseemittererweiterung von Fabric Apache Spark ist eine Bibliothek, die es Apache Spark-Anwendungen ermöglicht, Protokolle, Ereignisprotokolle und Metriken an unterschiedliche Ziele wie Azure Log Analytics, Azure Storage und Azure Event Hubs auszugeben.

In diesem Tutorial erfahren Sie, wie Sie die Diagnoseemittererweiterung von Fabric Apache Spark verwenden, um Anwendungsprotokolle, Ereignisprotokolle und Metriken von Apache Spark an Ihr Azure Event Hubs zu senden.

Sammeln von Protokollen und Metriken in Azure Event Hubs

Schritt 1: Erstellen einer Azure Event Hubs-Instanz

Um Diagnoseprotokolle und Metriken zu sammeln, können Sie die vorhandenen Azure Event Hubs verwenden. Sollten Sie über keine verfügen, können Sie einen Event Hub erstellen.

Schritt 2: Erstellen eines Fabric-Umgebungsartefakts mit Apache Spark-Konfiguration

Option 1: Konfigurieren mit einer Azure Event Hubs-Verbindungszeichenfolge

  1. Erstellen eines Fabric-Umgebungsartefakts in Fabric

  2. Fügen Sie die folgenden Spark-Eigenschaften mit den entsprechenden Werten zum Umgebungsartefakt hinzu, oder wählen Sie im Menüband Aus YML hinzufügen aus, um die YAML-Beispieldatei herunterzuladen, die bereits die folgenden Eigenschaften enthält.

    spark.synapse.diagnostic.emitters: MyEventHub
    spark.synapse.diagnostic.emitter.MyEventHub.type: "AzureEventHub"
    spark.synapse.diagnostic.emitter.MyEventHub.categories: "Log,EventLog,Metrics"
    spark.synapse.diagnostic.emitter.MyEventHub.secret: <connection-string>
    spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.
    

    Geben Sie in der Konfigurationsdatei die <connection-string>-Parameter an. Weitere Informationen finden Sie unter Azure Event Hubs-Konfigurationen.

Option 2: Konfigurieren mit Azure Key Vault

Hinweis

Bekanntes Problem: Es kann vorläufig keine Sitzung mit Option 2 gestartet werden. Derzeit verhindert das Speichern von Geheimnissen im Schlüsseltresor, dass Spark-Sitzungen gestartet werden. Priorisieren Sie die Konfiguration mithilfe der in Option 1 beschriebenen Methode.

Stellen Sie sicher, dass Benutzern, die Apache Spark-Anwendungen übermitteln, Berechtigungen zum Lesen von Geheimnissen erteilt werden. Weitere Informationen finden Sie unter Gewähren des Zugriffs auf Key Vault-Schlüssel, -Zertifikate und -Geheimnisse mit der rollenbasierten Zugriffssteuerung in Azure.

So konfigurieren Sie Azure Key Vault zum Speichern des Arbeitsbereichsschlüssels:

  1. Erstellen Sie im Azure-Portal einen Schlüsseltresor, und navigieren Sie dorthin.

  2. Wählen Sie auf der Seite mit den Einstellungen des Schlüsseltresors Geheimnisse und dann Generieren/Importieren aus.

  3. Wählen Sie auf dem Bildschirm Geheimnis erstellen folgende Werte aus:

    • Name: Geben Sie einen Namen für das Geheimnis ein.
    • Wert: Geben Sie als Geheimnis <connection-string> ein.
    • Behalten Sie bei den anderen Optionen die Standardwerte bei. Wählen Sie dann Erstellen aus.
  4. Erstellen Sie ein Fabric-Umgebungsartefakt in Fabric.

  5. Fügen Sie die folgenden Spark-Eigenschaften hinzu. Oder wählen Sie im Menüband Aus YML hinzufügen aus, um die YAML-Beispieldatei herunterzuladen, die die folgenden Spark-Eigenschaften enthält.

    spark.synapse.diagnostic.emitters: MyEventHub
    spark.synapse.diagnostic.emitter.MyEventHub.type: "AzureEventHub"
    spark.synapse.diagnostic.emitter.MyEventHub.categories: "Log,EventLog,Metrics"
    spark.synapse.diagnostic.emitter.MyEventHub.secret.keyVault: <AZURE_KEY_VAULT_NAME>
    spark.synapse.diagnostic.emitter.MyEventHub.secret.keyVault.secretName: <AZURE_KEY_VAULT_SECRET_KEY_NAME>
    spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.
    

    Geben Sie in der Konfigurationsdatei den folgenden Parameter an: <AZURE_KEY_VAULT_NAME>, <AZURE_KEY_VAULT_SECRET_KEY_NAME>. Weitere Informationen zu diesen Parametern finden Sie unter Azure Event Hubs-Konfigurationen.

  6. Speichern und veröffentlichen Sie die Änderungen.

Schritt 3: Anfügen des Umgebungsartefakts an Notebooks oder Spark-Auftragsdefinitionen oder Festlegen des Umgebungsartefakts als Arbeitsbereichsstandard

So fügen Sie die Umgebung an Notebooks oder Spark-Auftragsdefinitionen an:

  1. Navigieren Sie in Fabric zum spezifischen Notebook oder zur Spark-Auftragsdefinition.
  2. Wählen Sie auf der Registerkarte „Start“ das Menü Umgebung aus, und wählen Sie die Umgebung mit den konfigurierten Spark-Diagnoseeigenschaften aus.
  3. Die Konfiguration wird angewendet, wenn Sie eine Spark-Sitzung starten.

So legen Sie die Umgebung als Arbeitsbereichsstandard fest:

  1. Navigieren Sie in Fabric zu Arbeitsbereichseinstellungen.
  2. Suchen Sie die Spark-Einstellungen in Ihren Arbeitsbereichseinstellungen (Arbeitsbereichseinstellung -> Datentechnik/Data Science -> Spark-Einstellungen).
  3. Wählen Sie die Registerkarte Umgebung aus, wählen Sie die Umgebung mit konfigurierten Spark-Diagnoseeigenschaften aus, und klicken Sie auf Speichern.

Hinweis

Nur Arbeitsbereichsadministratoren können Arbeitsbereichskonfigurationen verwalten. Änderungen, die hier vorgenommen werden, gelten für alle Notebooks und Spark-Auftragsdefinitionen, die den Arbeitsbereichseinstellungen zugeordnet sind. Weitere Informationen finden Sie unter Fabric-Arbeitsbereichseinstellungen.

Verfügbare Konfigurationen

Konfiguration BESCHREIBUNG
spark.synapse.diagnostic.emitters Erforderlich. Kommagetrennte Liste der Zielnamen von Diagnoseemittern.
spark.synapse.diagnostic.emitter.<destination>.type Erforderlich. Integrierter Zieltyp. Zum Aktivieren des Azure Event Hubs-Ziels muss der Wert AzureEventHub lauten.
spark.synapse.diagnostic.emitter.<destination>.categories Optional. Kommagetrennte Liste der ausgewählten Protokollkategorien. Verfügbare Werte: DriverLog, ExecutorLog, EventLog, Metrics. Ist diese Option nicht festgelegt, werden standardmäßig alle Kategorien verwendet.
spark.synapse.diagnostic.emitter.<destination>.secret Optional. Die Verbindungszeichenfolge der Azure Event Hubs-Instanz. Dieses Feld muss dem folgenden Muster entsprechen: Endpoint=sb://<FQDN>/;SharedAccessKeyName=<KeyName>;SharedAccessKey=<KeyValue>;EntityPath=<PathName>.
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault Erforderlich, wenn .secret nicht angegeben ist. Der Name der Azure Key Vault-Instanz, in der das Geheimnis (Verbindungszeichenfolge) gespeichert ist.
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.secretName Erforderlich, wenn .secret.keyVault angegeben wird. Der Name des Azure Key Vault-Geheimnisses, in dem das Geheimnis (Verbindungszeichenfolge) gespeichert ist.
spark.synapse.diagnostic.emitter.<destination>.filter.eventName.match Optional. Kommagetrennte Liste mit Spark-Ereignisnamen, um anzugeben, welche Ereignisse gesammelt werden sollen. Beispiel: SparkListenerApplicationStart,SparkListenerApplicationEnd
spark.synapse.diagnostic.emitter.<destination>.filter.loggerName.match Optional. Mit den durch Trennzeichen getrennten Log4j-Protokollierungsnamen können Sie angeben, welche Ereignisse gesammelt werden sollen. Beispiel: org.apache.spark.SparkContext,org.example.Logger
spark.synapse.diagnostic.emitter.<destination>.filter.metricName.match Optional. Kommagetrennte Liste mit Spark-Metriknamensuffixen, um anzugeben, welche Metriken gesammelt werden sollen. Beispiel: jvm.heap.used

Hinweis

Die Verbindungszeichenfolge der Azure Eventhub-Instanz muss immer den Entitätspfad (EntityPath) enthalten. Dies ist der Name der Azure Event Hubs-Instanz.

Beispiel für Protokolldaten

Hier sehen Sie einen exemplarischen Protokolldatensatz im JSON-Format:

{
  "timestamp": "2024-09-06T03:09:37.235Z",
  "category": "Log|EventLog|Metrics",
  "fabricLivyId": "<fabric-livy-id>",
  "applicationId": "<application-id>",
  "applicationName": "<application-name>",
  "executorId": "<driver-or-executor-id>",
  "fabricTenantId": "<my-fabric-tenant-id>",
  "capacityId": "<my-fabric-capacity-id>",
  "artifactType": "SynapseNotebook|SparkJobDefinition",
  "artifactId": "<my-fabric-artifact-id>",
  "fabricWorkspaceId": "<my-fabric-workspace-id>",
  "fabricEnvId": "<my-fabric-environment-id>",
  "executorMin": "<executor-min>",
  "executorMax": "<executor-max>",
  "isHighConcurrencyEnabled": "true|false",
  "properties": {
    // The message properties of logs, events and metrics.
    "timestamp": "2024-09-06T03:09:37.235Z",
    "message": "Initialized BlockManager: BlockManagerId(1, vm-04b22223, 34319, None)",
    "logger_name": "org.apache.spark.storage.BlockManager",
    "level": "INFO",
    "thread_name": "dispatcher-Executor"
    //...
  }
}

Fabric-Arbeitsbereiche mit einem verwalteten virtuellen Netzwerk

Erstellen Sie einen verwalteten privaten Endpunkt für das Azure Event Hubs-Ziel. Ausführliche Anweisungen finden Sie unter Erstellen und Verwenden verwalteter privater Endpunkte in Microsoft Fabric – Microsoft Fabric.

Nachdem der verwaltete private Endpunkt genehmigt wurde, können Benutzer Protokolle und Metriken an das Azure Event Hubs-Ziel ausgeben.

Nächste Schritte