Azure Databricks-toepassingslogboeken verzenden naar Azure Monitor

In dit artikel wordt beschreven hoe u toepassingslogboeken en metrische gegevens van Azure Databricks naar een Log Analytics-werkruimte verzendt. Hiervoor wordt de Azure Databricks Monitoring Library gebruikt,die beschikbaar is op GitHub.

Vereisten

Configureer uw Azure Databricks voor het gebruik van de bewakingsbibliotheek, zoals beschreven in GitHub leesmij.

Notitie

De bewakingsbibliotheek streamt Apache Spark gebeurtenissen en metrische spark structured streaming-gegevens van uw taken naar Azure Monitor. U hoeft geen wijzigingen aan te brengen in uw toepassingscode voor deze gebeurtenissen en metrische gegevens.

Metrische gegevens van toepassingen verzenden met Dropwizard

Spark maakt gebruik van een configureerbaar systeem voor metrische gegevens op basis van de Dropwizard Metrics Library. Zie Metrische gegevens in de Spark-documentatie voor meer informatie.

Volg deze stappen om metrische gegevens van Azure Databricks toepassing naar Azure Monitor verzenden:

  1. Bouw het JAR-bestand spark-listeners-GitHub- 1.0-SNAPSHOT.jar.

  2. Maak Dropwizard-meters of -tellers in uw toepassingscode. U kunt de klasse UserMetricsSystem gebruiken die is gedefinieerd in de bewakingsbibliotheek. In het volgende voorbeeld wordt een teller met de naam counter1 gemaakt.

    import org.apache.spark.metrics.UserMetricsSystems
    import org.apache.spark.sql.SparkSession
    
    object StreamingQueryListenerSampleJob  {
    
      private final val METRICS_NAMESPACE = "samplejob"
      private final val COUNTER_NAME = "counter1"
    
      def main(args: Array[String]): Unit = {
    
        val spark = SparkSession
          .builder
          .getOrCreate
    
        val driverMetricsSystem = UserMetricsSystems
            .getMetricSystem(METRICS_NAMESPACE, builder => {
              builder.registerCounter(COUNTER_NAME)
            })
    
        driverMetricsSystem.counter(COUNTER_NAME).inc(5)
      }
    }
    

    De bewakingsbibliotheek bevat een voorbeeldtoepassing die laat zien hoe u de klasse UserMetricsSystem gebruikt.

Toepassingslogboeken verzenden met Log4j

Volg deze stappen Azure Databricks uw toepassingslogboeken naar Azure Log Analytics te verzenden met behulp van de Log4j-appender in de bibliotheek:

  1. Bouw het JAR-bestand spark-listeners-1.0-SNAPSHOT.jar en het JAR-bestand spark-listeners-GitHub.1.0-SNAPSHOT.jar.

  2. Maak een log4j.properties-configuratiebestand voor uw toepassing. Neem de volgende configuratie-eigenschappen op. Vervang waar aangegeven de naam en het logboekniveau van uw toepassingspakket:

    log4j.appender.A1=com.microsoft.pnp.logging.loganalytics.LogAnalyticsAppender
    log4j.appender.A1.layout=com.microsoft.pnp.logging.JSONLayout
    log4j.appender.A1.layout.LocationInfo=false
    log4j.additivity.<your application package name>=false
    log4j.logger.<your application package name>=<log level>, A1
    

    U vindt hier een voorbeeldconfiguratiebestand.

  3. Neem in uw toepassingscode het project spark-listeners-tischealytics op en importeer com.microsoft.pnp.logging.Log4jconfiguration het in uw toepassingscode.

    import com.microsoft.pnp.logging.Log4jConfiguration
    
  4. Configureer Log4j met behulp van het bestand log4j.properties dat u in stap 3 hebt gemaakt:

    getClass.getResourceAsStream("<path to file in your JAR file>/log4j.properties") {
          stream => {
            Log4jConfiguration.configure(stream)
          }
    }
    
  5. Voeg Apache Spark logboekberichten toe op het juiste niveau in uw code, indien nodig. Gebruik bijvoorbeeld de methode om logDebug een foutopsporingslogboekbericht te verzenden. Zie Logboekregistratie in de Spark-documentatie voor meer informatie.

    logTrace("Trace message")
    logDebug("Debug message")
    logInfo("Info message")
    logWarning("Warning message")
    logError("Error message")
    

De voorbeeldtoepassing uitvoeren

De bewakingsbibliotheek bevat een voorbeeldtoepassing die laat zien hoe u zowel metrische gegevens van toepassingen als toepassingslogboeken naar uw Azure Monitor. Het voorbeeld uitvoeren:

  1. Bouw het spark-jobs-project in de bewakingsbibliotheek, zoals beschreven in GitHub readme.

  2. Navigeer naar uw Databricks-werkruimte en maak een nieuwe taak, zoals hier wordt beschreven.

  3. Selecteer op de detailpagina van de taak Jar instellen.

  4. Upload JAR-bestand uit /src/spark-jobs/target/spark-jobs-1.0-SNAPSHOT.jar .

  5. Voer in bij Hoofdklasse. com.microsoft.pnp.samplejob.StreamingQueryListenerSampleJob

  6. Selecteer een cluster dat al is geconfigureerd voor het gebruik van de bewakingsbibliotheek. Zie Configure Azure Databricks to send metrics to Azure Monitor.

Wanneer de taak wordt uitgevoerd, kunt u de toepassingslogboeken en metrische gegevens bekijken in uw Log Analytics-werkruimte.

Toepassingslogboeken worden weergegeven onder SparkLoggingEvent_CL:

SparkLoggingEvent_CL | where logger_name_s contains "com.microsoft.pnp"

Metrische gegevens van toepassingen worden weergegeven onder SparkMetric_CL:

SparkMetric_CL | where name_s contains "rowcounter" | limit 50

Belangrijk

Nadat u hebt gecontroleerd of de metrische gegevens worden weergegeven, stopt u de voorbeeldtoepassings job.

Volgende stappen

Implementeer het dashboard voor prestatiebewaking dat bij deze codebibliotheek hoort om prestatieproblemen in uw productie-Azure Databricks op te lossen.