Dela via


Övervaka Apache Spark-program med Azure Log Analytics (förhandsversion)

Tillägget för apache spark-diagnostikemitterare i Infrastruktur är ett bibliotek som gör det möjligt för Apache Spark-program att generera loggar, händelseloggar och mått till flera mål, inklusive Azure Log Analytics, Azure Storage och Azure-händelsehubbar.

I den här självstudien får du lära dig hur du konfigurerar och genererar Spark-loggar och -mått till Log Analytics i Fabric. När du har konfigurerat kan du samla in och analysera Apache Spark-programmått och loggar på log analytics-arbetsytan.

Konfigurera information om arbetsytan

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

Steg 1: Skapa en Log Analytics-arbetsyta

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

Steg 2: Skapa en infrastrukturmiljöartefakt med Apache Spark-konfiguration

Om du vill konfigurera Spark skapar du en infrastrukturmiljöartefakt och väljer något av följande alternativ:

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

  1. Skapa en infrastrukturmiljöartefakt i infrastrukturresurser

  2. Lägg till följande Spark-egenskaper med lämpliga värden i miljöartefakten eller välj Lägg till från .yml i menyfliksområdet för att ladda ned yaml-exempelfilen, som redan innehåller de nödvändiga egenskaperna.

    • <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.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>
    spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.
    

    Du kan också använda samma konfiguration som Azure Synapse genom att använda följande egenskaper eller välja Lägg till från .yml i menyfliksområdet för att ladda ned yaml-exempelfilen.

    spark.synapse.logAnalytics.enabled: "true"
    spark.synapse.logAnalytics.workspaceId: <LOG_ANALYTICS_WORKSPACE_ID>
    spark.synapse.logAnalytics.secret: <LOG_ANALYTICS_WORKSPACE_KEY>
    spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.
    
  3. Spara och publicera ändringarna.

Alternativ 2: Konfigurera med Azure Key Vault

Kommentar

Känt problem: Det går inte att starta en session med alternativ 2 preliminärt. För närvarande förhindrar lagring av hemligheter i Key Vault Spark-sessioner från att starta. Prioritera konfigurationen med hjälp av den metod som beskrivs i alternativ 1.

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.

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

  1. Gå till ditt Key Vault i Azure Portal.

  2. På inställningssidan för nyckelvalvet väljer du Hemligheter och sedan Generera/importera.

  3. På skärmen Skapa en hemlighet anger du följande värden:

    • 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.
  4. Skapa en infrastrukturmiljöartefakt i infrastrukturresurser

  5. Lägg till följande Spark-egenskaper med motsvarande värden i miljöartefakten eller Välj Lägg till från .yml i menyfliksområdet i miljöartefakten för att ladda ned yaml-exempelfilen som innehåller följande Spark-egenskaper.

    • <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 properties for LA
    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.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.
    

    Du kan också använda samma konfiguration som Azure Synapse genom att använda följande egenskaper eller välja Lägg till från .yml i menyfliksområdet för att ladda ned yaml-exempelfilen.

    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.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.
    

    Kommentar

    Du kan också lagra arbetsyte-ID:t i Key Vault. Ange det hemliga namnet till SparkLogAnalyticsWorkspaceId, eller använd konfigurationen spark.synapse.logAnalytics.keyVault.key.workspaceId för att ange namnet på arbetsytans ID-hemlighet.

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

  6. Spara och publicera ändringarna.

Steg 3: Koppla miljöartefakten till notebook-filer eller spark-jobbdefinitioner eller ange den som standard för arbetsytan

Så här kopplar du miljön till notebook-filer eller Spark-jobbdefinitioner:

  1. Gå till notebook-filen eller Spark-jobbdefinitionen i Infrastrukturresurser.
  2. Välj menyn Miljö på fliken Start och välj den konfigurerade miljön.
  3. Konfigurationen tillämpas när du har startat en Spark-session.

Så här anger du miljön som standard för arbetsytan:

  1. Gå till Arbetsyteinställningar i Infrastrukturresurser.
  2. Hitta Spark-inställningarna i inställningarna för arbetsytan (inställningen Arbetsyta –> Dataingenjör ing/Vetenskap –> Spark-inställningar)
  3. Välj fliken Miljö och välj miljön med diagnostik spark-egenskaper konfigurerade och klicka på Spara.

Kommentar

Endast arbetsyteadministratörer kan hantera konfigurationer. Värdena gäller för notebook-filer och Spark-jobbdefinitioner som kopplas till Arbetsyteinställningar. Mer information finns i Inställningar för infrastrukturarbetsyta.

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

Så här skickar du ett Apache Spark-program:

  1. Skicka in ett Apache Spark-program med den associerade miljön, 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 Infrastrukturresurser.
    • Skicka ett Apache Spark-batchjobb via en Apache Spark-jobbdefinition.
    • Kör dina Spark-aktiviteter i pipelines.
  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. Här är exempel på Scala och PySpark:

Scala-exempel:

%%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()

PySpark-exempel:

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

Fråga efter data med Kusto

Så här kör du frågor mot Apache Spark-händelser:

SparkListenerEvent_CL
| where fabricWorkspaceId_g == "{FabricWorkspaceId}" and artifactId_g == "{ArtifactId}" and fabricLivyId_g == "{LivyId}"
| order by TimeGenerated desc
| limit 100 

Så här frågar du Spark-programdrivrutinen och körloggarna:

SparkLoggingEvent_CL
| where fabricWorkspaceId_g == "{FabricWorkspaceId}" and artifactId_g == "{ArtifactId}" and fabricLivyId_g == "{LivyId}"
| order by TimeGenerated desc
| limit 100 

Så här frågar du Apache Spark-mått:

SparkMetrics_CL
| where fabricWorkspaceId_g == "{FabricWorkspaceId}" and artifactId_g == "{ArtifactId}" and fabricLivyId_g == "{LivyId}"
| where name_s endswith "jvm.total.used"
| summarize max(value_d) by bin(TimeGenerated, 30s), executorId_s
| order by TimeGenerated asc

Databegränsningar

Fabric skickar loggdata till Azure Monitor med hjälp av HTTP Data Collector-API:et. De data som publiceras i API:et för Insamling av Azure Monitor-data omfattas av vissa begränsningar:

  • Högst 30 MB per post till Azure Monitor Data Collector API. Det här är en storleksgräns för ett enda inlägg. Om data från ett enda inlägg överskrider 30 MB bör du dela upp data i mindre segment och skicka dem samtidigt.
  • Maximalt 32 KB för fältvärden. Om fältvärdet är större än 32 kB trunkeras data.
  • Rekommenderas högst 50 fält för en viss typ. Detta är en praktisk gräns med tanke på användbarhet och sökfunktion.
  • Tabeller i Log Analytics-arbetsytor stöder endast upp till 500 kolumner.
  • Högst 45 tecken för kolumnnamn.

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.

Infrastrukturarbetsytor med hanterat virtuellt nätverk

Azure Log Analytics kan för närvarande inte väljas som mål för Spark-loggar och måttutsläpp i ett hanterat virtuellt nätverk eftersom den hanterade privata slutpunkten inte stöder Log Analytics som datakälla.

Nästa steg