Delen via


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.

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.