Shromažďování protokolů a metrik aplikací Apache Spark pomocí účtu služby Azure Storage
Rozšíření diagnostického emitoru Synapse Apache Spark je knihovna, která aplikaci Apache Spark umožňuje generovat protokoly, protokoly událostí a metriky do jednoho nebo více cílů, včetně Azure Log Analytics, Azure Storage a Azure Event Hubs.
V tomto kurzu se dozvíte, jak pomocí rozšíření diagnostického emitoru Synapse Apache Sparku generovat protokoly aplikací Apache Spark, protokoly událostí a metriky do účtu úložiště Azure.
Shromažďování protokolů a metrik do účtu úložiště
Krok 1: Vytvoření účtu úložiště
Pokud chcete shromažďovat diagnostické protokoly a metriky do účtu úložiště, můžete použít existující účty Azure Storage. Nebo pokud ho nemáte, můžete si vytvořit účet úložiště objektů blob v Azure nebo vytvořit účet úložiště, který se bude používat s Azure Data Lake Storage Gen2.
Krok 2: Vytvoření konfiguračního souboru Apache Sparku
Vytvořte diagnostic-emitter-azure-storage-conf.txt
do souboru následující obsah a zkopírujte ho. Nebo si stáhněte ukázkový soubor šablony pro konfiguraci fondu Apache Spark.
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>
Do konfiguračního souboru zadejte následující parametry: <my-blob-storage>
, <container-name>
, <folder-name>
, <storage-access-key>
.
Další popis parametrů najdete v konfiguracích služby Azure Storage.
Krok 3: Nahrání konfiguračního souboru Apache Sparku do synapse Studia a jeho použití ve fondu Spark
- Otevřete stránku konfigurace Apache Sparku (Správa –> konfigurace Apache Sparku).
- Kliknutím na tlačítko Importovat nahrajte konfigurační soubor Apache Sparku do nástroje Synapse Studio.
- V nástroji Synapse Studio přejděte do fondu Apache Spark (správa –> fondy Apache Sparku).
- Klikněte na tlačítko "..." na pravé straně fondu Apache Spark a vyberte konfiguraci Apache Sparku.
- Konfigurační soubor, který jste právě nahráli, můžete vybrat v rozevírací nabídce.
- Po výběru konfiguračního souboru klikněte na Použít .
Krok 4: Zobrazení souborů protokolů v účtu úložiště Azure
Po odeslání úlohy do nakonfigurovaného fondu Apache Sparku byste měli být schopni zobrazit protokoly a soubory metrik v cílovém účtu úložiště.
Protokoly se umístí do odpovídajících cest podle různých aplikací .<workspaceName>.<sparkPoolName>.<livySessionId>
Všechny soubory protokolů budou ve formátu řádků JSON (označované také jako JSON s oddělovači newline, ndjson), což je vhodné pro zpracování dat.
Dostupné konfigurace
Konfigurace | Popis |
---|---|
spark.synapse.diagnostic.emitters |
Požadováno. Cílové názvy diagnostických emitorů oddělené čárkami. Například MyDest1,MyDest2 |
spark.synapse.diagnostic.emitter.<destination>.type |
Povinný: Předdefinovaný cílový typ Pokud chcete povolit cíl úložiště Azure, AzureStorage musí být zahrnut do tohoto pole. |
spark.synapse.diagnostic.emitter.<destination>.categories |
Nepovinné. Vybrané kategorie protokolu oddělené čárkami. Mezi dostupné hodnoty patří DriverLog , ExecutorLog , EventLog , Metrics . Pokud není nastavená, výchozí hodnota je všechny kategorie. |
spark.synapse.diagnostic.emitter.<destination>.auth |
Povinný: AccessKey pro použití autorizace přístupového klíče účtu úložiště. SAS pro autorizaci sdílených přístupových podpisů . |
spark.synapse.diagnostic.emitter.<destination>.uri |
Povinný: Identifikátor URI cílové složky kontejneru objektů blob. Měl by se shodovat se vzorem https://<my-blob-storage>.blob.core.windows.net/<container-name>/<folder-name> . |
spark.synapse.diagnostic.emitter.<destination>.secret |
Nepovinné. Tajný kód (AccessKey nebo SAS) obsah. |
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault |
Povinné, pokud .secret není zadáno. Název trezoru klíčů Azure, ve kterém je uložený tajný klíč (AccessKey nebo SAS). |
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.secretName |
Vyžaduje se, pokud .secret.keyVault je zadáno. Název tajného kódu služby Azure Key Vault, ve kterém je uložený tajný klíč (AccessKey nebo SAS). |
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.linkedService |
Nepovinné. Název propojené služby Azure Key Vault. Pokud je v kanálu Synapse povolené, je to nezbytné k získání tajného kódu z AKV. (Ujistěte se, že MSI má oprávnění ke čtení ve službě AKV). |
spark.synapse.diagnostic.emitter.<destination>.filter.eventName.match |
Nepovinné. Názvy událostí Spark oddělených čárkami můžete určit, které události se mají shromažďovat. Příklad: SparkListenerApplicationStart,SparkListenerApplicationEnd |
spark.synapse.diagnostic.emitter.<destination>.filter.loggerName.match |
Nepovinné. Názvy protokolovacího nástroje odděleného čárkami, můžete určit, které protokoly se mají shromažďovat. Příklad: org.apache.spark.SparkContext,org.example.Logger |
spark.synapse.diagnostic.emitter.<destination>.filter.metricName.match |
Nepovinné. Přípony názvů sparkových metrik oddělených čárkami můžete určit, které metriky se mají shromažďovat. Příklad: jvm.heap.used |
Ukázka dat protokolu
Tady je ukázkový záznam protokolu ve formátu JSON:
{
"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"
// ...
}
}
Pracovní prostor Synapse s povolenou ochranou před exfiltrací dat
Pracovní prostory Azure Synapse Analytics podporují zapnutí ochrany před exfiltrací dat. Díky ochraně exfiltrace se protokoly a metriky nedají odesílat přímo do cílových koncových bodů. V tomto scénáři můžete vytvořit odpovídající spravované privátní koncové body pro různé cílové koncové body nebo vytvořit pravidla brány firewall protokolu IP.
Přejděte na Synapse Studio > Spravovat > spravované privátní koncové body, klikněte na tlačítko Nový , vyberte Azure Blob Storage nebo Azure Data Lake Storage Gen2 a pokračujte.
Poznámka:
Můžeme podporovat Azure Blob Storage i Azure Data Lake Storage Gen2. Nemohli jsme ale analyzovat formát abfss:// . Koncové body Azure Data Lake Storage Gen2 by se měly formátovat jako adresa URL objektu blob:
https://<my-blob-storage>.blob.core.windows.net/<container-name>/<folder-name>
V názvu účtu úložiště zvolte svůj účet Azure Storage a klikněte na tlačítko Vytvořit.
Počkejte několik minut na zřizování privátního koncového bodu.
Na webu Azure Portal přejděte ke svému účtu úložiště, na stránce Připojení privátního koncového bodu sítě>vyberte zřízené připojení a schvalte ho.