Sdílet prostřednictvím


Shromažďování protokolů a metrik aplikací Apache Spark pomocí služby Azure Event Hubs

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 služby Azure Event Hubs.

Poznámka:

Tato funkce je v současné době nedostupná v modulu Runtime Azure Synapse pro modul runtime Apache Spark 3.4 , ale bude podporována po ga.

Shromažďování protokolů a metrik do služby Azure Event Hubs

Krok 1: Vytvoření instance centra událostí Azure

Pokud chcete shromažďovat diagnostické protokoly a metriky do služby Azure Event Hubs, můžete použít existující instanci služby Azure Event Hubs. Nebo pokud ho nemáte, můžete vytvořit centrum událostí.

Krok 2: Vytvoření konfiguračního souboru Apache Sparku

Vytvořte diagnostic-emitter-azure-event-hub-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 AzureEventHub
spark.synapse.diagnostic.emitter.MyDestination1.categories Log,EventLog,Metrics
spark.synapse.diagnostic.emitter.MyDestination1.secret <connection-string>

Do konfiguračního souboru zadejte následující parametry: <connection-string>. Další popis parametrů najdete v konfiguracích Azure EventHubu.

Krok 3: Nahrání konfiguračního souboru Apache Sparku do fondu Apache Spark

  1. Přejděte do fondu Apache Sparku v synapse Studiu (správa –> fondy Apache Sparku)
  2. Klikněte na tlačítko "..." na pravé straně fondu Apache Spark a vyberte konfiguraci Apache Sparku.
  3. Klikněte na Nahrát a zvolte konfigurační soubor .txt a klikněte na Použít.

Dostupné konfigurace

Konfigurace Popis
spark.synapse.diagnostic.emitters Požadováno. Cílové názvy diagnostických emitorů oddělené čárkami.
spark.synapse.diagnostic.emitter.<destination>.type Povinný: Předdefinovaný cílový typ Pokud chcete povolit cíl služby Azure Event Hubs, měla by být AzureEventHubhodnota .
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>.secret Nepovinné. Instance Azure EventHubu připojovací řetězec. Toto pole by mělo odpovídat tomuto vzoru. Endpoint=sb://<FQDN>/;SharedAccessKeyName=<KeyName>;SharedAccessKey=<KeyValue>;EntityPath=<PathName>
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íč (připojovací řetězec).
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 tajný klíč (připojovací řetězec) uložený.
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

Poznámka:

Instance Azure EventHubu připojovací řetězec by měla vždy obsahovat EntityPathnázev instance Azure Event Hubs.

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.