Sdílet prostřednictvím


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

  1. Otevřete stránku konfigurace Apache Sparku (Správa –> konfigurace Apache Sparku).
  2. Kliknutím na tlačítko Importovat nahrajte konfigurační soubor Apache Sparku do nástroje Synapse Studio.
  3. V nástroji Synapse Studio přejděte do fondu Apache Spark (správa –> fondy Apache Sparku).
  4. Klikněte na tlačítko "..." na pravé straně fondu Apache Spark a vyberte konfiguraci Apache Sparku.
  5. Konfigurační soubor, který jste právě nahráli, můžete vybrat v rozevírací nabídce.
  6. 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ý: AccessKeypro 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.

  1. 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.

    Vytvoření spravovaného privátního koncového bodu 1

    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> 
    
  2. V názvu účtu úložiště zvolte svůj účet Azure Storage a klikněte na tlačítko Vytvořit.

    Vytvoření spravovaného privátního koncového bodu 2

  3. Počkejte několik minut na zřizování privátního koncového bodu.

  4. 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.