Azure Databricks-alkalmazásnaplók küldése az Azure Monitornak
Feljegyzés
Ez a cikk a GitHubon üzemeltetett nyílt forráskód könyvtárra támaszkodik: https://github.com/mspnp/spark-monitoring.
Az eredeti kódtár támogatja az Azure Databricks Runtimes 10.x (Spark 3.2.x) és korábbi verzióit.
A Databricks frissített verzióval támogatja az Azure Databricks Runtimes 11.0-s (Spark 3.3.x) és újabb verzióját a l4jv2
következő ágon: https://github.com/mspnp/spark-monitoring/tree/l4jv2.
Vegye figyelembe, hogy a 11.0-s kiadás nem kompatibilis visszafelé a Databricks Futtatókörnyezetekben használt különböző naplózási rendszerek miatt. Ügyeljen arra, hogy a Databricks Runtime-hoz megfelelő buildet használja. A tár és a GitHub-adattár karbantartási módban van. Nincsenek további kiadásokra vonatkozó tervek, és a problémák támogatása csak a legjobb munka lesz. Az Azure Databricks-környezetek monitorozásával és naplózásával kapcsolatos további kérdésekért forduljon azure-spark-monitoring-help@databricks.coma könyvtárhoz vagy az ütemtervhez.
Ez a cikk bemutatja, hogyan küldhet alkalmazásnaplókat és metrikákat az Azure Databricksből egy Log Analytics-munkaterületre. A GitHubon elérhető Azure Databricks Monitoring Library-t használja.
Előfeltételek
Konfigurálja az Azure Databricks-fürtöt a monitorozási kódtár használatára a GitHub-olvasóban leírtak szerint.
Feljegyzés
A monitorozási kódtár apache Spark-szintű eseményeket és Spark strukturált streamelési metrikákat streamel a feladatokból az Azure Monitorba. Ezekhez az eseményekhez és metrikákhoz nem kell módosítania az alkalmazáskódot.
Alkalmazásmetrikák küldése a Dropwizard használatával
A Spark a Dropwizard Metrics Library alapján konfigurálható metrikarendszert használ. További információ: Metrikák a Spark dokumentációjában.
Ha alkalmazásmetrikákat szeretne küldeni az Azure Databricks alkalmazáskódjából az Azure Monitornak, kövesse az alábbi lépéseket:
Hozza létre a spark-listeners-loganalytics-1.0-SNAPSHOT.jar JAR-fájlt a GitHub-olvasóban leírtak szerint.
Dropwizard mérőműszereket vagy számlálókat hozhat létre az alkalmazáskódban. A figyelési kódtárban definiált osztályt használhatja
UserMetricsSystem
. Az alábbi példa létrehoz egy számlálót.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) } }
A figyelési kódtár egy mintaalkalmazást tartalmaz, amely bemutatja az
UserMetricsSystem
osztály használatát.
Alkalmazásnaplók küldése a Log4j használatával
Ha az Azure Databricks-alkalmazásnaplókat a kódtár Log4j-hozzáfűzőjének használatával szeretné elküldeni az Azure Log Analyticsbe, kövesse az alábbi lépéseket:
Hozza létre a spark-listeners-1.0-SNAPSHOT.jar és a spark-listeners-loganalytics-1.0-SNAPSHOT.jar JAR-fájlt a GitHub-olvasóban leírtak szerint.
Hozzon létre egy log4j.properties konfigurációs fájlt az alkalmazáshoz. Adja meg a következő konfigurációs tulajdonságokat. Helyettesítse be az alkalmazáscsomag nevét és a naplószintet a következő módon:
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
Az alkalmazáskódban adja meg a spark-listeners-loganalytics projektet, és importálja
com.microsoft.pnp.logging.Log4jconfiguration
az alkalmazás kódjába.import com.microsoft.pnp.logging.Log4jConfiguration
A Log4j konfigurálása a 3. lépésben létrehozott log4j.properties fájllal:
getClass.getResourceAsStream("<path to file in your JAR file>/log4j.properties") { stream => { Log4jConfiguration.configure(stream) } }
Szükség szerint adja hozzá az Apache Spark-naplóüzeneteket a kód megfelelő szintjén. A módszerrel például
logDebug
hibakeresési naplóüzenetet küldhet. További információ: Naplózás a Spark dokumentációjában.logTrace("Trace message") logDebug("Debug message") logInfo("Info message") logWarning("Warning message") logError("Error message")
Feljegyzés
Ha a tárat használja, és Apache Spark-jegyzetfüzetekkel rendelkezik, a Spark által a jegyzetfüzet végrehajtása során létrehozott naplók automatikusan a Log Analyticsbe kerülnek.
A Python korlátozottan támogatja az egyéni naplózási üzeneteket a Spark által konfigurált Log4j használatával. A naplók csak az illesztőprogram-csomópontról küldhetők, mert a végrehajtó csomópontok nem férnek hozzá a Java virtuális géphez a Pythonból.
A mintaalkalmazás futtatása
A monitorozási kódtár egy mintaalkalmazást tartalmaz, amely bemutatja, hogyan küldheti el az alkalmazásmetrikákat és az alkalmazásnaplókat az Azure Monitornak. A minta futtatása:
A Spark-jobs projekt létrehozása a figyelési kódtárban, a GitHub-olvasóban leírtak szerint.
Lépjen a Databricks-munkaterületre, és hozzon létre egy új feladatot az itt leírtak szerint.
A feladat részletei lapon válassza a JAR beállítása lehetőséget.
Töltse fel a JAR-fájlt a fájlból
/src/spark-jobs/target/spark-jobs-1.0-SNAPSHOT.jar
.A főosztályhoz írja be a következőt
com.microsoft.pnp.samplejob.StreamingQueryListenerSampleJob
: .Válasszon ki egy fürtöt, amely már konfigurálva van a figyelési kódtár használatára. Lásd: Az Azure Databricks konfigurálása metrikák Azure Monitorba való küldéséhez.
A feladat futtatásakor megtekintheti az alkalmazásnaplókat és a metrikákat a Log Analytics-munkaterületen.
Az alkalmazásnaplók a SparkLoggingEvent_CL alatt jelennek meg:
SparkLoggingEvent_CL | where logger_name_s contains "com.microsoft.pnp"
Az alkalmazásmetrikák a SparkMetric_CL alatt jelennek meg:
SparkMetric_CL | where name_s contains "rowcounter" | limit 50
Fontos
Miután ellenőrizte, hogy megjelennek-e a metrikák, állítsa le a mintaalkalmazási feladatot.
Következő lépések
Telepítse a kódtárat kísérő teljesítményfigyelési irányítópultot az éles Azure Databricks számítási feladatainak teljesítményproblémáinak elhárításához.