Share via


Azure Databricks-alkalmazásnaplók küldése az Azure Monitornak

Megjegyzé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.

Megjegyzé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:

  1. Hozza létre a spark-listeners-loganalytics-1.0-SNAPSHOT.jar JAR fájlt a GitHub-olvasóban leírtak szerint.

  2. 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:

  1. 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.

  2. Hozzon létre egy log4j.propertieskonfigurá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
    

    Itt talál egy mintakonfigurációs fájlt.

  3. 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
    
  4. 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)
          }
    }
    
  5. 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")
    

Megjegyzé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:

  1. A Spark-jobs projekt létrehozása a figyelési kódtárban, a GitHub-olvasóban leírtak szerint.

  2. Lépjen a Databricks-munkaterületre, és hozzon létre egy új feladatot az itt leírtak szerint.

  3. A feladat részletei lapon válassza a JAR beállítása lehetőséget.

  4. Töltse fel a JAR-fájlt a fájlból /src/spark-jobs/target/spark-jobs-1.0-SNAPSHOT.jar.

  5. A főosztályhoz írja be a következőtcom.microsoft.pnp.samplejob.StreamingQueryListenerSampleJob: .

  6. 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.

További 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.