Dela via


Samla in loggar och mått för Apache Spark-program med Hjälp av Azure Event Hubs

Synapse Apache Spark-tillägget för diagnostikemitterare är ett bibliotek som gör det möjligt för Apache Spark-programmet att generera loggar, händelseloggar och mått till ett eller flera mål, inklusive Azure Log Analytics, Azure Storage och Azure Event Hubs.

I den här självstudien får du lära dig hur du använder tillägget Synapse Apache Spark diagnostic emitter för att generera Apache Spark-programloggar, händelseloggar och mått till dina Azure Event Hubs.

Samla in loggar och mått till Azure Event Hubs

Steg 1: Skapa en Azure Event Hubs-instans

Om du vill samla in diagnostikloggar och mått till Azure Event Hubs kan du använda en befintlig Azure Event Hubs-instans. Eller om du inte har någon kan du skapa en händelsehubb.

Steg 2: Skapa en Apache Spark-konfigurationsfil

Skapa och diagnostic-emitter-azure-event-hub-conf.txt kopiera följande innehåll till filen. Eller ladda ned en exempelmallfil för Konfiguration av Apache Spark-pooler.

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>

Fyll i följande parametrar i konfigurationsfilen: <connection-string>. Mer beskrivning av parametrarna finns i Azure Event Hubs-konfigurationer.

Steg 3: Ladda upp Apache Spark-konfigurationsfilen till Apache Spark-poolen

  1. Gå till din Apache Spark-pool i Synapse Studio (Hantera –> Apache Spark-pooler)
  2. Klicka på knappen "..." till höger om Apache Spark-poolen och välj Apache Spark-konfiguration
  3. Klicka på Ladda upp och välj konfigurationsfilen ".txt" och klicka på Använd.

Tillgängliga konfigurationer

Konfiguration beskrivning
spark.synapse.diagnostic.emitters Obligatoriskt. Kommaavgränsade målnamn för diagnostikemittare.
spark.synapse.diagnostic.emitter.<destination>.type Obligatoriskt. Inbyggd måltyp. Om du vill aktivera Azure Event Hubs-målet ska värdet vara AzureEventHub.
spark.synapse.diagnostic.emitter.<destination>.categories Valfritt. De kommaavgränsade valda loggkategorierna. Tillgängliga värden är DriverLog, ExecutorLog, EventLog, Metrics. Om det inte anges är standardvärdet alla kategorier.
spark.synapse.diagnostic.emitter.<destination>.secret Valfritt. Azure Event Hubs-instansen anslutningssträng. Det här fältet ska matcha det här mönstret Endpoint=sb://<FQDN>/;SharedAccessKeyName=<KeyName>;SharedAccessKey=<KeyValue>;EntityPath=<PathName>
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault Krävs om .secret inte har angetts. Azure Key Vault-namnet där hemligheten (anslutningssträng) lagras.
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.secretName Krävs om .secret.keyVault anges. Det hemliga namnet på Azure Key Vault där hemligheten (anslutningssträng) lagras.
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.linkedService Valfritt. Det länkade tjänstnamnet för Azure Key Vault. När det är aktiverat i Synapse-pipelinen är detta nödvändigt för att hämta hemligheten från AKV. (Kontrollera att MSI har läsbehörighet för AKV).
spark.synapse.diagnostic.emitter.<destination>.filter.eventName.match Valfritt. De kommaavgränsade spark-händelsenamnen kan du ange vilka händelser som ska samlas in. Till exempel: SparkListenerApplicationStart,SparkListenerApplicationEnd
spark.synapse.diagnostic.emitter.<destination>.filter.loggerName.match Valfritt. De kommaavgränsade log4j-loggningsnamnen kan du ange vilka loggar som ska samlas in. Till exempel: org.apache.spark.SparkContext,org.example.Logger
spark.synapse.diagnostic.emitter.<destination>.filter.metricName.match Valfritt. Med kommaavgränsade spark-måttnamnssuffix kan du ange vilka mått som ska samlas in. Till exempel: jvm.heap.used

Kommentar

Azure Eventhub-instansen anslutningssträng ska alltid innehålla EntityPath, som är namnet på Azure Event Hubs-instansen.

Exempel på loggdata

Här är en exempelloggpost i 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-arbetsyta med dataexfiltreringsskydd aktiverat

Azure Synapse Analytics-arbetsytor stöder aktivering av dataexfiltreringsskydd för arbetsytor. Med exfiltreringsskydd kan loggarna och måtten inte skickas direkt till målslutpunkterna. Du kan skapa motsvarande hanterade privata slutpunkter för olika målslutpunkter eller skapa IP-brandväggsregler i det här scenariot.