Envío de registros de aplicaciones de Azure Databricks a Azure Monitor
En este artículo se muestra cómo enviar registros de aplicación y métricas de Azure Databricks a un área de trabajo de Log Analytics. Para ello se usa la biblioteca de supervisión de Azure Databricks, que está disponible en GitHub.
Requisitos previos
Configure el clúster de Azure Databricks para usar la biblioteca de supervisión, como se describe en el archivo Léame de GitHub.
Nota
La biblioteca de supervisión transmite los eventos de nivel de Apache Spark y las métricas de Spark Structured Streaming de los trabajos a Azure Monitor. No es necesario realizar ningún cambio en el código de aplicación para estos eventos y métricas.
Envío de métricas de aplicación mediante Dropwizard
Spark usa un sistema de métricas configurable basado en la biblioteca de métricas de Dropwizard. Para más información, consulte Metrics (Métricas) en la documentación de Spark.
Para enviar métricas de aplicación desde el código de aplicación de Azure Databricks a Azure Monitor, siga estos pasos:
Compile el archivo JAR spark-listeners-loganalytics-1.0-SNAPSHOT.jar tal y como se describe en el archivo Léame de GitHub.
Cree medidores o contadores de Dropwizard en el código de la aplicación. Puede usar la clase
UserMetricsSystemdefinida en la biblioteca de supervisión. En el ejemplo siguiente se crea un contador denominadocounter1.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) } }La biblioteca de supervisión incluye una aplicación de ejemplo que muestra cómo utilizar la clase
UserMetricsSystem.
Envío de registros de aplicación mediante Log4j
Para enviar los registros de aplicación de Azure Databricks a Azure Log Analytics mediante el appender de Log4j en la biblioteca, siga estos pasos:
Compile los archivos JAR spark-listeners-1.0-SNAPSHOT.jar y spark-listeners-loganalytics-1.0-SNAPSHOT.jar tal y como se describe en el archivo Léame de GitHub.
Cree un archivo de configuración log4j.properties para la aplicación. Incluya las siguientes propiedades de configuración. Sustituya el nombre del paquete de aplicación y el nivel de registro donde se indica:
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>, A1Puede encontrar un archivo de configuración de ejemplo aquí.
En el código de la aplicación, incluya el proyecto spark-listeners-loganalytics e importe
com.microsoft.pnp.logging.Log4jconfigurational código de la aplicación.import com.microsoft.pnp.logging.Log4jConfigurationConfigure Log4j con el archivo log4j.properties que creó en el paso 3:
getClass.getResourceAsStream("<path to file in your JAR file>/log4j.properties") { stream => { Log4jConfiguration.configure(stream) } }Agregue los mensajes de registro de Apache Spark en el nivel adecuado en el código según sea necesario. Por ejemplo, use el método
logDebugpara enviar un mensaje de registro de depuración. Para más información, consulte Logging (Registro) en la documentación de Spark.logTrace("Trace message") logDebug("Debug message") logInfo("Info message") logWarning("Warning message") logError("Error message")
Ejecutar la aplicación de ejemplo
La biblioteca de supervisión incluye una aplicación de ejemplo que muestra cómo enviar tanto métricas de aplicación como registros de aplicación a Azure Monitor. Para ejecutar el ejemplo:
Compile el proyecto spark-jobs en la biblioteca de supervisión, como se describe en el archivo Léame de GitHub.
Vaya al área de trabajo de Databricks y cree un nuevo trabajo, tal y como se describe aquí.
En la página de detalles del trabajo, seleccione Set JAR (Establecer JAR).
Cargue el archivo JAR desde
/src/spark-jobs/target/spark-jobs-1.0-SNAPSHOT.jar.En Clase principal, escriba
com.microsoft.pnp.samplejob.StreamingQueryListenerSampleJob.Seleccione un clúster que ya esté configurado para usar la biblioteca de supervisión. Consulte Configuración de Azure Databricks para que envíe métricas a Azure Monitor.
Cuando se ejecuta el trabajo, puede ver los registros y las métricas de aplicación en el área de trabajo de Log Analytics.
Los registros de aplicación aparecen en SparkLoggingEvent_CL:
SparkLoggingEvent_CL | where logger_name_s contains "com.microsoft.pnp"
Las métricas de aplicación aparecen en SparkMetric_CL:
SparkMetric_CL | where name_s contains "rowcounter" | limit 50
Importante
Después de comprobar que las métricas aparecen, detenga el trabajo de aplicación de ejemplo.
Pasos siguientes
Implemente el panel de supervisión de rendimiento que acompaña a esta biblioteca de código para solucionar los problemas de rendimiento de las cargas de trabajo de producción de Azure Databricks.