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:
Skapa JAR-filen spark-listeners-snapshotalytics-1.0-SNAPSHOT.jar enligt beskrivningen i GitHub readme.
Skapa Dropwizard-mätare eller räknare i programkoden. Du kan använda klassen
UserMetricsSystemsom definierats i övervakningsbiblioteket. I följande exempel skapas en räknare med namnetcounter1.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:
Skapa jar-filen spark-listeners-1.0-SNAPSHOT.jar och spark-listeners-snapshotalytics-1.0-SNAPSHOT.jar enligt beskrivningen i GitHub readme.
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>, A1Du hittar en exempelkonfigurationsfil här.
I din programkod inkluderar du projektet spark-listeners-tillståndslyssnare och importerar till programkoden.
import com.microsoft.pnp.logging.Log4jConfigurationKonfigurera 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) } }Lägg Apache Spark logga meddelanden på lämplig nivå i koden efter behov. Använd till exempel metoden
logDebugfö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:
Skapa spark-jobs-projektet i övervakningsbiblioteket enligt beskrivningen i GitHub readme.
Gå till Databricks-arbetsytan och skapa ett nytt jobb enligt beskrivningen här.
På sidan med jobbinformation väljer du Ange JAR.
Upload JAR-filen från
/src/spark-jobs/target/spark-jobs-1.0-SNAPSHOT.jar.För Main-klassanger du .
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.