Odesílání protokolů aplikací Azure Databricks do Azure Monitoru

Tento článek popisuje, jak odeslat protokoly a metriky aplikace z Azure Databricks do pracovního prostoru Log Analytics. Používá knihovnu monitorování Azure Databricks, která je k dispozici na GitHub.

Požadavky

nakonfigurujte cluster Azure Databricks tak, aby používal knihovnu monitorování, jak je popsáno v souboru readme GitHub.

Poznámka

Knihovna monitorování streamuje události Apache Spark události na úrovni a metriky strukturovaného streamování Sparku z vašich úloh na Azure Monitor. Pro tyto události a metriky není nutné provádět žádné změny v kódu aplikace.

Odesílání metrik aplikace pomocí Dropwizard

Spark používá konfigurovatelný systém metrik založený na knihovně metrik Dropwizard. Další informace najdete v dokumentaci k Sparku v tématu metriky .

Chcete-li do Azure Monitor odeslat metriky aplikace z Azure Databricksho kódu aplikace, postupujte podle následujících kroků:

  1. sestavte soubor jar spark-listeners-loganalytics-1,0-snapshot. jar , jak je popsáno v souboru readme GitHub.

  2. Vytváření Dropwizard měřidel nebo čítačů v kódu aplikace. Můžete použít UserMetricsSystem třídu definovanou v knihovně monitorování. Následující příklad vytvoří čítač s názvem 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)
      }
    }
    

    Knihovna monitorování obsahuje ukázkovou aplikaci , která demonstruje použití UserMetricsSystem třídy.

Posílání protokolů aplikací pomocí log4j

Pokud chcete odesílat protokoly aplikací Azure Databricks do Azure Log Analytics pomocí připojení log4j v knihovně, postupujte takto:

  1. sestavte spark-listeners-1,0-snapshot. jar a soubor spark-listeners-loganalytics-1,0-snapshot. jar , jak je popsáno v souboru readme GitHub.

  2. Vytvořte konfigurační soubor log4j. Properties pro vaši aplikaci. Zahrňte následující vlastnosti konfigurace. Nahraďte název balíčku aplikace a úroveň protokolu, kde je uvedeno:

    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
    

    Vzorový konfigurační soubor najdete tady.

  3. Do kódu aplikace zahrňte projekt Spark-Listeners-loganalytics a naimportujte com.microsoft.pnp.logging.Log4jconfiguration ho do kódu aplikace.

    import com.microsoft.pnp.logging.Log4jConfiguration
    
  4. Nakonfigurujte log4j pomocí souboru log4j. Properties , který jste vytvořili v kroku 3:

    getClass.getResourceAsStream("<path to file in your JAR file>/log4j.properties") {
          stream => {
            Log4jConfiguration.configure(stream)
          }
    }
    
  5. Podle potřeby přidejte zprávy protokolu Apache Spark v odpovídající úrovni kódu. Například použijte logDebug metodu k odeslání zprávy protokolu ladění. Další informace najdete v tématu protokolování v dokumentaci k Sparku.

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

Spuštění ukázkové aplikace

Knihovna monitorování obsahuje ukázkovou aplikaci , která ukazuje, jak odeslat metriky aplikace a protokoly aplikací do Azure monitor. Spuštění ukázky:

  1. sestavte projekt spark-jobs v knihovně monitorování, jak je popsáno v souboru readme GitHub.

  2. Přejděte do pracovního prostoru datacihly a vytvořte novou úlohu, jak je popsáno zde.

  3. Na stránce podrobností úlohy vyberte nastavit jar.

  4. Upload soubor JAR z /src/spark-jobs/target/spark-jobs-1.0-SNAPSHOT.jar .

  5. Pro Main Class zadejte com.microsoft.pnp.samplejob.StreamingQueryListenerSampleJob .

  6. Vyberte cluster, který je již nakonfigurován pro použití knihovny monitorování. Další informace najdete v tématu konfigurace Azure Databricks pro odesílání metrik do Azure monitor.

Po spuštění úlohy si můžete zobrazit protokoly a metriky aplikace v pracovním prostoru Log Analytics.

Protokoly aplikací se zobrazí v části SparkLoggingEvent_CL:

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

Metriky aplikací se zobrazí v části SparkMetric_CL:

SparkMetric_CL | where name_s contains "rowcounter" | limit 50

Důležité

Až ověříte, že se metriky objeví, zastavte úlohu ukázkové aplikace.

Další kroky

Nasaďte řídicí panel monitorování výkonu, který doprovází tuto knihovnu kódu k řešení potíží s výkonem ve výrobních Azure Databricks úlohách.