Compartir vía


Supervisión de las aplicaciones de Apache Spark con Azure Log Analytics

En este tutorial, aprenderá a habilitar el conector Synapse Studio integrado en Log Analytics. Luego, puede recopilar y enviar los registros y las métricas de aplicación de Apache Spark al área de trabajo de Log Analytics. Finalmente, puede aprovechar los libros de Azure Monitor para visualizar las métricas y los registros.

Configuración de la información del área de trabajo

Siga estos pasos para configurar la información necesaria en Synapse Studio.

Paso 1: Creación de un área de trabajo de Log Analytics

Consulte uno de los siguientes recursos para crear este área de trabajo:

Paso 2: recopilación de información de configuración

Use cualquiera de las siguientes opciones para preparar la configuración.

Opción 1: Configuración con el identificador y la clave del área de trabajo de Log Analytics

Recopile los siguientes valores para la configuración de Spark:

  • <LOG_ANALYTICS_WORKSPACE_ID>: identificador del área de trabajo de Log Analytics.
  • <LOG_ANALYTICS_WORKSPACE_KEY>: clave de Log Analytics. Para encontrarla, en Azure Portal, vaya a Área de trabajo de Azure Log Analytics>Agentes>Clave principal.
spark.synapse.logAnalytics.enabled true
spark.synapse.logAnalytics.workspaceId <LOG_ANALYTICS_WORKSPACE_ID>
spark.synapse.logAnalytics.secret <LOG_ANALYTICS_WORKSPACE_KEY>

Opción 2: Configuración con Azure Key Vault

Nota:

Debe conceder permiso de lectura de secretos a los usuarios que vayan a enviar aplicaciones Apache Spark. Para más información, consulte Acceso a las claves, los certificados y los secretos de Key Vault con un control de acceso basado en rol de Azure. Al habilitar esta característica en una canalización de Synapse, debe usar la opción 3. Esto es necesario para obtener el secreto de Azure Key Vault con la identidad administrada del área de trabajo.

Para configurar Azure Key Vault para almacenar la clave del área de trabajo, siga estos pasos:

  1. Cree un almacén de claves en Azure Portal y desplácese hasta él.

  2. En la página de configuración del almacén de claves, seleccione Secretos.

  3. Seleccione Generar o importar.

  4. En la pantalla Crear un secreto, elija los siguientes valores:

    • Nombre: escriba un nombre para el secreto. Como valor predeterminado, escriba SparkLogAnalyticsSecret.
    • Valor: escriba el valor de <LOG_ANALYTICS_WORKSPACE_KEY> del secreto.
    • Deje las restantes opciones con sus valores predeterminados. Seleccione Crear.
  5. Recopile los siguientes valores para la configuración de Spark:

    • <LOG_ANALYTICS_WORKSPACE_ID>: identificador del área de trabajo de Log Analytics.
    • <AZURE_KEY_VAULT_NAME>: el nombre del almacén de claves que configuró.
    • <AZURE_KEY_VAULT_SECRET_KEY_NAME> (opcional): el nombre del secreto en el almacén de claves para la clave del área de trabajo. El valor predeterminado es SparkLogAnalyticsSecret.
spark.synapse.logAnalytics.enabled true
spark.synapse.logAnalytics.workspaceId <LOG_ANALYTICS_WORKSPACE_ID>
spark.synapse.logAnalytics.keyVault.name <AZURE_KEY_VAULT_NAME>
spark.synapse.logAnalytics.keyVault.key.secret <AZURE_KEY_VAULT_SECRET_KEY_NAME>

Nota:

También puede almacenar el identificador del área de trabajo en Key Vault. Consulte los pasos anteriores y almacene el identificador del área de trabajo con el nombre del secreto SparkLogAnalyticsWorkspaceId. Como alternativa, puede usar la configuración spark.synapse.logAnalytics.keyVault.key.workspaceId para especificar el nombre del secreto del identificador del área de trabajo en Key Vault.

Opción 3. Configuración con un servicio vinculado

Nota:

En esta opción, debe conceder permiso de secreto de lectura a la identidad administrada del área de trabajo. Para más información, consulte Acceso a las claves, los certificados y los secretos de Key Vault con un control de acceso basado en rol de Azure.

Para configurar un servicio vinculado de Key Vault en Synapse Studio para almacenar la clave del área de trabajo, siga estos pasos:

  1. Siga todos los pasos de la sección anterior, "Opción 2".

  2. Cree un servicio vinculado de Key Vault en Synapse Studio:

    a. Vaya a Synapse Studio>Administrar>Servicios vinculados y seleccione Nuevo.

    b. Busque Azure Key Vault en el cuadro de búsqueda.

    c. Escriba un nombre para el servicio vinculado.

    d. Elija su almacén de claves y seleccione Crear.

  3. Agregue un elemento spark.synapse.logAnalytics.keyVault.linkedServiceName a la configuración de Apache Spark.

spark.synapse.logAnalytics.enabled true
spark.synapse.logAnalytics.workspaceId <LOG_ANALYTICS_WORKSPACE_ID>
spark.synapse.logAnalytics.keyVault.key.secret <AZURE_KEY_VAULT_SECRET_KEY_NAME>
spark.synapse.logAnalytics.keyVault.linkedServiceName <LINKED_SERVICE_NAME>

Para obtener una lista de las configuraciones de Apache Spark, consulte Configuraciones de Apache Spark disponibles.

Paso 3: creación de una configuración de Apache Spark

Es posible crear una configuración de Apache Spark en el área de trabajo y, al crear un cuaderno o una definición de trabajo de Apache Spark, es posible seleccionar la configuración de Apache Spark que quiera usar con el grupo de Apache Spark. Al seleccionarla, se muestran los detalles de la configuración.

  1. Seleccione Administrar>Configuración de Apache Spark.

  2. Seleccione el botón Nuevo para crear una nueva configuración de Apache Spark.

  3. Se abrirá la página Nueva configuración de Apache Spark después de seleccionar el botón Nuevo.

    Captura de pantalla que crea la configuración de Spark.

  4. En Nombre, puede escribir su nombre preferido y válido.

  5. En Descripción, puede escribir alguna descripción.

  6. En Anotaciones, puede agregar anotaciones al hacer clic en el botón Nuevo y también puede eliminar anotaciones existentes al seleccionar y hacer clic en el botón Eliminar.

  7. En relación a Propiedades de configuración, agregue todas las propiedades de la opción de configuración que eligió seleccionando el botón Agregar. En cuanto a Propiedad, agregue el nombre de la propiedad tal y como se muestra y, en cuanto a Valor, use el valor que recopiló en el paso 2. Si no agrega ninguna propiedad, Azure Synapse usará el valor predeterminado cuando corresponda.

    Captura de pantalla con un ejemplo para actualizar las propiedades de configuración.

Envío de una aplicación Apache Spark y visualización de los registros y métricas

A continuación se muestra cómo hacerlo:

  1. Envíe una aplicación Apache Spark al grupo de Apache Spark configurado en el paso anterior. Para ello, puede usar cualquiera de los siguientes métodos:

    • Ejecutar un cuaderno en Synapse Studio.
    • En Synapse Studio, envíe un trabajo por lotes de Apache Spark mediante una definición de trabajo de Apache Spark.
    • Ejecute una canalización que contenga la actividad de Apache Spark.
  2. Vaya al área de trabajo de Log Analytics especificada y, luego, vea las métricas y los registros de la aplicación cuando la aplicación Apache Spark empiece a ejecutarse.

Escritura de registros de aplicaciones personalizados

Puede usar la biblioteca Log4j de Apache para escribir registros personalizados.

Ejemplo de Scala:

%%spark
val logger = org.apache.log4j.LogManager.getLogger("com.contoso.LoggerExample")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
//log exception
try {
      1/0
 } catch {
      case e:Exception =>logger.warn("Exception", e)
}
// run job for task level metrics
val data = sc.parallelize(Seq(1,2,3,4)).toDF().count()

Ejemplo de PySpark:

%%pyspark
logger = sc._jvm.org.apache.log4j.LogManager.getLogger("com.contoso.PythonLoggerExample")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")

Uso del libro de ejemplo para visualizar las métricas y los registros

  1. Descargue el libro.

  2. Abra y copie el contenido del archivo de libro.

  3. En Azure Portal, seleccione Área de trabajo de Log Analytics>Libros.

  4. Abra el libreo Vacío. Use el modo Editor avanzado mediante la selección del icono </>.

  5. Pegue el código JSON que exista.

  6. Seleccione Aplicar y, luego, Edición finalizada.

    Captura de pantalla que muestra un nuevo libro.

    Captura de pantalla que muestra cómo importar un libro.

A continuación, envíe la aplicación Apache Spark al grupo de Apache Spark configurado. Cuando la aplicación pase al estado de ejecución, elija la aplicación en ejecución en la lista desplegable de libros.

Captura de pantalla que muestra un libro.

Puede personalizar el libro. Por ejemplo, puede usar consultas de Kusto y configurar alertas.

Captura de pantalla que muestra la personalización de un libro con una consulta y alertas.

Consulta de datos con Kusto

Este es un ejemplo de consulta de eventos de Apache Spark:

SparkListenerEvent_CL
| where workspaceName_s == "{SynapseWorkspace}" and clusterName_s == "{SparkPool}" and livyId_s == "{LivyId}"
| order by TimeGenerated desc
| limit 100 

Este es un ejemplo de consulta de los registros de ejecutores y del controlador de aplicación de Apache Spark:

SparkLoggingEvent_CL
| where workspaceName_s == "{SynapseWorkspace}" and clusterName_s == "{SparkPool}" and livyId_s == "{LivyId}"
| order by TimeGenerated desc
| limit 100

Y este es un ejemplo de consulta de métricas de Apache Spark:

SparkMetrics_CL
| where workspaceName_s == "{SynapseWorkspace}" and clusterName_s == "{SparkPool}" and livyId_s == "{LivyId}"
| where name_s endswith "jvm.total.used"
| summarize max(value_d) by bin(TimeGenerated, 30s), executorId_s
| order by TimeGenerated asc

Creación y administración de alertas

Los usuarios pueden realizar consultas para evaluar las métricas y los registros según una frecuencia establecida y activar una alerta en función de los resultados. Para más información, consulte Creación, visualización y administración de alertas de registro mediante Azure Monitor.

Área de trabajo de Synapse con la protección de datos contra la filtración habilitada

Después de crear el área de trabajo de Synapse con la protección contra la filtración de datos habilitada.

Cuando quiera habilitar esta característica, tendrá que crear solicitudes de conexión de puntos de conexión privados administrados a Ámbitos de vínculo privado de Azure Monitor (AMPLS) en los inquilinos de Microsoft Entra aprobados del área de trabajo.

Puede seguir los pasos a continuación para crear una conexión de punto de conexión privado administrado a Ámbitos de Private Link de Azure Monitor (AMPLS):

  1. Si no existiera ningún AMPLS, siga la Configuración de una conexión de Private Link de Azure Monitor para crear uno.
  2. Vaya a su AMPLS en Azure Portal y, en la página Recursos de Azure Monitor, seleccione Agregar para agregar la conexión al área de trabajo de Log Analytics de Azure.
  3. Vaya a Synapse Studio > Administrar > Puntos de conexión privados administrados, seleccione el botón Nuevo, seleccione Ámbitos de Private Link de Azure Monitor y Continuar.

    Captura de pantalla de la creación de un punto de conexión privado administrado por AMPLS 1.

  4. Elija el ámbito de Private Link de Azure Monitor que creó y seleccione el botón Crear.

    Captura de pantalla de la creación de un punto de conexión privado administrado por AMPLS 2.

  5. Espere unos minutos durante el aprovisionamiento del punto de conexión privado.
  6. Vuelva a su AMPLS en Azure Portal; en la página Conexiones de punto de conexión privado, seleccione la conexión que ha aprovisionado y haga clic en Aprobar.

Nota:

  • El objeto de AMPLS tiene una serie de límites que se deben tener en cuenta al planear la configuración de Private Link. Consulte Límites de AMPLS para un análisis más detallado de estos límites.
  • Compruebe si tiene el permiso adecuado para crear un punto de conexión privado administrado.