Freigeben über


Sammeln Sie Ihre Apache Spark-Anwendungsprotokolle und -Metriken mithilfe von Azure Event Hubs

Die Diagnoseemittererweiterung von Synapse Apache Spark ist eine Bibliothek, die es der Apache Spark-Anwendung ermöglicht, Protokolle, Ereignisprotokolle und Metriken an ein einzelnes Ziel oder an mehrere Ziele wie Azure Log Analytics, Azure Storage und Azure Event Hubs auszugeben.

In diesem Lernprogramm erfahren Sie, wie Sie die Diagnose-Emittererweiterung Synapse Apache Spark verwenden, um Die Protokolle, Ereignisprotokolle und Metriken von Apache Spark-Anwendungen an Ihre Azure Event Hubs zu senden.

Sammeln von Protokollen und Metriken in Azure Event Hubs

Schritt 1: Erstellen einer Azure Event Hubs-Instanz

Zum Sammeln von Diagnoseprotokollen und Metriken für Azure Event Hubs kann eine bereits vorhandene Azure Event Hubs-Instanz verwendet werden. Sollten Sie über keine verfügen, können Sie einen Event Hub erstellen.

Schritt 2: Erstellen einer Apache Spark-Konfigurationsdatei

Erstellen Sie eine Datei namens diagnostic-emitter-azure-event-hub-conf.txt, und kopieren Sie den folgenden Inhalt in die Datei. Alternativ können Sie eine Beispielvorlagendatei für die Apache Spark-Poolkonfiguration herunterladen.

spark.synapse.diagnostic.emitters MyDestination1
spark.synapse.diagnostic.emitter.MyDestination1.type AzureEventHub
spark.synapse.diagnostic.emitter.MyDestination1.categories Log,EventLog,Metrics
spark.synapse.diagnostic.emitter.MyDestination1.secret <connection-string>

Geben Sie in der Konfigurationsdatei den folgenden Parameter an: <connection-string>. Weitere Beschreibungen der Parameter finden Sie unter Azure Event Hubs-Konfigurationen.

Schritt 3: Hochladen der Apache Spark-Konfigurationsdatei in den Apache Spark-Pool

  1. Navigieren Sie zu Ihrem Apache Spark-Pool in Synapse Studio (Manage -> Apache Spark pools).
  2. Klicken Sie rechts neben Ihrem Apache Spark-Pool auf die Schaltfläche ... , und wählen Sie Apache Spark configuration (Apache Spark-Konfiguration) aus.
  3. Klicken Sie auf Upload (Hochladen), wählen Sie die TXT-Konfigurationsdatei aus, und klicken Sie anschließend auf Apply (Anwenden).

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 Wahlfrei. Durch Trennzeichen getrennte 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 Wahlfrei. 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 des Azure Key Vault (AKV), in dem der geheime Schlüssel (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>.secret.keyVault.linkedService Wahlfrei. Der Name des mit Azure Key Vault verknüpften Diensts. Wenn dies in Synapse-Pipeline aktiviert ist, ist dies erforderlich, um den geheimen Schlüssel von AKV zu erhalten. (Stellen Sie sicher, dass die Managed Service Identity (MSI) über Leseberechtigung für den AKV verfügt).
spark.synapse.diagnostic.emitter.<destination>.filter.eventName.match Wahlfrei. Die durch Kommas getrennten Spark-Ereignisnamen, mit denen festgelegt werden kann, welche Ereignisse gesammelt werden sollen. Beispiel: SparkListenerApplicationStart,SparkListenerApplicationEnd
spark.synapse.diagnostic.emitter.<destination>.filter.loggerName.match Wahlfrei. Mit den kommagetrennten Log4j-Logger-Namen können Sie angeben, welche Protokolle gesammelt werden sollen. Beispiel: org.apache.spark.SparkContext,org.example.Logger
spark.synapse.diagnostic.emitter.<destination>.filter.metricName.match Wahlfrei. Mit den durch Trennzeichen getrennten Spark-Metriknamensuffixen können Sie angeben, welche Metriken erfasst werden sollen. Beispiel: jvm.heap.used

Hinweis

Die Verbindungszeichenfolge der Azure Event Hubs-Instanz sollte immer enthalten EntityPath, was der Name der Azure Event Hubs-Instanz ist.

Beispiel für Protokolldaten

Hier sehen Sie einen exemplarischen Protokolldatensatz im JSON-Format:

{
    "timestamp": "2021-01-02T12:34:56.789Z",
    "category": "Log|EventLog|Metrics",
    "workspaceName": "<my-workspace-name>",
    "sparkPool": "<spark-pool-name>",
    "livyId": "<livy-session-id>",
    "applicationId": "<application-id>",
    "applicationName": "<application-name>",
    "executorId": "<driver-or-executor-id>",
    "properties": {
        // The message properties of logs, events and metrics.
        "timestamp": "2021-01-02T12:34:56.789Z",
        "message": "Registering signal handler for TERM",
        "logger_name": "org.apache.spark.util.SignalUtils",
        "level": "INFO",
        "thread_name": "main"
        // ...
    }
}

Synapse-Arbeitsbereich mit aktiviertem Schutz vor Datenexfiltration

Azure Synapse Analytics-Arbeitsbereiche unterstützen die Aktivierung des Schutzes vor Datenexfiltration für Arbeitsbereiche. Bei Exfiltrationsschutz können die Protokolle und Metriken nicht direkt an die Zielendpunkte gesendet werden. In diesem Szenario können Sie entsprechende verwaltete private Endpunkte für verschiedene Zielendpunkte erstellen oder IP-Firewallregeln erstellen.

Sammeln von Apache Spark-Anwendungsprotokollen und Metriken nach Zertifikat und Dienstprinzipal

Die Apache Spark-Diagnose-Emitter-Erweiterung unterstützt jetzt den Zugriff auf Azure Event Hub durch Token-Abruf über die Service Principal-Authentifizierung mit Zertifikatsanmeldeinformationen. Weitere Informationen finden Sie im Artikel "Sammeln von Apache Spark Application Logs und Metriken zu Azure Event Hubs mit Certificate-Based-Diensthauptanmeldeinformationen".