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ů:
sestavte soubor jar spark-listeners-loganalytics-1,0-snapshot. jar , jak je popsáno v souboru readme GitHub.
Vytváření Dropwizard měřidel nebo čítačů v kódu aplikace. Můžete použít
UserMetricsSystemtřídu definovanou v knihovně monitorování. Následující příklad vytvoří čítač s názvemcounter1.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í
UserMetricsSystemtří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:
sestavte spark-listeners-1,0-snapshot. jar a soubor spark-listeners-loganalytics-1,0-snapshot. jar , jak je popsáno v souboru readme GitHub.
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>, A1Vzorový konfigurační soubor najdete tady.
Do kódu aplikace zahrňte projekt Spark-Listeners-loganalytics a naimportujte
com.microsoft.pnp.logging.Log4jconfigurationho do kódu aplikace.import com.microsoft.pnp.logging.Log4jConfigurationNakonfigurujte 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) } }Podle potřeby přidejte zprávy protokolu Apache Spark v odpovídající úrovni kódu. Například použijte
logDebugmetodu 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:
sestavte projekt spark-jobs v knihovně monitorování, jak je popsáno v souboru readme GitHub.
Přejděte do pracovního prostoru datacihly a vytvořte novou úlohu, jak je popsáno zde.
Na stránce podrobností úlohy vyberte nastavit jar.
Upload soubor JAR z
/src/spark-jobs/target/spark-jobs-1.0-SNAPSHOT.jar.Pro Main Class zadejte
com.microsoft.pnp.samplejob.StreamingQueryListenerSampleJob.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.