Dela via


Övervaka Apache Spark-program med Azure Log Analytics

I den här självstudien får du lära dig hur du aktiverar Synapse Studio-anslutningsappen som är inbyggd i Log Analytics. Du kan sedan samla in och skicka Apache Spark-programmått och loggar till din Log Analytics-arbetsyta. Slutligen kan du använda en Azure Monitor-arbetsbok för att visualisera mått och loggar.

Konfigurera information om arbetsytan

Följ de här stegen för att konfigurera nödvändig information i Synapse Studio.

Steg 1: Skapa en Log Analytics-arbetsyta

Kontakta någon av följande resurser för att skapa den här arbetsytan:

Steg 2: Samla in konfigurationsinformation

Använd något av följande alternativ för att förbereda konfigurationen.

Alternativ 1: Konfigurera med Log Analytics-arbetsyte-ID och nyckel

Samla in följande värden för Spark-konfigurationen:

  • <LOG_ANALYTICS_WORKSPACE_ID>: Log Analytics-arbetsyte-ID.
  • <LOG_ANALYTICS_WORKSPACE_KEY>: Log Analytics-nyckel. Om du vill hitta det går du till Primärnyckel för Azure Log Analytics-arbetsyteagenter>>i Azure Portal.
spark.synapse.logAnalytics.enabled true
spark.synapse.logAnalytics.workspaceId <LOG_ANALYTICS_WORKSPACE_ID>
spark.synapse.logAnalytics.secret <LOG_ANALYTICS_WORKSPACE_KEY>

Alternativ 2: Konfigurera med Azure Key Vault

Kommentar

Du måste bevilja läshemlighetsbehörighet till de användare som skickar Apache Spark-program. Mer information finns i Ge åtkomst till Key Vault-nycklar, certifikat och hemligheter med en rollbaserad åtkomstkontroll i Azure. När du aktiverar den här funktionen i en Synapse-pipeline måste du använda alternativ 3. Detta är nödvändigt för att hämta hemligheten från Azure Key Vault med en hanterad identitet för arbetsytan.

Följ dessa steg för att konfigurera Azure Key Vault att lagra arbetsytenyckeln:

  1. Skapa och gå till ditt nyckelvalv i Azure Portal.

  2. På inställningssidan för nyckelvalvet väljer du Hemligheter.

  3. Välj Generera/Importera.

  4. Välj följande värden på skärmen Skapa en hemlighet:

    • Namn: Ange ett namn för hemligheten. Som standard anger du SparkLogAnalyticsSecret.
    • Värde: Ange <LOG_ANALYTICS_WORKSPACE_KEY> för hemligheten.
    • Lämna standardvärdena för de andra alternativen. Välj sedan Skapa.
  5. Samla in följande värden för Spark-konfigurationen:

    • <LOG_ANALYTICS_WORKSPACE_ID>: Log Analytics-arbetsytans ID.
    • <AZURE_KEY_VAULT_NAME>: Namnet på nyckelvalvet som du konfigurerade.
    • <AZURE_KEY_VAULT_SECRET_KEY_NAME> (valfritt): Det hemliga namnet i nyckelvalvet för arbetsytenyckeln. Standardvärdet är 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>

Kommentar

Du kan också lagra arbetsyte-ID:t i Key Vault. Se föregående steg och lagra arbetsyte-ID:t med det hemliga namnet SparkLogAnalyticsWorkspaceId. Du kan också använda konfigurationen spark.synapse.logAnalytics.keyVault.key.workspaceId för att ange arbetsyte-ID:ts hemliga namn i Key Vault.

Alternativ 3. Konfigurera med en länkad tjänst

Kommentar

I det här alternativet måste du bevilja läshemlighetsbehörighet till arbetsytans hanterade identitet. Mer information finns i Ge åtkomst till Key Vault-nycklar, certifikat och hemligheter med en rollbaserad åtkomstkontroll i Azure.

Följ dessa steg för att konfigurera en länkad Key Vault-tjänst i Synapse Studio för lagring av arbetsytenyckeln:

  1. Följ alla steg i föregående avsnitt, "Alternativ 2".

  2. Skapa en länkad Key Vault-tjänst i Synapse Studio:

    a. Gå till Synapse Studio>Hantera>länkade tjänster och välj sedan Ny.

    b. Sök efter Azure Key Vault i sökrutan.

    c. Ange ett namn för den länkade tjänsten.

    d. Välj ditt nyckelvalv och välj Skapa.

  3. Lägg till ett spark.synapse.logAnalytics.keyVault.linkedServiceName objekt i Apache Spark-konfigurationen.

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

En lista över Apache Spark-konfigurationer finns i Tillgängliga Apache Spark-konfigurationer

Steg 3: Skapa en Apache Spark-konfiguration

Du kan skapa en Apache Spark-konfiguration på din arbetsyta, och när du skapar en definition av Notebook- eller Apache Spark-jobb kan du välja den Apache Spark-konfiguration som du vill använda med din Apache Spark-pool. När du väljer den visas information om konfigurationen.

  1. Välj Hantera>Apache Spark-konfigurationer.

  2. Välj knappen Ny för att skapa en ny Apache Spark-konfiguration.

  3. Ny Apache Spark-konfigurationssida öppnas när du har valt Ny knapp.

    Skärmbild som skapar Spark-konfiguration.

  4. Som Namn kan du ange önskat och giltigt namn.

  5. För Beskrivning kan du ange en beskrivning i den.

  6. För Anteckningar kan du lägga till anteckningar genom att klicka på knappen Nytt , och du kan även ta bort befintliga anteckningar genom att välja och klicka på knappen Ta bort .

  7. För Konfigurationsegenskaper lägger du till alla egenskaper från konfigurationsalternativet du valde genom att välja knappen Lägg till . För Egenskap lägger du till egenskapsnamnet enligt listan och för Värde använder du det värde som du samlade in under steg 2. Om du inte lägger till en egenskap använder Azure Synapse standardvärdet när det är tillämpligt.

    Skärmbild med ett exempel för uppdatering av konfigurationsegenskaper.

Skicka ett Apache Spark-program och visa loggarna och måtten

Så här gör du:

  1. Skicka ett Apache Spark-program till Apache Spark-poolen som konfigurerades i föregående steg. Du kan använda något av följande sätt att göra det:

    • Kör en notebook-fil i Synapse Studio.
    • I Synapse Studio skickar du ett Apache Spark-batchjobb via en Apache Spark-jobbdefinition.
    • Kör en pipeline som innehåller Apache Spark-aktivitet.
  2. Gå till den angivna Log Analytics-arbetsytan och visa sedan programmåtten och loggarna när Apache Spark-programmet börjar köras.

Skriva anpassade programloggar

Du kan använda Apache Log4j-biblioteket för att skriva anpassade loggar.

Exempel för 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()

Exempel för 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")

Använda exempelarbetsboken för att visualisera mått och loggar

  1. Ladda ned arbetsboken.

  2. Öppna och kopiera innehållet i arbetsbokens fil.

  3. I Azure Portal väljer du Log Analytics-arbetsytearbetsböcker>.

  4. Öppna den tomma arbetsboken. Använd läget Avancerad redigerare genom att< välja ikonen />.

  5. Klistra in all JSON-kod som finns.

  6. Välj Använd och välj sedan Klar redigering.

    Skärmbild som visar en ny arbetsbok.

    Skärmbild som visar hur du importerar en arbetsbok.

Skicka sedan ditt Apache Spark-program till den konfigurerade Apache Spark-poolen. När programmet har körts väljer du det program som körs i listrutan för arbetsboken.

Skärmbild som visar en arbetsbok.

Du kan anpassa arbetsboken. Du kan till exempel använda Kusto-frågor och konfigurera aviseringar.

Skärmbild som visar hur du anpassar en arbetsbok med en fråga och aviseringar.

Fråga efter data med Kusto

Följande är ett exempel på att köra frågor mot Apache Spark-händelser:

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

Här är ett exempel på hur du kör frågor mot Apache Spark-programdrivrutinen och körloggarna:

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

Och här är ett exempel på frågor mot Apache Spark-mått:

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

Skapa och hantera aviseringar

Användare kan fråga för att utvärdera mått och loggar med en angivna frekvens och utlösa en avisering baserat på resultaten. Mer information finns i Skapa, visa och hantera loggaviseringar med hjälp av Azure Monitor.

Synapse-arbetsyta med dataexfiltreringsskydd aktiverat

När Synapse-arbetsytan har skapats med dataexfiltreringsskydd aktiverat.

När du vill aktivera den här funktionen måste du skapa hanterade privata slutpunktsanslutningsbegäranden till Azure Monitor private link scopes (AMPLS) i arbetsytans godkända Microsoft Entra-klienter.

Du kan följa stegen nedan för att skapa en hanterad privat slutpunktsanslutning till Azure Monitor private link scopes (AMPLS):

  1. Om det inte finns någon befintlig AMPLS kan du följa konfigurationen av Azure Monitor Private Link-anslutningen för att skapa en.
  2. Gå till AMPLS i Azure Portal på sidan Azure Monitor-resurser och välj Lägg till för att lägga till anslutning till din Azure Log Analytics-arbetsyta.
  3. Gå till Synapse Studio > Hantera > hanterade privata slutpunkter, välj knappen Ny , välj Azure Monitor Private Link Scopes och fortsätt.

    Skärmbild av skapa AMPLS-hanterad privat slutpunkt 1.

  4. Välj ditt Azure Monitor Private Link-omfång som du skapade och välj knappen Skapa .

    Skärmbild av skapa AMPLS-hanterad privat slutpunkt 2.

  5. Vänta några minuter på etablering av privata slutpunkter.
  6. Gå till AMPLS i Azure Portal igen. På sidan Privata slutpunktsanslutningar väljer du den etablerade anslutningen och Godkänner.

Kommentar