¿Por qué no puedo ver las métricas de Amazon CloudWatch para mi trabajo ETL de AWS Glue incluso después de habilitar las métricas del trabajo?

Última actualización: 20/08/2021

He habilitado la opción para crear métricas de trabajo para mi trabajo ETL (extracción, transformación y carga) de AWS Glue. Sin embargo, no puedo ver las métricas de trabajo en Amazon CloudWatch.

Descripción corta

AWS Glue envía métricas a CloudWatch cada 30 segundos y el panel de la consola de CloudWatch está configurado para mostrar estas métricas cada minuto. Las métricas de AWS Glue representan valores delta de los valores informados anteriormente. El panel de métricas agrega los valores que surgen cada 30 segundos a fin de obtener un valor para el último minuto. Las métricas de trabajo de su trabajo se habilitan con la inicialización de GlueContext en el script de trabajo. Las métricas se actualizan solo al final de una tarea de Apache Spark. Las métricas de trabajo representan los valores agregados de todas las tareas de Spark completadas.

Resolución

Aumente el tiempo de ejecución de su trabajo de AWS Glue: las métricas de CloudWatch se informan cada 30 segundos. Por lo tanto, si el tiempo de ejecución de su trabajo es inferior a 30 segundos, las métricas de trabajo no se envían a CloudWatch. AWS Glue utiliza las métricas de Spark y Spark utiliza la biblioteca de métricas de DropWizard para publicar métricas. Para obtener las métricas de AWS Glue, el trabajo debe ejecutarse durante al menos 30 segundos. Actualizar su trabajo para procesar más datos puede ayudar a aumentar el tiempo de ejecución de su trabajo. Sin embargo, puede utilizar una solución temporal para ver las métricas del trabajo. Puede aumentar el tiempo de ejecución de su trabajo de AWS Glue si incluye la función time.sleep() en su trabajo. Puede incluir time.sleep() en su trabajo al principio o al final del código según el caso de uso.

Importante: El uso de la función time.sleep() no es una práctica recomendada de codificación.

Para Python:

import time
time.sleep(30)

Para Scala:

Thread.sleep(30)

Asegúrese de que el trabajo haya completado las tareas de Spark: las métricas de trabajo se informan una vez completadas las tareas de Spark. Por lo tanto, verifique y confirme que las tareas de Spark de su trabajo se completaron y que el trabajo no falló.

Asegúrese de que GlueContext se haya inicializado en el script de trabajo: la clase GlueContext del script de trabajo permite escribir métricas en CloudWatch. Si utiliza un script personalizado que utiliza solo DataFrame y no DynamicFrame, es posible que la clase GlueContext no se haya inicializado. Esto podría provocar que las métricas no se escriban en CloudWatch. Si utiliza un script personalizado, asegúrese de actualizar su trabajo para inicializar la clase GlueContext.

Asegúrese de que el rol de IAM de AWS Glue tenga el permiso necesario: verifique y confirme que el rol de IAM asociado al trabajo ETL tiene el permiso cloudwatch:PutMetricData para crear métricas en CloudWatch. Si utiliza un rol personalizado, asegúrese de que este tenga permiso para escribir las métricas de trabajo en CloudWatch.
Nota: Se recomienda utilizar la política administrada de AWS AWSGlueServiceRole para administrar los permisos.


¿Le resultó útil este artículo?


¿Necesita asistencia técnica o con la facturación?