Logboeken en metrische gegevens van Uw Apache Spark-toepassingen verzamelen met behulp van Azure Event Hubs

De diagnostische emitterextensie van Synapse Apache Spark is een bibliotheek waarmee de Apache Spark-toepassing de logboeken, gebeurtenislogboeken en metrische gegevens naar een of meer bestemmingen kan verzenden, waaronder Azure Log Analytics, Azure Storage en Azure Event Hubs.

In deze zelfstudie leert u hoe u de diagnostische emitterextensie van Synapse Apache Spark gebruikt om logboeken, gebeurtenislogboeken en metrische gegevens van Apache Spark-toepassingen naar uw Azure Event Hubs te verzenden.

Notitie

Deze functie is momenteel niet beschikbaar in de Azure Synapse Runtime voor Apache Spark 3.4 runtime, maar wordt ondersteund na algemene beschikbaarheid.

Logboeken en metrische gegevens verzamelen in Azure Event Hubs

Stap 1: Een Azure Event Hub-exemplaar maken

Als u diagnostische logboeken en metrische gegevens voor Azure Event Hubs wilt verzamelen, kunt u een bestaand Azure Event Hubs-exemplaar gebruiken. Of als u er nog geen hebt, kunt u een Event Hub maken.

Stap 2: een Apache Spark-configuratiebestand maken

Maak een diagnostic-emitter-azure-event-hub-conf.txt en kopieer de volgende inhoud naar het bestand. Of download een voorbeeldsjabloonbestand voor de configuratie van apache Spark-pools.

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>

Vul de volgende parameters in het configuratiebestand in: <connection-string>. Voor meer beschrijving van de parameters kunt u verwijzen naar Azure EventHub-configuraties

Stap 3: Het Apache Spark-configuratiebestand uploaden naar een Apache Spark-pool

  1. Navigeer naar uw Apache Spark-pool in Synapse Studio (Beheren -> Apache Spark-pools)
  2. Klik op de knop '...' rechts van uw Apache Spark-pool en selecteer de Apache Spark-configuratie
  3. Klik op Uploaden en kies het configuratiebestand .txt en klik op Toepassen.

Beschikbare configuraties

Configuratie Beschrijving
spark.synapse.diagnostic.emitters Vereist. De door komma's gescheiden doelnamen van diagnostische emitters.
spark.synapse.diagnostic.emitter.<destination>.type Vereist. Ingebouwd doeltype. Als u de Azure Event Hubs-bestemming wilt inschakelen, moet de waarde zijn AzureEventHub.
spark.synapse.diagnostic.emitter.<destination>.categories Optioneel. De door komma's gescheiden geselecteerde logboekcategorieën. Beschikbare waarden zijn onder andere DriverLog, ExecutorLog, EventLog. Metrics Als deze niet is ingesteld, is de standaardwaarde alle categorieën.
spark.synapse.diagnostic.emitter.<destination>.secret Optioneel. Het Azure EventHub-exemplaar verbindingsreeks. Dit veld moet overeenkomen met dit patroon Endpoint=sb://<FQDN>/;SharedAccessKeyName=<KeyName>;SharedAccessKey=<KeyValue>;EntityPath=<PathName>
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault Vereist als .secret dit niet is opgegeven. De naam van de Azure Key Vault waar het geheim (verbindingsreeks) is opgeslagen.
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.secretName Vereist als .secret.keyVault dit is opgegeven. De naam van het Azure Key Vault-geheim waarin het geheim (verbindingsreeks) is opgeslagen.
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.linkedService Optioneel. De naam van de gekoppelde Azure Key Vault-service. Wanneer deze functie is ingeschakeld in de Synapse-pijplijn, is dit nodig om het geheim van AKV te verkrijgen. (Zorg ervoor dat MSI leesmachtigingen heeft voor de AKV).
spark.synapse.diagnostic.emitter.<destination>.filter.eventName.match Optioneel. De namen van door komma's gescheiden Spark-gebeurtenissen kunt u opgeven welke gebeurtenissen moeten worden verzameld. Bijvoorbeeld: SparkListenerApplicationStart,SparkListenerApplicationEnd
spark.synapse.diagnostic.emitter.<destination>.filter.loggerName.match Optioneel. De door komma's gescheiden log4j-logboeknamen kunt u opgeven welke logboeken moeten worden verzameld. Bijvoorbeeld: org.apache.spark.SparkContext,org.example.Logger
spark.synapse.diagnostic.emitter.<destination>.filter.metricName.match Optioneel. Met de door komma's gescheiden naamachtervoegsels voor spark-metrische gegevens kunt u opgeven welke metrische gegevens moeten worden verzameld. Bijvoorbeeld:jvm.heap.used

Notitie

Het Azure EventHub-exemplaar verbindingsreeks moet altijd de EntityPathnaam van het Azure Event Hubs-exemplaar bevatten.

Voorbeeld van logboekgegevens

Hier volgt een voorbeeld van een logboekrecord in JSON-indeling:

{
    "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-werkruimte waarvoor beveiliging tegen gegevensexfiltratie is ingeschakeld

Azure Synapse Analytics-werkruimten bieden ondersteuning voor het inschakelen van gegevensexfiltratiebeveiliging voor werkruimten. Met exfiltratiebeveiliging kunnen de logboeken en metrische gegevens niet rechtstreeks naar de doeleindpunten worden verzonden. In dit scenario kunt u bijbehorende beheerde privé-eindpunten maken voor verschillende doeleindpunten of IP-firewallregels maken.