Logboeken en metrische gegevens van Uw Apache Spark-toepassingen verzamelen met behulp van een Azure Storage-account

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 te verzenden naar uw Azure-opslagaccount.

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 voor opslagaccount

Stap 1: Een opslagaccount maken

Als u diagnostische logboeken en metrische gegevens voor het opslagaccount wilt verzamelen, kunt u bestaande Azure Storage-accounts gebruiken. Of als u er nog geen hebt, kunt u een Azure Blob Storage-account maken of een opslagaccount maken voor gebruik met Azure Data Lake Storage Gen2.

Stap 2: een Apache Spark-configuratiebestand maken

Maak een diagnostic-emitter-azure-storage-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 AzureStorage
spark.synapse.diagnostic.emitter.MyDestination1.categories Log,EventLog,Metrics
spark.synapse.diagnostic.emitter.MyDestination1.uri https://<my-blob-storage>.blob.core.windows.net/<container-name>/<folder-name>
spark.synapse.diagnostic.emitter.MyDestination1.auth AccessKey
spark.synapse.diagnostic.emitter.MyDestination1.secret <storage-access-key>

Vul de volgende parameters in het configuratiebestand in: <my-blob-storage>, <container-name>, , <folder-name>. <storage-access-key> Voor meer beschrijving van de parameters kunt u verwijzen naar Azure Storage-configuraties

Stap 3: Upload het Apache Spark-configuratiebestand naar Synapse Studio en gebruik het in de Spark-pool

  1. Open de pagina Apache Spark-configuraties (Beheren -> Apache Spark-configuraties).
  2. Klik op de knop Importeren om het Apache Spark-configuratiebestand te uploaden naar Synapse Studio.
  3. Navigeer naar uw Apache Spark-pool in Synapse Studio (Beheren -> Apache Spark-pools).
  4. Klik op de knop '...' rechts van uw Apache Spark-pool en selecteer de Apache Spark-configuratie.
  5. U kunt het configuratiebestand selecteren dat u zojuist hebt geüpload in de vervolgkeuzelijst.
  6. Klik op Toepassen nadat u het configuratiebestand hebt geselecteerd.

Stap 4: De logboekbestanden in het Azure-opslagaccount weergeven

Nadat u een taak hebt verzonden naar de geconfigureerde Apache Spark-pool, moet u de logboeken en metrische gegevensbestanden in het doelopslagaccount kunnen zien. De logboeken worden in overeenkomstige paden geplaatst volgens verschillende toepassingen door <workspaceName>.<sparkPoolName>.<livySessionId>. Alle logboekbestanden hebben de indeling van JSON-regels (ook wel newline-gescheiden JSON, ndjson genoemd), wat handig is voor gegevensverwerking.

Beschikbare configuraties

Configuratie Beschrijving
spark.synapse.diagnostic.emitters Vereist. De door komma's gescheiden doelnamen van diagnostische emitters. Bijvoorbeeld MyDest1,MyDest2
spark.synapse.diagnostic.emitter.<destination>.type Vereist. Ingebouwd doeltype. Als u azure-opslagbestemming wilt inschakelen, AzureStorage moet u in dit veld worden opgenomen.
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>.auth Vereist. AccessKeyvoor het gebruik van toegangssleutelautorisatie voor opslagaccounts. SASvoor autorisatie van handtekeningen voor gedeelde toegang.
spark.synapse.diagnostic.emitter.<destination>.uri Vereist. De doel-blobcontainermap-URI. Moet overeenkomen met het patroon https://<my-blob-storage>.blob.core.windows.net/<container-name>/<folder-name>.
spark.synapse.diagnostic.emitter.<destination>.secret Optioneel. De geheime inhoud (AccessKey of SAS).
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault Vereist als .secret dit niet is opgegeven. De naam van de Azure Key Vault waar het geheim (AccessKey of SAS) 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 waar het geheim (AccessKey of SAS) 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

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.

  1. Navigeer naar Synapse Studio > Beheerde privé-eindpunten beheren>, klik op de knop Nieuw, selecteer Azure Blob Storage of Azure Data Lake Storage Gen2 en ga door.

    Beheerd privé-eindpunt maken 1

    Notitie

    We kunnen zowel Azure Blob Storage als Azure Data Lake Storage Gen2 ondersteunen. Maar we konden de abfss:// -indeling niet parseren. Azure Data Lake Storage Gen2-eindpunten moeten worden opgemaakt als een blob-URL:

    https://<my-blob-storage>.blob.core.windows.net/<container-name>/<folder-name> 
    
  2. Kies uw Azure Storage-account in de naam van het opslagaccount en klik op de knop Maken.

    Beheerd privé-eindpunt maken 2

  3. Wacht enkele minuten tot het inrichten van privé-eindpunten is uitgevoerd.

  4. Ga naar uw opslagaccount in Azure Portal en selecteer op de >pagina Verbindingen met privé-eindpunten voor netwerken de verbinding die is ingericht en goedkeuren.