Udostępnij za pośrednictwem


Zbieranie dzienników i metryk aplikacji platformy Apache Spark przy użyciu usługi Azure Event Hubs

Rozszerzenie emitera diagnostycznego usługi Synapse Apache Spark to biblioteka umożliwiająca aplikacji Apache Spark emitowanie dzienników, dzienników zdarzeń i metryk do co najmniej jednego miejsca docelowego, w tym usługi Azure Log Analytics, Azure Storage i Azure Event Hubs.

Z tego samouczka dowiesz się, jak używać rozszerzenia emitera diagnostycznego usługi Synapse Apache Spark do emitowania dzienników, dzienników zdarzeń i metryk aplikacji platformy Apache Spark do usługi Azure Event Hubs.

Zbierz logi i metryki do usługi Azure Event Hubs

Krok 1. Tworzenie wystąpienia usługi Azure Event Hubs

Aby zebrać dzienniki diagnostyczne i metryki do usługi Azure Event Hubs, możesz użyć istniejącej instancji Azure Event Hubs. Jeśli go nie masz, możesz utworzyć centrum zdarzeń.

Krok 2. Tworzenie pliku konfiguracji platformy Apache Spark

Utwórz diagnostic-emitter-azure-event-hub-conf.txt i skopiuj następującą zawartość do pliku. Możesz też pobrać przykładowy plik szablonu dla konfiguracji puli platformy 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>

Wypełnij następujące parametry w pliku konfiguracji: <connection-string>. Aby uzyskać więcej informacji na temat parametrów, zobacz Konfiguracje usługi Azure Event Hubs.

Krok 3. Przekazywanie pliku konfiguracji platformy Apache Spark do puli platformy Apache Spark

  1. Przejdź do puli platformy Apache Spark w programie Synapse Studio (Zarządzanie —> pule platformy Apache Spark)
  2. Kliknij przycisk "..." po prawej stronie puli platformy Apache Spark i wybierz pozycję Konfiguracja platformy Apache Spark
  3. Kliknij pozycję Przekaż i wybierz plik konfiguracji ".txt", a następnie kliknij przycisk Zastosuj.

Dostępne konfiguracje

Konfigurowanie opis
spark.synapse.diagnostic.emitters Wymagane. Rozdzielane przecinkami nazwy docelowe emiterów diagnostycznych.
spark.synapse.diagnostic.emitter.<destination>.type Wymagane. Wbudowany typ destynacji. Aby włączyć miejsce docelowe usługi Azure Event Hubs, wartość powinna mieć wartość AzureEventHub.
spark.synapse.diagnostic.emitter.<destination>.categories Opcjonalny. Kategorie wybranych dzienników, rozdzielone przecinkami. Dostępne wartości obejmują DriverLog, , ExecutorLogEventLog, Metrics. Jeśli nie zostanie ustawiona, wartość domyślna to wszystkie kategorie.
spark.synapse.diagnostic.emitter.<destination>.secret Opcjonalny. Łańcuch połączenia instancji usługi Azure Event Hubs. To pole powinno być zgodne z tym wzorcem Endpoint=sb://<FQDN>/;SharedAccessKeyName=<KeyName>;SharedAccessKey=<KeyValue>;EntityPath=<PathName>
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault Wymagane, jeśli .secret nie zostanie określony. Nazwa Azure Key Vault, w którym jest przechowywany tajny klucz (ciąg połączenia).
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.secretName Wymagane, jeśli .secret.keyVault jest określony. Nazwa tajemnicy w usłudze Azure Key Vault, w której jest przechowywana tajemnica (ciąg połączenia).
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.linkedService Opcjonalny. Nazwa połączonej usługi Azure Key Vault. Po włączeniu w potoku Synapse jest to niezbędne do uzyskania tajemnicy z Azure Key Vault. (Upewnij się, że MSI ma uprawnienia do odczytu w AKV).
spark.synapse.diagnostic.emitter.<destination>.filter.eventName.match Opcjonalny. Rozdzielane przecinkami nazwy zdarzeń platformy Spark można określić, które zdarzenia mają być zbierane. Na przykład: SparkListenerApplicationStart,SparkListenerApplicationEnd.
spark.synapse.diagnostic.emitter.<destination>.filter.loggerName.match Opcjonalny. Nazwy rejestratorów log4j, oddzielone przecinkami, pozwalają określić, które dzienniki należy zbierać. Na przykład: org.apache.spark.SparkContext,org.example.Logger.
spark.synapse.diagnostic.emitter.<destination>.filter.metricName.match Opcjonalny. Sufiksy nazw metryk platformy Spark rozdzielone przecinkami umożliwiają określenie metryk do zebrania. Na przykład: jvm.heap.used.

Uwaga

Ciąg połączenia wystąpienia usługi Azure EventHub powinien zawsze zawierać EntityPath, które jest nazwą tego wystąpienia usługi Azure Event Hubs.

Przykład danych dziennika

Oto przykładowy rekord dziennika w formacie 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"
        // ...
    }
}

Obszar roboczy usługi Synapse z włączoną ochroną przed eksfiltracją danych

Obszary robocze usługi Azure Synapse Analytics obsługują włączanie ochrony przed eksfiltracją danych. W przypadku ochrony przed eksfiltracją dzienniki i metryki nie mogą być wysyłane bezpośrednio do docelowych punktów końcowych. W tym scenariuszu można utworzyć odpowiednie zarządzane prywatne punkty końcowe dla różnych docelowych punktów końcowych lub utworzyć reguły zapory adresów IP.