Skicka Azure Databricks-programloggar till Azure Monitor

Den här artikeln visar hur du skickar programloggar och mått från Azure Databricks till en Log Analytics-arbetsyta. Den använder Azure Databricks Monitoring Library, som finns på GitHub.

Förutsättningar

Konfigurera ditt Azure Databricks att använda övervakningsbiblioteket enligt beskrivningen i GitHub viktigt.

Anteckning

Övervakningsbiblioteket strömmar händelser Apache Spark Spark Structured Streaming från dina jobb till Azure Monitor. Du behöver inte göra några ändringar i programkoden för dessa händelser och mått.

Skicka programmått med Dropwizard

Spark använder ett konfigurerbart måttsystem som baseras på Dropwizard Metrics Library. Mer information finns i Mått i Spark-dokumentationen.

Följ dessa steg om du vill Azure Databricks programmått från Azure Monitor till programkoden:

  1. Skapa JAR-filen spark-listeners-snapshotalytics-1.0-SNAPSHOT.jar enligt beskrivningen i GitHub readme.

  2. Skapa Dropwizard-mätare eller räknare i programkoden. Du kan använda klassen UserMetricsSystem som definierats i övervakningsbiblioteket. I följande exempel skapas en räknare med namnet counter1 .

    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)
      }
    }
    

    Övervakningsbiblioteket innehåller ett exempelprogram som visar hur du använder klassen .

Skicka programloggar med Log4j

Följ dessa steg Azure Databricks att skicka dina programloggar Azure Databricks Azure Log Analytics med log4j-tilläggsfilen i biblioteket:

  1. Skapa jar-filen spark-listeners-1.0-SNAPSHOT.jar och spark-listeners-snapshotalytics-1.0-SNAPSHOT.jar enligt beskrivningen i GitHub readme.

  2. Skapa en log4j.properties-konfigurationsfil för ditt program. Inkludera följande konfigurationsegenskaper. Ersätt programpaketets namn och loggnivå där det anges:

    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
    

    Du hittar en exempelkonfigurationsfil här.

  3. I din programkod inkluderar du projektet spark-listeners-tillståndslyssnare och importerar till programkoden.

    import com.microsoft.pnp.logging.Log4jConfiguration
    
  4. Konfigurera Log4j med filen log4j.properties som du skapade i steg 3:

    getClass.getResourceAsStream("<path to file in your JAR file>/log4j.properties") {
          stream => {
            Log4jConfiguration.configure(stream)
          }
    }
    
  5. Lägg Apache Spark logga meddelanden på lämplig nivå i koden efter behov. Använd till exempel metoden logDebug för att skicka ett felsökningsloggmeddelande. Mer information finns i Loggning i Spark-dokumentationen.

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

Köra exempelprogrammet

Övervakningsbiblioteket innehåller ett exempelprogram som visar hur du skickar både programmått och programloggar till Azure Monitor. Så här kör du exemplet:

  1. Skapa spark-jobs-projektet i övervakningsbiblioteket enligt beskrivningen i GitHub readme.

  2. Gå till Databricks-arbetsytan och skapa ett nytt jobb enligt beskrivningen här.

  3. På sidan med jobbinformation väljer du Ange JAR.

  4. Upload JAR-filen från /src/spark-jobs/target/spark-jobs-1.0-SNAPSHOT.jar .

  5. För Main-klassanger du .

  6. Välj ett kluster som redan har konfigurerats för att använda övervakningsbiblioteket. Se Konfigurera Azure Databricks att skicka mått till Azure Monitor.

När jobbet körs kan du visa programloggarna och måtten på Log Analytics-arbetsytan.

Programloggar visas under SparkLoggingEvent_CL:

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

Programmått visas under SparkMetric_CL:

SparkMetric_CL | where name_s contains "rowcounter" | limit 50

Viktigt

När du har verifierat att måtten visas stoppar du exempelprogramjobbet.

Nästa steg

Distribuera instrumentpanelen för prestandaövervakning som medföljer det här kodbiblioteket för att felsöka prestandaproblem i dina Azure Databricks arbetsbelastningar.