Azure Databricks-toepassingslogboeken verzenden naar Azure Monitor
Notitie
Dit artikel is afhankelijk van een opensource-bibliotheek die wordt gehost op GitHub op: https://github.com/mspnp/spark-monitoring.
De oorspronkelijke bibliotheek ondersteunt Azure Databricks Runtimes 10.x (Spark 3.2.x) en eerder.
Databricks heeft een bijgewerkte versie bijgedragen ter ondersteuning van Azure Databricks Runtimes 11.0 (Spark 3.3.x) en hoger op de l4jv2
vertakking op: https://github.com/mspnp/spark-monitoring/tree/l4jv2.
Houd er rekening mee dat de release 11.0 niet achterwaarts compatibel is vanwege de verschillende logboekregistratiesystemen die worden gebruikt in de Databricks Runtimes. Zorg ervoor dat u de juiste build gebruikt voor uw Databricks Runtime. De bibliotheek en GitHub-opslagplaats bevinden zich in de onderhoudsmodus. Er zijn geen plannen voor verdere releases en ondersteuning voor problemen is alleen best-effort. Neem contact op azure-spark-monitoring-help@databricks.commet eventuele aanvullende vragen over de bibliotheek of de roadmap voor het bewaken en vastleggen van uw Azure Databricks-omgevingen.
In dit artikel wordt beschreven hoe u toepassingslogboeken en metrische gegevens van Azure Databricks naar een Log Analytics-werkruimte verzendt. Deze maakt gebruik van de Azure Databricks Monitoring Library, die beschikbaar is op GitHub.
Vereisten
Configureer uw Azure Databricks-cluster voor het gebruik van de bewakingsbibliotheek, zoals beschreven in het Leesmij-leesmij-bestand van GitHub.
Notitie
De bewakingsbibliotheek streamt gebeurtenissen op Apache Spark-niveau en metrische gegevens van Spark Structured Streaming van uw taken naar Azure Monitor. U hoeft geen wijzigingen aan te brengen in uw toepassingscode voor deze gebeurtenissen en metrische gegevens.
Metrische toepassingsgegevens verzenden met behulp van 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 toepassingsgegevens van Azure Databricks-toepassingscode naar Azure Monitor te verzenden:
Bouw het spark-listeners-loganalytics-1.0-SNAPSHOT.jar JAR-bestand zoals beschreven in het GitHub-leesmij-bestand.
Maak Dropwizard-meters of meteritems in uw toepassingscode . U kunt de
UserMetricsSystem
klasse gebruiken die is gedefinieerd in de bewakingsbibliotheek. In het volgende voorbeeld wordt een teller met de naamcounter1
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
UserMetricsSystem
klasse gebruikt.
Toepassingslogboeken verzenden met Log4j
Voer de volgende stappen uit om uw Azure Databricks-toepassingslogboeken naar Azure Log Analytics te verzenden met behulp van de Log4j-toevoegfunctie in de bibliotheek:
Bouw de spark-listeners-1.0-SNAPSHOT.jar en het spark-listeners-loganalytics-1.0-SNAPSHOT.jar JAR-bestand, zoals beschreven in het Leesmij-bestand van GitHub.
Maak een log4j.properties-configuratiebestand voor uw toepassing. Neem de volgende configuratie-eigenschappen op. Vervang de naam en het logboekniveau van uw toepassingspakket, waar aangegeven:
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
Neem in uw toepassingscode het spark-listeners-loganalytics-project op en importeer
com.microsoft.pnp.logging.Log4jconfiguration
deze in uw toepassingscode.import com.microsoft.pnp.logging.Log4jConfiguration
Configureer Log4j met behulp van het log4j.properties-bestand dat u in stap 3 hebt gemaakt:
getClass.getResourceAsStream("<path to file in your JAR file>/log4j.properties") { stream => { Log4jConfiguration.configure(stream) } }
Voeg waar nodig Apache Spark-logboekberichten toe op het juiste niveau in uw code. Gebruik bijvoorbeeld de
logDebug
methode om 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")
Notitie
Als u de bibliotheek gebruikt en Apache Spark Notebooks hebt, gaan alle logboeken die Spark genereert tijdens de uitvoering van het notebook automatisch naar Log Analytics.
Er is een beperking voor Python om aangepaste logboekregistratieberichten te ondersteunen met behulp van het door Spark geconfigureerde Log4j. Logboeken kunnen alleen worden verzonden vanaf het stuurprogrammaknooppunt, omdat uitvoerders geen toegang hebben tot de virtuele Java-machine vanuit Python.
De voorbeeldtoepassing uitvoeren
De bewakingsbibliotheek bevat een voorbeeldtoepassing die laat zien hoe u metrische gegevens van toepassingen en toepassingslogboeken naar Azure Monitor verzendt. Het voorbeeld uitvoeren:
Bouw het spark-jobs-project in de bewakingsbibliotheek, zoals beschreven in het Leesmij-bestand van GitHub.
Navigeer naar uw Databricks-werkruimte en maak een nieuwe taak, zoals beschreven in Azure Databricks-taken maken en uitvoeren.
Selecteer JAR instellen op de pagina met taakdetails.
Upload het JAR-bestand van
/src/spark-jobs/target/spark-jobs-1.0-SNAPSHOT.jar
.Voer voor hoofdklasse in
com.microsoft.pnp.samplejob.StreamingQueryListenerSampleJob
.Selecteer een cluster dat al is geconfigureerd voor het gebruik van de bewakingsbibliotheek. Zie Azure Databricks configureren om metrische gegevens naar Azure Monitor te verzenden.
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 toepassingsgegevens 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 voorbeeldtoepassingstaak.
Volgende stappen
Implementeer het dashboard voor prestatiebewaking dat wordt begeleid bij deze codebibliotheek om prestatieproblemen in uw Azure Databricks-productieworkloads op te lossen.