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.

Zbieranie dzienników i metryk w usłudze Azure Event Hubs

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

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

Krok 2. Tworzenie pliku konfiguracji platformy Apache Spark

Utwórz element i skopiuj następującą diagnostic-emitter-azure-event-hub-conf.txt 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 Wymagany. Wbudowany typ miejsca docelowego. Aby włączyć miejsce docelowe usługi Azure Event Hubs, wartość powinna mieć wartość AzureEventHub.
spark.synapse.diagnostic.emitter.<destination>.categories Opcjonalny. Rozdzielone przecinkami kategorie dzienników. Dostępne wartości obejmują DriverLog, , EventLogExecutorLog, Metrics. Jeśli nie zostanie ustawiona, wartość domyślna to wszystkie kategorie.
spark.synapse.diagnostic.emitter.<destination>.secret Opcjonalny. Wystąpienie usługi Azure Event Hubs parametry połączenia. 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 magazynu kluczy platformy Azure, w którym jest przechowywany wpis tajny (parametry połączenia).
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.secretName Wymagane, jeśli .secret.keyVault jest określony. Nazwa wpisu tajnego usługi Azure Key Vault, w której jest przechowywany wpis tajny (parametry połączenia).
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.linkedService Opcjonalny. Połączona nazwa usługi Azure Key Vault. Po włączeniu w potoku usługi Synapse jest to konieczne do uzyskania wpisu tajnego z usługi AKV. (Upewnij się, że tożsamość usługi zarządzanej ma uprawnienia do odczytu w usłudze 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 rejestratora log4j rozdzielane przecinkami można określić, które dzienniki mają być zbierane. 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. Przykład: jvm.heap.used

Uwaga

Wystąpienie usługi Azure EventHub parametry połączenia powinno zawsze zawierać EntityPathwartość , która jest nazwą 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 dla obszarów roboczych. 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.