Freigeben über


Überwachen von Apache Spark-Anwendungen mit Azure Log Analytics

In diesem Tutorial erfahren Sie, wie Sie den in Log Analytics integrierten Synapse Studio-Connector aktivieren. Anschließend können Sie Anwendungsmetriken und -protokolle von Apache Spark erfassen und an Ihren Log Analytics-Arbeitsbereich senden. Abschließend können Sie eine Azure Monitor-Arbeitsmappe verwenden, um die Metriken und Protokolle zu visualisieren.

Konfigurieren von Arbeitsbereichsinformationen

Führen Sie die folgenden Schritte aus, um die erforderlichen Informationen in Synapse Studio zu konfigurieren.

Schritt 1: Erstellen eines Log Analytics-Arbeitsbereichs

Informationen zum Erstellen dieses Arbeitsbereichs finden Sie in den folgenden Ressourcen:

Schritt 2: Erfassen von Konfigurationsinformationen

Verwenden Sie eine der folgenden Optionen, um die Konfiguration vorzubereiten.

Option 1: Konfigurieren mit der ID und dem Schlüssel des Log Analytics-Arbeitsbereichs

Sammeln Sie die folgenden Werte für die Spark-Konfiguration:

  • <LOG_ANALYTICS_WORKSPACE_ID>: ID des Log Analytics-Arbeitsbereichs
  • <LOG_ANALYTICS_WORKSPACE_KEY>: Log Analytics-Schlüssel. Diesen Schlüssel finden Sie im Azure-Portal unter Azure Log Analytics-Arbeitsbereich>Agents>Primärschlüssel.
spark.synapse.logAnalytics.enabled true
spark.synapse.logAnalytics.workspaceId <LOG_ANALYTICS_WORKSPACE_ID>
spark.synapse.logAnalytics.secret <LOG_ANALYTICS_WORKSPACE_KEY>

Option 2: Konfigurieren mit Azure Key Vault

Hinweis

Benutzern, die Apache Spark-Anwendungen übermitteln, muss die Berechtigung 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. Wenn Sie dieses Feature in einer Synapse-Pipeline aktivieren, müssen Sie Option 3 verwenden. Dies ist erforderlich, um das Geheimnis aus Azure Key Vault mit der verwalteten Identität des Arbeitsbereichs abzurufen.

Führen Sie die folgenden Schritte aus, um Azure Key Vault zum Speichern des Arbeitsbereichsschlüssels zu konfigurieren:

  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 aus.

  3. Wählen Sie die Option Generieren/Importieren aus.

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

    • Name: Geben Sie einen Namen für das Geheimnis ein. Geben Sie als Standardeinstellung SparkLogAnalyticsSecret ein.
    • Wert: Geben Sie als Geheimnis <LOG_ANALYTICS_WORKSPACE_KEY> ein.
    • Behalten Sie bei den anderen Optionen die Standardwerte bei. Wählen Sie dann Erstellen aus.
  5. Sammeln Sie die folgenden Werte für die Spark-Konfiguration:

    • <LOG_ANALYTICS_WORKSPACE_ID>: Die ID des Log Analytics-Arbeitsbereichs
    • <AZURE_KEY_VAULT_NAME>: Der von Ihnen konfigurierte Schlüsseltresorname
    • <AZURE_KEY_VAULT_SECRET_KEY_NAME> (optional): Der Geheimnisname im Schlüsseltresor für den Arbeitsbereichsschlüssel. Der Standardwert lautet SparkLogAnalyticsSecret.
spark.synapse.logAnalytics.enabled true
spark.synapse.logAnalytics.workspaceId <LOG_ANALYTICS_WORKSPACE_ID>
spark.synapse.logAnalytics.keyVault.name <AZURE_KEY_VAULT_NAME>
spark.synapse.logAnalytics.keyVault.key.secret <AZURE_KEY_VAULT_SECRET_KEY_NAME>

Hinweis

Sie können auch die Arbeitsbereichs-ID in Key Vault speichern. Gehen Sie wie oben beschrieben vor, und speichern Sie die Arbeitsbereichs-ID mit dem Geheimnisnamen SparkLogAnalyticsWorkspaceId. Alternativ können Sie die Konfiguration spark.synapse.logAnalytics.keyVault.key.workspaceId verwenden, um den Geheimnisnamen der Arbeitsbereichs-ID in Key Vault anzugeben.

Option 3. Konfigurieren mit einem verknüpften Dienst

Hinweis

Bei dieser Option müssen Sie der verwalteten Identität des Arbeitsbereichs Berechtigung zum Lesen von Geheimnissen erteilen. Weitere Informationen finden Sie unter Gewähren des Zugriffs auf Key Vault-Schlüssel, -Zertifikate und -Geheimnisse mit der rollenbasierten Zugriffssteuerung in Azure.

Führen Sie die folgenden Schritte aus, um in Synapse Studio einen mit Key Vault verknüpften Dienst zum Speichern des Arbeitsbereichsschlüssels zu konfigurieren:

  1. Führen Sie alle Schritte im vorherigen Abschnitt unter „Option 2“ aus.

  2. Erstellen Sie in Synapse Studio einen mit Key Vault verknüpften Dienst:

    a. Navigieren Sie zu Synapse Studio>Verwalten>Verknüpfte Dienste, und wählen Sie dann Neu aus.

    b. Suchen Sie mithilfe des Suchfelds nach Azure Key Vault.

    c. Geben Sie einen Namen für den verknüpften Dienst ein.

    d. Wählen Sie Ihren Schlüsseltresor und dann Erstellen aus.

  3. Fügen Sie der Apache Spark-Konfiguration ein Element vom Typ spark.synapse.logAnalytics.keyVault.linkedServiceName hinzu.

spark.synapse.logAnalytics.enabled true
spark.synapse.logAnalytics.workspaceId <LOG_ANALYTICS_WORKSPACE_ID>
spark.synapse.logAnalytics.keyVault.key.secret <AZURE_KEY_VAULT_SECRET_KEY_NAME>
spark.synapse.logAnalytics.keyVault.linkedServiceName <LINKED_SERVICE_NAME>

Eine Liste der Apache Spark-Konfigurationen finden Sie unter Verfügbare Apache Spark-Konfigurationen.

Schritt 3: Erstellen einer Apache Spark-Konfiguration

Sie können eine Apache Spark-Konfiguration für Ihren Arbeitsbereich erstellen. Wenn Sie dann eine Notebook- oder Apache Spark-Auftragsdefinition erstellen, können Sie die Apache Spark-Konfiguration auswählen, die Sie mit Ihrem Apache Spark-Pool verwenden möchten. Bei Auswahl der Definition werden die Details der Konfiguration angezeigt.

  1. Wählen Sie Verwalten>Apache Spark-Konfigurationen aus.

  2. Wählen Sie die Schaltfläche Neu aus, um eine neue Apache Spark-Konfiguration zu erstellen.

  3. Die Seite Neue Apache Spark-Konfiguration wird geöffnet, nachdem Sie die Schaltfläche Neu ausgewählt haben.

    Screenshot: Erstellen einer Spark-Konfiguration.

  4. Bei Name können Sie Ihren bevorzugten und gültigen Namen eingeben.

  5. Bei Beschreibung können Sie eine Beschreibung eingeben.

  6. Bei Anmerkungen können Sie Anmerkungen hinzufügen, indem Sie auf Neu klicken. Sie können auch vorhandene Anmerkungen löschen, indem Sie auf Löschen klicken.

  7. Fügen Sie für Konfigurationseigenschaften alle Eigenschaften der von Ihnen ausgewählten Konfigurationsoption hinzu, indem Sie die Schaltfläche Hinzufügen auswählen. Fügen Sie für Eigenschaft den Eigenschaftsnamen wie aufgelistet hinzu, und verwenden Sie für Wert den Wert, den Sie in Schritt 2 erfasst haben. Wenn Sie keine Eigenschaft hinzufügen, verwendet Azure Synapse ggf. den entsprechenden Standardwert.

    Screenshot: Beispiel für das Aktualisieren der Konfigurationseigenschaften

Übermitteln einer Apache Spark-Anwendung und Anzeigen der Protokolle und Metriken

Gehen Sie dazu wie folgt vor:

  1. Übermitteln Sie eine Apache Spark-Anwendung an den im vorherigen Schritt konfigurierten Apache Spark-Pool. Sie können dazu eine der folgenden Methoden verwenden:

    • Führen Sie ein Notebook in Synapse Studio aus.
    • Übermitteln Sie in Synapse Studio einen Apache Spark-Batchauftrag über eine Apache Spark-Auftragsdefinition.
    • Führen Sie eine Pipeline mit einer Apache Spark-Aktivität aus.
  2. Navigieren Sie zum angegebenen Log Analytics-Arbeitsbereich, und sehen Sie sich die Anwendungsmetriken und -protokolle an, wenn die Apache Spark-Anwendung gestartet wird.

Schreiben von benutzerdefinierten Anwendungsprotokollen

Sie können die Apache Log4j-Bibliothek verwenden, um benutzerdefinierte Protokolle zu schreiben.

Ein Beispiel für Scala:

%%spark
val logger = org.apache.log4j.LogManager.getLogger("com.contoso.LoggerExample")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
//log exception
try {
      1/0
 } catch {
      case e:Exception =>logger.warn("Exception", e)
}
// run job for task level metrics
val data = sc.parallelize(Seq(1,2,3,4)).toDF().count()

Ein Beispiel für PySpark:

%%pyspark
logger = sc._jvm.org.apache.log4j.LogManager.getLogger("com.contoso.PythonLoggerExample")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")

Visualisieren der Metriken und Protokolle unter Verwendung der Beispielarbeitsmappe

  1. Laden Sie die Arbeitsmappe herunter.

  2. Öffnen Sie die Arbeitsmappendatei, und kopieren Sie den Inhalt.

  3. Wählen Sie im Azure-Portal die Option Log Analytics-Arbeitsbereich>Arbeitsmappen aus.

  4. Öffnen Sie die Arbeitsmappe namens Leer. Verwenden Sie den Modus Erweiterter Editor, indem Sie das Symbol </> auswählen.

  5. Fügen Sie den gesamten vorhandenen JSON-Code ein.

  6. Wählen Sie Anwenden und dann Bearbeitung abgeschlossen aus.

    Screenshot: Neue Arbeitsmappe.

    Screenshot: Importieren einer Arbeitsmappe.

Übermitteln Sie als Nächstes Ihre Apache Spark-Anwendung an den konfigurierten Apache Spark-Pool. Wenn sich die Anwendung im Ausführungszustand befindet, können Sie die ausgeführte Anwendung in der Dropdownliste der Arbeitsmappen auswählen.

Screenshot: Arbeitsmappe.

Sie können die Arbeitsmappe anpassen. Beispielsweise können Sie Kusto-Abfragen verwenden und Warnungen konfigurieren.

Screenshot: Anpassen einer Arbeitsmappe mit einer Abfrage und Warnungen.

Abfragen von Daten mit Kusto

Hier sehen Sie ein Beispiel für das Abfragen von Apache Spark-Ereignissen:

SparkListenerEvent_CL
| where workspaceName_s == "{SynapseWorkspace}" and clusterName_s == "{SparkPool}" and livyId_s == "{LivyId}"
| order by TimeGenerated desc
| limit 100 

Hier sehen Sie ein Beispiel für das Abfragen von Treiber- und Executor-Protokollen der Apache Spark-Anwendung:

SparkLoggingEvent_CL
| where workspaceName_s == "{SynapseWorkspace}" and clusterName_s == "{SparkPool}" and livyId_s == "{LivyId}"
| order by TimeGenerated desc
| limit 100

Und hier sehen Sie ein Beispiel für das Abfragen von Apache Spark-Metriken:

SparkMetrics_CL
| where workspaceName_s == "{SynapseWorkspace}" and clusterName_s == "{SparkPool}" and livyId_s == "{LivyId}"
| where name_s endswith "jvm.total.used"
| summarize max(value_d) by bin(TimeGenerated, 30s), executorId_s
| order by TimeGenerated asc

Erstellen und Verwalten von Warnungen

Benutzer können Abfragen ausführen, um Metriken und Protokolle mit einer bestimmten Häufigkeit auszuwerten und basierend auf den Ergebnissen eine Warnung auszulösen. Weitere Informationen finden Sie unter Erstellen, Anzeigen und Verwalten von Protokollwarnungen mithilfe von Azure Monitor.

Synapse-Arbeitsbereich mit aktiviertem Schutz vor Datenexfiltration

Nachdem der Synapse-Arbeitsbereich mit aktiviertem Schutz vor Datenexfiltration erstellt wurde.

Wenn Sie dieses Feature aktivieren möchten, müssen Sie in den genehmigten Microsoft Entra-Mandanten des Arbeitsbereichs Anforderungen für verwaltete private Endpunktverbindungen mit Azure Monitor Private Link-Bereichen (Azure Monitor Private Link Scopes, AMPLS) erstellen.

Sie können die folgenden Schritte ausführen, um eine verwaltete private Endpunktverbindung mit AMPLS zu erstellen:

  1. Wenn kein AMPLS vorhanden ist, können Sie die Anweisungen unter Verwenden von Azure Private Link zum Verbinden von Netzwerken mit Azure Monitor befolgen, um einen zu erstellen.
  2. Navigieren Sie im Azure-Portal zu Ihrem AMPLS, und wählen Sie auf der Seite Azure Monitor-Ressourcen die Option Hinzufügen aus, um Ihrem Azure Log Analytics-Arbeitsbereich eine Verbindung hinzuzufügen.
  3. Navigieren Sie zu Synapse Studio > Verwalten > Verwaltete private Endpunkte, wählen Sie die Schaltfläche Neu, die Option Azure Monitor-Private Link-Bereiche und dann Weiter aus.

    Screenshot: Erstellen eines verwalteten privaten Endpunkts für AMPLS 1

  4. Wählen Sie den von Ihnen erstellten Azure Monitor-Private Link-Bereich und dann die Schaltfläche Erstellen aus.

    Screenshot: Erstellen eines verwalteten privaten Endpunkts für AMPLS 2

  5. Die Bereitstellung des privaten Endpunkts dauert einige Minuten.
  6. Navigieren Sie im Azure-Portal erneut zu Ihrem AMPLS. Wählen Sie auf der Seite Private Endpunktverbindungen die eingerichtete Verbindung und dann Genehmigen aus.

Hinweis