Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se describe el destino de Azure Log Analytics para el Emisor de Diagnóstico de Fabric Apache Spark utilizando la API de Ingesta de Logs.
El emisor de diagnóstico de Fabric Apache Spark proporciona un modelo de configuración común para los diagnósticos de Spark en varios destinos. Para Azure Log Analytics, la API de ingesta de registros es el modelo de ingesta recomendado.
En este artículo se muestra cómo configurar las propiedades del emisor, enrutar los registros de Apache Spark, los registros de eventos y las métricas a Log Analytics y consultar los datos ingeridos para la supervisión y la solución de problemas.
Para la arquitectura y la selección de destino en el emisor de diagnóstico de Fabric Apache Spark, consulte Visión general del emisor de diagnóstico de Fabric Apache Spark.
Migración desde Data Collector API
Si actualmente usa HTTP Data Collector API, migre a la API de ingesta de registros para alinearse con los patrones de ingesta de Azure Monitor actuales.
Cambios clave en el nuevo modelo:
- Las definiciones de esquema son explícitas a través de reglas de recopilación de datos (DCR), lo que proporciona una validación de esquema predecible y resultados de consulta más coherentes que el enfoque de carga de forma libre anterior.
- La ingesta se enruta a través de puntos de recopilación de datos (DCE) y asignaciones de DCR, que proporcionan una ruta de ingesta más controlada que enviar directamente al punto de conexión de la API del recopilador de datos.
- La autenticación admite tanto el secreto de cliente de la entidad de servicio como las opciones basadas en certificados .
- El tipo emisor cambia de
AzureLogAnalyticsaAzureLogIngestion.
La migración normalmente incluye la creación de recursos dcR y DCE, la actualización de las propiedades de Spark del entorno Fabric y la validación de la ingesta de datos en tablas de Log Analytics personalizadas.
Introducción a la API de ingesta de registros
Para los diagnósticos de Apache Spark en Microsoft Fabric, log Ingestion API proporciona un modelo de ingesta estructurado para la autenticación, la definición de esquema, el enrutamiento y la entrega de tablas en Azure Log Analytics.
Componentes clave
| Componente | propósito |
|---|---|
| Credenciales de registro de aplicaciones | Proporciona la identidad de la aplicación Microsoft Entra que se usa para autenticar las solicitudes de la API de Ingesta de Registros con un secreto de cliente o certificado. |
| tabla de Log Analytics | Proporciona la tabla personalizada de destino donde se almacenan los diagnósticos de Spark ingeridos para consultar y supervisar. |
| Regla de recopilación de datos (DCR) | Definen flujos de entrada, asignación de esquemas y transformaciones opcionales para el ingreso de datos. |
| Punto de conexión de recopilación de datos (DCE) | Proporciona el URI del punto de conexión de ingesta (dceUri) usado por los clientes para enviar datos a través del enrutamiento basado en DCR. |
Solo se pueden usar DCRs creados por el usuario configurados para la API de Ingestión de Registros en la ingestión programática.
Configuración paso a paso
Paso 1. Preparación del área de trabajo de Log Analytics
Se requiere un área de trabajo de Log Analytics para recibir diagnósticos de Spark. Es la unidad básica de almacenamiento y consulta para Azure Monitor Logs.
Si no tiene una, cree un área de trabajo de Log Analytics en el portal de Azure.
Importante
A medida que complete los pasos siguientes, cree los recursos Endpoint de recopilación de datos (DCE) y Regla de recopilación de datos (DCR) en la misma región que el espacio de trabajo de Log Analytics.
Paso 2. Creación de un punto de conexión de recopilación de datos (DCE)
Cree un punto de conexión de recopilación de datos (DCE) en el portal de Azure. El DCE proporciona el URI de punto de conexión que se configura en las propiedades de Spark para la API de Ingestión de Registros. La región del DCE debe ser la misma que la región del área de trabajo de Log Analytics.
En el portal Azure, vaya a Monitor en el panel de navegación izquierdo.
En Configuración, seleccione Puntos de conexión de recopilación de datos y, a continuación, seleccione Crear.
Cree el punto de conexión y anote el nombre de DCE (por ejemplo,
DCEdemo).
Paso 3. Preparación del esquema JSON de ejemplo
Al crear tablas de registro personalizadas, debe configurar una regla de recopilación de datos (DCR). En función de las definiciones de flujo de datos especificadas en dcR, el sistema genera automáticamente el esquema de tabla correspondiente en el área de trabajo de Log Analytics.
Los siguientes ejemplos predefinidos de esquema JSON se asignan a un tipo de datos específico. Descargue el ejemplo que se adapte a su escenario y cárguelo al crear la tabla personalizada asociada y DCR.
- Registros de eventos de Spark: ejemplo de esquema JSON de tabla de eventos
- Registros de controlador y ejecutor de Spark: ejemplo de esquema JSON de tabla de registro
- Métricas de Spark: ejemplo de esquema JSON de tabla de métricas
- Metadatos de la plataforma: ejemplo de esquema JSON de tabla de metadatos de plataforma
Este es un ejemplo de ejemplo de esquema JSON de tabla de registro para los registros de controlador y ejecutor de Spark en Azure Log Analytics. Utiliza este esquema como referencia al crear tus tablas personalizadas y DCR para la Ingesta de Registros.
[
{
"applicationId_s": "<APPLICATION_ID>",
"applicationName_s": "<NOTEBOOK_NAME>",
"artifactId_g": "<ARTIFACT_GUID>",
"artifactType_s": "SynapseNotebook",
"capacityId_g": "<CAPACITY_GUID>",
"Category": "Log",
"executorId_s": "driver",
"executorMax_s": 9,
"executorMin_s": 1,
"ExtraFields": {
"Category": "Log",
"JobId": "1"
},
"fabricEnvId_g": "<FABRIC_ENV_GUID>",
"fabricLivyId_g": "<FABRIC_LIVY_GUID>",
"fabricTenantId_g": "<FABRIC_TENANT_GUID>",
"fabricWorkspaceId_g": "<FABRIC_WORKSPACE_GUID>",
"isHighConcurrencyEnabled_s": false,
"Level": "INFO",
"logger_name_s": "org.apache.spark.scheduler.dynalloc.ExecutorMonitor",
"Message": "Executor 1 is removed.",
"thread_name_s": "spark-listener-group-executorManagement",
"TimeGenerated": "<TIME_GENERATED>",
"userId_g": "<USER_ID>"
}
]
Paso 4. Creación de una tabla personalizada (ingesta directa)
Cree una tabla personalizada en el área de trabajo de Log Analytics con la opción Log Ingestion API (API de ingesta de registros), y cargue el ejemplo de esquema JSON en el DCR asociado. Este paso es necesario para configurar el destino de los diagnósticos de Spark y asegurarse de que los datos ingeridos se ajustan al esquema esperado. La región del área de trabajo de Log Analytics, DCE y DCR deben coincidir para una ingestión exitosa.
En el portal Azure portal, abra el área de trabajo de Log Analytics (por ejemplo, loganalyticsworkspacedemo).
Seleccione Tablas>Crear nuevo>Nuevo Registro Personalizado (Ingesta Directa).
Escriba la configuración de la tabla:
- Nombre de tabla: por ejemplo, SparkLogTest (sufijo "_CL" se agrega automáticamente).
- Plan de tabla: Análisis
- Regla de recopilación de datos: Cree una nueva DCR (por ejemplo, SparkLogTestrule).
- Punto de conexión de recopilación de datos: seleccione el DCE en el paso Crear un punto de conexión de recopilación de datos (DCE) (por ejemplo, DCEdemo).
Seleccione Siguiente.
En Esquema y transformación, cargue el ejemplo de esquema JSON. No es necesario configurar la transformación DCR porque el esquema está totalmente estabilizado en el lado cliente.
Paso 5. Preparación de la entidad de servicio para la autenticación
Registre una aplicación en Microsoft Entra ID.
Registre tenantId, ClientId y ClientSecret (si usa la autenticación de secretos de cliente). Estos valores se usan en la configuración de Spark en el paso 6.
Conceda a la aplicación el rol Monitoring Metrics Publisher en el recurso DCR de cada tabla. Para conocer los pasos de asignación de roles, consulte Assign Azure roles mediante el portal de Azure.
Paso 6. Configuración de las propiedades de Spark
Para configurar Spark, cree un entorno en Fabric y elija una de las siguientes opciones de autenticación. Use solo una opción para un emisor determinado.
Un entorno en Fabric almacena la configuración de Spark y las bibliotecas que se utilizan en los cuadernos y en las definiciones de trabajos de Spark en tiempo de ejecución. Para ver los pasos para crear uno, consulte Crear, configurar y usar un entorno en Fabric.
- Elija la opción 1 si desea una configuración más sencilla mediante un secreto de cliente.
- Elija Option 2 si la organización requiere autenticación basada en certificados y administración centralizada de certificados en Azure Key Vault.
En ambas opciones, puede seleccionar Agregar desde .yml en el entorno para importar un .yml archivo de configuración.
Opción 1: Configurar con la entidad de servicio y el secreto de cliente
Use esta opción para la configuración rápida con credenciales de entidad de servicio y un secreto de cliente.
Cree un entorno en Fabric.
Agregue las siguientes propiedades de Spark con los valores adecuados al entorno o seleccione Agregar desde .yml en la cinta de opciones para importar un
.ymlarchivo de configuración.spark.synapse.diagnostic.emitters: <EMITTER_NAME> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.type: AzureLogIngestion spark.synapse.diagnostic.emitter.<EMITTER_NAME>.categories: DriverLog,ExecutorLog,EventLog,Metrics spark.synapse.diagnostic.emitter.<EMITTER_NAME>.dceUri: https://<DCE_NAME>.<REGION>.ingest.monitor.azure.com spark.synapse.diagnostic.emitter.<EMITTER_NAME>.logDcr: <LOG_DCR_ID> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.logStream: <LOG_STREAM_NAME> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.eventDcr: <EVENT_DCR_ID> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.eventStream: <EVENT_STREAM_NAME> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.metricDcr: <METRIC_DCR_ID> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.metricStream: <METRIC_STREAM_NAME> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.metaDcr: <META_DCR_ID> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.metaStream: <META_STREAM_NAME> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.secret: <SP_CLIENT_SECRET> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.tenantId: <SP_TENANT_ID> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.clientId: <SP_CLIENT_ID> spark.fabric.pools.skipStarterPools: 'true'Guarde y publique los cambios.
Opción 2: Configurar con autenticación de certificado de entidad de servicio
Use esta opción cuando la organización requiera autenticación basada en certificados.
Antes de empezar, asegúrese de que su principal de servicio haya sido creada con un certificado. Para obtener más información, consulte Crear una entidad de servicio que contenga un certificado mediante Azure CLI.
Cree un entorno en Fabric.
Agregue las siguientes propiedades de Spark con los valores adecuados al entorno o seleccione Agregar desde .yml en la cinta de opciones para importar un
.ymlarchivo de configuración.spark.synapse.diagnostic.emitters: <EMITTER_NAME> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.type: AzureLogIngestion spark.synapse.diagnostic.emitter.<EMITTER_NAME>.categories: DriverLog,ExecutorLog,EventLog,Metrics spark.synapse.diagnostic.emitter.<EMITTER_NAME>.dceUri: https://<DCE_NAME>.<REGION>.ingest.monitor.azure.com spark.synapse.diagnostic.emitter.<EMITTER_NAME>.logDcr: <LOG_DCR_ID> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.logStream: <LOG_STREAM_NAME> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.eventDcr: <EVENT_DCR_ID> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.eventStream: <EVENT_STREAM_NAME> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.metricDcr: <METRIC_DCR_ID> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.metricStream: <METRIC_STREAM_NAME> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.metaDcr: <META_DCR_ID> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.metaStream: <META_STREAM_NAME> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.certificate.keyVault.certificateName: <SP_CERT-NAME> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.certificate.keyVault: https://<KEYVAULT_NAME>.vault.azure.net/ spark.synapse.diagnostic.emitter.<EMITTER_NAME>.tenantId: <SP_TENANT_ID> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.clientId: <SP_CLIENT_ID> spark.fabric.pools.skipStarterPools: 'true'Guarde y publique los cambios.
Paso 7. Adjunte el entorno a cuadernos o definiciones de trabajo de Spark, o establézcalo como el valor predeterminado del área de trabajo.
Use uno de los métodos siguientes en función del ámbito:
- Adjunte el entorno a cuadernos específicos o definiciones de trabajos de Spark cuando desee implementar, probar o controlar por elemento de destino.
- Establezca el entorno como valor predeterminado del área de trabajo cuando desee aplicar una configuración coherente de diagnóstico de Spark en el área de trabajo.
Para adjuntar el entorno a cuadernos o definiciones de trabajo de Spark:
- Vaya al cuaderno o a la definición de trabajo de Spark en Fabric.
- Seleccione el menú Entorno en la pestaña Inicio y seleccione el entorno configurado.
- La configuración se aplicará después de iniciar una sesión de Spark.
Para establecer el entorno como valor predeterminado del área de trabajo:
- Vaya a Configuración del área de trabajo en Fabric.
- Busque la configuración de Spark en la configuración del área de trabajo (Configuración del área de trabajo>Ingeniería de datos/Ciencia>Configuración de Spark).
- Seleccione la pestaña Entorno y elija el entorno con las propiedades de Spark de diagnóstico configuradas y seleccione Guardar.
Paso 8. Ejecución de cargas de trabajo de Spark y comprobación de registros y métricas
Use el entorno que creó y adjuntó en la sección anterior y, a continuación, ejecute cargas de trabajo de Spark y compruebe la ingesta en Log Analytics.
- Ejecute cargas de trabajo de Spark mediante el entorno configurado en la sección anterior. Puede usar uno de los métodos siguientes:
- Ejecute un cuaderno en Fabric.
- Envíe una tarea por lotes de Spark a través de una definición de tarea de Spark.
- Ejecutar actividades de Spark en una canalización.
- Abra el área de trabajo de Log Analytics de destino y verifique que los registros y las métricas se estén ingiriendo para la carga de trabajo actual.
- Para validar la ingesta e inspeccionar registros, use los ejemplos de Kusto en Consulta de datos con Kusto.
Escritura de registros de aplicaciones personalizados
Use registros de aplicaciones personalizados cuando desee eventos específicos de la aplicación o de nivel empresarial además de diagnósticos de plataforma. Estos registros se emiten a través de la misma canalización de diagnóstico y aparecen en Log Analytics junto con los registros de Spark, los registros de eventos y las métricas.
Use Apache Log4j en el código de Spark para emitir mensajes de registro personalizados. En los ejemplos siguientes se muestra un patrón mínimo para Scala y PySpark.
El 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")
Consulta de datos con Kusto
Use consultas de Kusto para validar que la ingesta funciona e investigar el comportamiento de ejecución de Spark. Reemplace valores de marcador de posición como {FabricWorkspaceId}, {ArtifactId} y {LivyId} con valores de su propia ejecución.
Comience con consultas de eventos y registros para confirmar la llegada de datos y, a continuación, use consultas de métricas para el análisis de rendimiento.
Para consultar eventos de Apache Spark:
SparkEventTest_CL
| where fabricWorkspaceId_g == "{FabricWorkspaceId}" and artifactId_g == "{ArtifactId}" and fabricLivyId_g == "{LivyId}"
| order by TimeGenerated desc
| limit 100
Para consultar los registros del ejecutor y el controlador de la aplicación Spark:
SparkLogTest_CL
| where fabricWorkspaceId_g == "{FabricWorkspaceId}" and artifactId_g == "{ArtifactId}" and fabricLivyId_g == "{LivyId}"
| order by TimeGenerated desc
| limit 100
Para consultar métricas de Apache Spark:
SparkMetricsTest_CL
| where fabricWorkspaceId_g == "{FabricWorkspaceId}" and artifactId_g == "{ArtifactId}" and fabricLivyId_g == "{LivyId}"
| where name_s endswith "jvm.total.used"
| summarize max(value_d) by bin(TimeGenerated, 30s), executorId_s
| order by TimeGenerated asc
Para consultar los metadatos de la plataforma:
SparkMetadataTest_CL
| where fabricWorkspaceId_g == "{FabricWorkspaceId}" and artifactId_g == "{ArtifactId}" and fabricLivyId_g == "{LivyId}"
| order by TimeGenerated desc
| limit 100
Fabric áreas de trabajo con red virtual administrada
Fabric admite la habilitación de la protección de filtración de datos para áreas de trabajo. Con la protección de filtración, los registros y las métricas no se pueden enviar directamente a los puntos de conexión de destino. Puede crear puntos de conexión privados administrados correspondientes para diferentes extremos de destino en este escenario.
Configuraciones de Apache Spark disponibles
En la tabla siguiente se enumeran las configuraciones de Spark para enviar registros y métricas a Azure Log Analytics mediante la API de ingesta de registros.
Importante
Para Azure Log Analytics, establezca spark.synapse.diagnostic.emitter.<EMITTER_NAME>.type en AzureLogIngestion.
AzureLogAnalytics es el tipo heredado de API del recopilador de datos HTTP. Para obtener instrucciones heredadas, consulte monitor aplicaciones de Apache Spark con Azure Log Analytics.
| Configuración | Descripción |
|---|---|
spark.synapse.diagnostic.emitters |
Nombres de destino, separados por comas, de emisores de diagnóstico. Por ejemplo, MyDest1,MyDest2 . |
spark.synapse.diagnostic.emitter.<EMITTER_NAME>.type |
Tipo de destino integrado. Para habilitar Azure Log Analytics a través de la API de ingesta de registros, establezca este valor en AzureLogIngestion. |
spark.synapse.diagnostic.emitter.<EMITTER_NAME>.categories |
Categorías de registro seleccionadas separadas por comas. Entre los valores disponibles se incluyen: DriverLog, ExecutorLog, EventLog y Metrics. Si no se establece, el valor predeterminado es todas las categorías. |
spark.synapse.diagnostic.emitter.<EMITTER_NAME>.dceUri |
El URI del punto de conexión de recopilación de datos (DCE) usado para la ingesta al enrutar los datos a través de reglas de recopilación de datos (DCR). |
spark.synapse.diagnostic.emitter.<EMITTER_NAME>.logDcr |
Identificador de recurso de la regla de recopilación de datos (DCR) utilizado para enrutar los registros de Spark al destino. |
spark.synapse.diagnostic.emitter.<EMITTER_NAME>.logStream |
Nombre de secuencia definido en la regla de recopilación de datos (DCR) para los registros de Spark. |
spark.synapse.diagnostic.emitter.<EMITTER_NAME>.eventDcr |
Identificador de recurso de regla de recopilación de datos (DCR) que se usa para enrutar los registros de eventos de Spark. |
spark.synapse.diagnostic.emitter.<EMITTER_NAME>.eventStream |
Nombre de flujo definido en la regla de recopilación de datos (DCR) para los registros de eventos de Spark. |
spark.synapse.diagnostic.emitter.<EMITTER_NAME>.metricDcr |
El identificador de recurso de la Regla de Recopilación de Datos (DCR) utilizado para canalizar las métricas de Spark. |
spark.synapse.diagnostic.emitter.<EMITTER_NAME>.metricStream |
Nombre de secuencia definido en la regla de recopilación de datos (DCR) para las métricas de Spark. |
spark.synapse.diagnostic.emitter.<EMITTER_NAME>.metaDcr |
El ID de recurso de la Regla de Recopilación de Datos DCR que se utiliza para enrutar los metadatos de Spark. |
spark.synapse.diagnostic.emitter.<EMITTER_NAME>.metaStream |
Nombre del flujo definido en la regla de recopilación de datos (DCR) para los metadatos de Spark. |
spark.synapse.diagnostic.emitter.<EMITTER_NAME>.certificate.keyVault.certificateName |
Nombre del certificado almacenado en Azure Key Vault, que se usa para la autenticación. |
spark.synapse.diagnostic.emitter.<EMITTER_NAME>.certificate.keyVault |
El Azure Key Vault URI que almacena el certificado de autenticación. |
spark.synapse.diagnostic.emitter.<EMITTER_NAME>.tenantId |
Identificador de inquilino de Microsoft Entra usado para la autenticación. |
spark.synapse.diagnostic.emitter.<EMITTER_NAME>.clientId |
Identificador de cliente (aplicación) registrado en Microsoft Entra ID. |
spark.fabric.pools.skipStarterPools |
Esta propiedad de Spark se utiliza para forzar una sesión de Spark bajo demanda. Establezca el valor en true al usar el grupo predeterminado para activar que las bibliotecas emitan registros y métricas. |
spark.synapse.diagnostic.emitter.<EMITTER_NAME>.secret |
El secreto de cliente asociado a la aplicación de Microsoft Entra ID (Azure AD), que se usa junto con el identificador de inquilino y el identificador de cliente para autenticar el emisor al enviar datos de diagnóstico. Esta configuración es mutuamente excluyente con la autenticación basada en certificados: configure el secreto de cliente o el certificado, pero no ambos. |
Contenido relacionado
- Crear definición de trabajo de Apache Spark
- Crear, configurar y usar un entorno en Microsoft Fabric
- Desarrollar, ejecutar y gestionar los cuadernos de Microsoft Fabric
- Supervisión de aplicaciones Spark
- Recopilar diagnósticos de Apache Spark usando Azure Event Hubs
- Recopilar diagnósticos de Apache Spark mediante Azure Storage Account