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
- Przejdź do puli platformy Apache Spark w programie Synapse Studio (Zarządzanie —> pule platformy Apache Spark)
- Kliknij przycisk "..." po prawej stronie puli platformy Apache Spark i wybierz pozycję Konfiguracja platformy Apache Spark
- 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 , , EventLog ExecutorLog , 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ć EntityPath
wartość , 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.