Udostępnij za pośrednictwem


Monitorowanie aplikacji platformy Apache Spark za pomocą usługi Azure Log Analytics

Z tego samouczka dowiesz się, jak włączyć łącznik programu Synapse Studio wbudowany w usługę Log Analytics. Następnie możesz zbierać i wysyłać metryki i dzienniki aplikacji platformy Apache Spark do obszaru roboczego usługi Log Analytics. Na koniec możesz użyć skoroszytu usługi Azure Monitor do wizualizacji metryk i dzienników.

Konfigurowanie informacji o obszarze roboczym

Wykonaj następujące kroki, aby skonfigurować niezbędne informacje w programie Synapse Studio.

Krok 1. Tworzenie obszaru roboczego usługi Log Analytics

Zapoznaj się z jednym z następujących zasobów, aby utworzyć ten obszar roboczy:

Krok 2. Zbieranie informacji o konfiguracji

Użyj dowolnej z poniższych opcji, aby przygotować konfigurację.

Opcja 1. Konfigurowanie przy użyciu identyfikatora i klucza obszaru roboczego usługi Log Analytics

Zbierz następujące wartości dla konfiguracji platformy Spark:

  • <LOG_ANALYTICS_WORKSPACE_ID>: identyfikator obszaru roboczego usługi Log Analytics.
  • <LOG_ANALYTICS_WORKSPACE_KEY>: klucz usługi Log Analytics. Aby to znaleźć, w witrynie Azure Portal przejdź do obszaru roboczego Azure Log Analytics>Agenci>Klucz podstawowy.
spark.synapse.logAnalytics.enabled true
spark.synapse.logAnalytics.workspaceId <LOG_ANALYTICS_WORKSPACE_ID>
spark.synapse.logAnalytics.secret <LOG_ANALYTICS_WORKSPACE_KEY>

Alternatywnie użyj następujących właściwości:

spark.synapse.diagnostic.emitters: LA
spark.synapse.diagnostic.emitter.LA.type: "AzureLogAnalytics"
spark.synapse.diagnostic.emitter.LA.categories: "Log,EventLog,Metrics"
spark.synapse.diagnostic.emitter.LA.workspaceId: <LOG_ANALYTICS_WORKSPACE_ID>
spark.synapse.diagnostic.emitter.LA.secret: <LOG_ANALYTICS_WORKSPACE_KEY>

Opcja 2. Konfigurowanie przy użyciu usługi Azure Key Vault

Uwaga

Musisz udzielić użytkownikom, którzy przesyłają aplikacje Apache Spark, uprawnień do odczytu tajnych danych. Aby uzyskać więcej informacji, zobacz Zapewnianie dostępu do kluczy, certyfikatów i wpisów tajnych usługi Key Vault za pomocą kontroli dostępu opartej na rolach platformy Azure. Po włączeniu tej funkcji w potoku Synapse należy użyć Opcji 3. Jest to konieczne, aby uzyskać tajemnicę z usługi Azure Key Vault z tożsamością zarządzaną przez obszar roboczy.

Aby skonfigurować usługę Azure Key Vault do przechowywania klucza obszaru roboczego, wykonaj następujące kroki:

  1. Utwórz Key Vault i przejdź do swojego Key Vault w portalu Azure.

  2. Udziel odpowiednich uprawnień użytkownikom lub tożsamościom zarządzanym obszarów roboczych.

  3. Na stronie ustawień magazynu kluczy wybierz pozycję Sekrety.

  4. Wybierz Generuj/Import.

  5. Na ekranie Tworzenie wpisu tajnego wybierz następujące wartości:

    • Nazwa: Wprowadź nazwę tajemnicy. Wprowadź SparkLogAnalyticsSecret dla domyślnej wartości.
    • Wartość: wprowadź <LOG_ANALYTICS_WORKSPACE_KEY> dla tajemnicy.
    • Dla pozostałych opcji zostaw wartości domyślne. Następnie wybierz Utwórz.
  6. Zbierz następujące wartości dla konfiguracji platformy Spark:

    • <LOG_ANALYTICS_WORKSPACE_ID>: identyfikator obszaru roboczego usługi Log Analytics.
    • <AZURE_KEY_VAULT_NAME>: nazwa magazynu kluczy, którą skonfigurowałeś.
    • <AZURE_KEY_VAULT_SECRET_KEY_NAME> (opcjonalnie): tajna nazwa w skrytce kluczy dla klucza przestrzeni roboczej. Wartość domyślna to SparkLogAnalyticsSecret.
spark.synapse.logAnalytics.enabled true
spark.synapse.logAnalytics.workspaceId <LOG_ANALYTICS_WORKSPACE_ID>
spark.synapse.logAnalytics.keyVault.name <AZURE_KEY_VAULT_NAME>
spark.synapse.logAnalytics.keyVault.key.secret <AZURE_KEY_VAULT_SECRET_KEY_NAME>

Alternatywnie użyj następujących właściwości:

spark.synapse.diagnostic.emitters LA
spark.synapse.diagnostic.emitter.LA.type: "AzureLogAnalytics"
spark.synapse.diagnostic.emitter.LA.categories: "Log,EventLog,Metrics"
spark.synapse.diagnostic.emitter.LA.workspaceId: <LOG_ANALYTICS_WORKSPACE_ID>
spark.synapse.diagnostic.emitter.LA.secret.keyVault: <AZURE_KEY_VAULT_NAME>
spark.synapse.diagnostic.emitter.LA.secret.keyVault.secretName: <AZURE_KEY_VAULT_SECRET_KEY_NAME>

Uwaga

Identyfikator obszaru roboczego można również przechowywać w usłudze Key Vault. Nawiąż do poprzednich kroków i zapisz identyfikator obszaru roboczego przy użyciu tajnej nazwy SparkLogAnalyticsWorkspaceId. Alternatywnie możesz użyć konfiguracji spark.synapse.logAnalytics.keyVault.key.workspaceId aby określić tajną nazwę identyfikatora obszaru roboczego w usłudze Key Vault.

Sposób 3. Konfigurowanie za pomocą połączonej usługi

Uwaga

W tej opcji należy nadać uprawnienia do odczytu sekretu tożsamości zarządzanej obszaru roboczego. Aby uzyskać więcej informacji, zobacz Zapewnianie dostępu do kluczy, certyfikatów i wpisów tajnych usługi Key Vault za pomocą kontroli dostępu opartej na rolach platformy Azure.

Aby skonfigurować połączoną usługę Key Vault w programie Synapse Studio do przechowywania klucza obszaru roboczego, wykonaj następujące kroki:

  1. Wykonaj wszystkie kroki opisane w poprzedniej sekcji "Opcja 2".

  2. Utwórz połączoną usługę Key Vault w programie Synapse Studio:

    a. Przejdź do Synapse Studio>Zarządzanie>Połączone usługi, a następnie wybierz Nowy.

    b. W polu wyszukiwania wyszukaj usługę Azure Key Vault.

    c. Wprowadź nazwę połączonej usługi.

    d. Wybierz magazyn kluczy, a następnie wybierz opcję Utwórz.

  3. spark.synapse.logAnalytics.keyVault.linkedServiceName Dodaj element do konfiguracji platformy Apache Spark.

spark.synapse.logAnalytics.enabled true
spark.synapse.logAnalytics.workspaceId <LOG_ANALYTICS_WORKSPACE_ID>
spark.synapse.logAnalytics.keyVault.name <AZURE_KEY_VAULT_NAME>
spark.synapse.logAnalytics.keyVault.key.secret <AZURE_KEY_VAULT_SECRET_KEY_NAME>
spark.synapse.logAnalytics.keyVault.linkedServiceName <LINKED_SERVICE_NAME>

Alternatywnie użyj następujących właściwości:

spark.synapse.diagnostic.emitters LA
spark.synapse.diagnostic.emitter.LA.type: "AzureLogAnalytics"
spark.synapse.diagnostic.emitter.LA.categories: "Log,EventLog,Metrics"
spark.synapse.diagnostic.emitter.LA.workspaceId: <LOG_ANALYTICS_WORKSPACE_ID>
spark.synapse.diagnostic.emitter.LA.secret.keyVault: <AZURE_KEY_VAULT_NAME>
spark.synapse.diagnostic.emitter.LA.secret.keyVault.secretName: <AZURE_KEY_VAULT_SECRET_KEY_NAME>
spark.synapse.diagnostic.emitter.LA.secret.keyVault.linkedService: <AZURE_KEY_VAULT_LINKED_SERVICE>

Aby uzyskać listę konfiguracji platformy Apache Spark, zobacz Dostępne konfiguracje platformy Apache Spark

Krok 3. Tworzenie konfiguracji platformy Apache Spark

Możesz utworzyć konfigurację Apache Spark w obszarze roboczym, a podczas tworzenia definicji notatnika lub zadania Apache Spark możesz wybrać konfigurację Apache Spark, której chcesz użyć z pulą Apache Spark. Po jej wybraniu zostaną wyświetlone szczegóły konfiguracji.

  1. Wybierz Zarządzaj>konfiguracjami Apache Spark.

  2. Wybierz przycisk Nowy , aby utworzyć nową konfigurację platformy Apache Spark.

  3. Nowa strona konfiguracji platformy Apache Spark zostanie otwarta po wybraniu przycisku Nowy .

    Zrzut ekranu przedstawiający tworzenie konfiguracji platformy Spark.

  4. W polu Nazwa możesz wprowadzić preferowaną i prawidłową nazwę.

  5. W polu Opis możesz wprowadzić w nim opis.

  6. W obszarze Adnotacje można dodawać adnotacje, klikając przycisk Nowy , a także usunąć istniejące adnotacje, wybierając i klikając przycisk Usuń .

  7. W obszarze Właściwości konfiguracji dodaj wszystkie właściwości z wybranej opcji konfiguracji, wybierając przycisk Dodaj . W polu Właściwość dodaj nazwę właściwości na liście, a w polu Wartość użyj wartości zebranej w kroku 2. Jeśli nie dodasz właściwości, usługa Azure Synapse będzie używać wartości domyślnej, jeśli ma to zastosowanie.

    Zrzut ekranu przedstawiający przykład aktualizowania właściwości konfiguracji.

Przesyłanie aplikacji platformy Apache Spark i wyświetlanie dzienników i metryk

Oto, jak to zrobić:

  1. Prześlij aplikację platformy Apache Spark do puli platformy Apache Spark skonfigurowanej w poprzednim kroku. Aby to zrobić, możesz użyć dowolnego z następujących sposobów:

    • Uruchom notatnik w programie Synapse Studio.
    • W programie Synapse Studio prześlij zadanie wsadowe platformy Apache Spark za pomocą definicji zadania platformy Apache Spark.
    • Uruchom potok zawierający aktywność platformy Apache Spark.
  2. Przejdź do określonego obszaru roboczego usługi Log Analytics, a następnie wyświetl metryki aplikacji i dzienniki po uruchomieniu aplikacji Platformy Apache Spark.

Zapisywanie niestandardowych dzienników aplikacji

Możesz użyć biblioteki Apache Log4j do zapisywania dzienników niestandardowych.

Przykład w języku Scala

%%spark
val logger = org.apache.log4j.LogManager.getLogger("com.contoso.LoggerExample")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
//log exception
try {
      1/0
 } catch {
      case e:Exception =>logger.warn("Exception", e)
}
// run job for task level metrics
val data = sc.parallelize(Seq(1,2,3,4)).toDF().count()

Przykład dla PySpark:

%%pyspark
logger = sc._jvm.org.apache.log4j.LogManager.getLogger("com.contoso.PythonLoggerExample")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")

Użyj przykładowego skoroszytu, aby zwizualizować metryki i dzienniki

  1. Pobierz skoroszyt.

  2. Otwórz i skopiuj zawartość pliku skoroszytu.

  3. W witrynie Azure Portal wybierz pozycję Skoroszyty obszaru roboczego>usługi Log Analytics.

  4. Otwórz pusty skoroszyt. Użyj trybu Edytor zaawansowany, wybierając ikonę </>.

  5. Wklej dowolny kod JSON, który istnieje.

  6. Wybierz pozycję Zastosuj, a następnie wybierz pozycję Zakończono edytowanie.

    Zrzut ekranu przedstawiający nowy skoroszyt.

    Zrzut ekranu przedstawiający sposób importowania skoroszytu.

Następnie prześlij aplikację platformy Apache Spark do skonfigurowanej puli platformy Apache Spark. Po przejściu aplikacji do stanu uruchomienia wybierz uruchomioną aplikację na liście rozwijanej skoroszytu.

Zrzut ekranu przedstawiający skoroszyt.

Możesz dostosować skoroszyt. Można na przykład użyć zapytań Kusto i skonfigurować alerty.

Zrzut ekranu przedstawiający dostosowywanie skoroszytu za pomocą zapytania i alertów.

Wykonywanie zapytań dotyczących danych za pomocą usługi Kusto

Poniżej przedstawiono przykład wykonywania zapytań dotyczących zdarzeń platformy Apache Spark:

SparkListenerEvent_CL
| where workspaceName_s == "{SynapseWorkspace}" and clusterName_s == "{SparkPool}" and livyId_s == "{LivyId}"
| order by TimeGenerated desc
| limit 100 

Oto przykład wykonywania zapytań dotyczących sterownika aplikacji platformy Apache Spark i dzienników funkcji wykonawczych:

SparkLoggingEvent_CL
| where workspaceName_s == "{SynapseWorkspace}" and clusterName_s == "{SparkPool}" and livyId_s == "{LivyId}"
| order by TimeGenerated desc
| limit 100

Oto przykład wykonywania zapytań dotyczących metryk platformy Apache Spark:

SparkMetrics_CL
| where workspaceName_s == "{SynapseWorkspace}" and clusterName_s == "{SparkPool}" and livyId_s == "{LivyId}"
| where name_s endswith "jvm.total.used"
| summarize max(value_d) by bin(TimeGenerated, 30s), executorId_s
| order by TimeGenerated asc

Tworzenie alertów i zarządzanie nimi

Użytkownicy mogą wykonywać zapytania dotyczące oceny metryk i dzienników z ustawioną częstotliwością oraz wyzwalać alert na podstawie wyników. Aby uzyskać więcej informacji, zobacz Tworzenie, wyświetlanie alertów dzienników i zarządzanie nimi przy użyciu usługi Azure Monitor.

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

Po utworzeniu obszaru roboczego usługi Synapse z włączoną ochroną przed eksfiltracją danych.

Jeśli chcesz włączyć tę funkcję, musisz utworzyć prośby o ustanowienie zarządzanego połączenia do prywatnego punktu końcowego w zakresach łącza prywatnego usługi Azure Monitor (AMPLS) w zatwierdzonych dzierżawach Microsoft Entra w obszarze roboczym.

Poniższe kroki można wykonać, aby utworzyć zarządzane połączenie prywatnego punktu końcowego z zakresami łącza prywatnego usługi Azure Monitor (AMPLS):

  1. Jeśli nie ma istniejącej usługi AMPLS, możesz skorzystać z konfiguracji połączenia Azure Monitor Private Link, aby ją utworzyć.
  2. Przejdź do swojego AMPLS w portalu Azure, na stronie Zasoby usługi Azure Monitor i wybierz pozycję Dodaj, aby dodać połączenie do obszaru roboczego usługi Azure Log Analytics.
  3. Przejdź do Synapse Studio > Zarządzanie > Zarządzanymi prywatnymi punktami końcowymi, wybierz przycisk Nowy, wybierz Zakresy łącza prywatnego usługi Azure Monitor i kontynuuj.

    Zrzut ekranu przedstawiający tworzenie prywatnego punktu końcowego zarządzanego przez usługę AMPLS 1.

  4. Wybierz utworzony zakres usługi Azure Monitor Private Link, a następnie wybierz przycisk Utwórz .

    Zrzut ekranu przedstawiający tworzenie zarządzanego prywatnego punktu końcowego AMPLS 2.

  5. Poczekaj kilka minut na aprowizowanie prywatnego punktu końcowego.
  6. Ponownie przejdź do AMPLS w portalu Azure na stronie Połączenia prywatnego punktu końcowego, wybierz aprowizowane połączenie i zatwierdź.

Uwaga

  • Obiekt AMPLS ma wiele ograniczeń, które należy wziąć pod uwagę podczas planowania konfiguracji usługi Private Link. Zobacz AMPLS limity , aby dowiedzieć się więcej na temat tych limitów.
  • Sprawdź, czy masz odpowiednie uprawnienia do tworzenia zarządzanego prywatnego punktu końcowego.

Dostępne konfiguracje

Konfigurowanie opis
spark.synapse.diagnostic.emitters Wymagane. Rozdzielane przecinkami nazwy docelowe emiterów diagnostycznych. Na przykład MyDest1,MyDest2
spark.synapse.diagnostic.emitter.<destination>.type Wymagane. Wbudowany typ destynacji. Aby włączyć miejsce docelowe usługi Azure Log Analytics, w tym polu należy uwzględnić usługę AzureLogAnalytics.
spark.synapse.diagnostic.emitter.<destination>.categories Opcjonalny. Wybrane kategorie 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>.workspaceId Wymagane. Aby włączyć miejsce docelowe usługi Azure Log Analytics, w tym polu należy uwzględnić identyfikator workspaceId.
spark.synapse.diagnostic.emitter.<destination>.secret Opcjonalny. Zawartość sekretu (klucz Log Analytics). Aby to znaleźć, w portalu Azure przejdź do obszaru roboczego usługi Azure Log Analytics, a następnie wybierz > Agenci > Klucz podstawowy.
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault Wymagane, jeśli .secret nie zostanie określony. Azure Key Vault nazwa, gdzie jest przechowywana tajemnica (klucz dostępu lub SAS).
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.secretName Wymagane, jeśli .secret.keyVault jest określony. Nazwa tajemnicy usługi Azure Key Vault, w której jest przechowywana.
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.linkedService Opcjonalny. Nazwa połączonej usługi Azure Key Vault. Po włączeniu w potoku usługi Synapse konieczne jest uzyskanie tajemnicy z usługi Azure Key Vault. (Upewnij się, że tożsamość usługi zarządzanej (MSI) ma dostęp do odczytu w Azure Key Vault).
spark.synapse.diagnostic.emitter.<destination>.filter.eventName.match Opcjonalny. Nazwy rejestratorów Log4j rozdzielone przecinkami pozwalają określić, które dzienniki chcesz zebrać. Na przykład SparkListenerApplicationStart,SparkListenerApplicationEnd
spark.synapse.diagnostic.emitter.<destination>.filter.loggerName.match Opcjonalny. Można określić nazwy rejestratorów log4j rozdzielane przecinkami, aby wskazać, 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. Na przykład:jvm.heap.used