Supervisar entornos con Cloud Monitoring

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

Puedes usar Cloud Monitoring y Cloud Logging con Cloud Composer.

Cloud Monitoring proporciona visibilidad del rendimiento, el tiempo de actividad y el estado general de las aplicaciones en la nube. Cloud Monitoring recopila y transfiere métricas, eventos y metadatos de Cloud Composer para generar estadísticas en paneles y gráficos. Puedes usar Cloud Monitoring para comprender el rendimiento el estado de tus entornos de Cloud Composer y las métricas de Airflow.

El registro captura los registros que producen los contenedores de trabajador y programador en el clúster de tu entorno. Estos registros contienen información de la dependencia de Airflow y del nivel de sistema para ayudar con la depuración. Para obtener información sobre cómo ver los registros, consulta Cómo ver los registros de Airflow.

Antes de comenzar

  • Se requieren los siguientes permisos para acceder a los registros y las métricas de tu entorno de Cloud Composer:

    • Acceso de solo lectura a los registros y métricas: logging.viewer y monitoring.viewer
    • Acceso de solo lectura a registros, incluidos los registros privados: logging.privateLogViewer
    • Acceso de lectura y escritura a métricas: monitoring.editor

    Para obtener más información sobre otros permisos y roles de Cloud Composer, consulta Control de acceso.

  • A fin de evitar el registro duplicado, Cloud Logging para Google Kubernetes Engine está inhabilitado.

  • Cloud Logging produce una entrada para cada estado y evento que ocurre en tu proyecto de Google Cloud. Puedes usar filtros de exclusión para reducir el volumen de registros, incluidos los registros que Cloud Logging que produce para Cloud Composer.

    Si excluyes registros de jobs.py, pueden producirse fallas en la verificación de estado y errores CrashLoopBackOff. Debes incluir -jobs.py en los filtros de exclusión para evitar que se excluya.

  • Monitoring no puede trazar los valores de recuento para los DAG y las tareas que se ejecutan más de una vez por minuto, y no traza las métricas de las tareas fallidas.

Métricas de entorno

Puedes usar las métricas de entorno para verificar el uso de recursos y el estado de tus entornos de Cloud Composer.

Estado del entorno

Para verificar el estado de tu entorno, puedes usar el siguiente comando: Métrica de estado: composer.googleapis.com/environment/healthy.

Cloud Composer ejecuta un DAG en funcionamiento llamado airflow_monitoring, que se ejecuta según un programa y, además, informa el estado del entorno de la siguiente manera:

  • Si la ejecución del DAG de estado activo finaliza correctamente, el estado de estado es True.
  • Si la ejecución del DAG de estado activo falla, el estado es False.

El DAG en funcionamiento se almacena en la carpeta dags/ y se puede ver en la IU de Airflow. La frecuencia y el contenido del DAG de estado activo son inmutables y no deben modificarse. Los cambios en el DAG de funcionamiento no persisten.

Verificaciones de dependencias del entorno

Cloud Composer periódicamente comprueba que el entorno pueda alcanzar el servicios necesarios para su funcionamiento y que tenga permisos suficientes para interactuar con ellos. Algunos ejemplos de servicios necesarios para el funcionamiento del entorno son Artifact Registry, Cloud Logging y Cloud Monitoring.

Las siguientes métricas están disponibles para las verificaciones de dependencias del entorno:

Métrica de dependencia API Descripción
Cantidad de verificaciones de dependencias composer.googleapis.com/environment/health/dependency_check_count Esta métrica hace un seguimiento de la cantidad de veces que se realizan las verificaciones de accesibilidad. en los servicios necesarios para la operación del entorno.
Cantidad de verificaciones de permisos de dependencia composer.googleapis.com/environment/health/dependency_permissions_check_count Esta métrica realiza un seguimiento de la cantidad de veces que se realizan verificaciones de permisos en los servicios necesarios para el funcionamiento del entorno.

Estado de la base de datos

Para verificar el estado de tu base de datos, puedes usar el siguiente comando: Métrica de estado: composer.googleapis.com/environment/database_health.

El Pod de supervisión de Airflow hace ping en la base de datos cada minuto y, luego, informa el estado como True si se puede establecer una conexión SQL o False si no es así.

Métricas de base de datos

Las siguientes métricas de entorno están disponibles para la base de datos de metadatos de Airflow que usan los entornos de Cloud Composer. Puedes usar estas métricas para supervisar el rendimiento y el uso de recursos de tu instancia de base de datos del entorno.

Por ejemplo, te recomendamos que aumentes el tamaño de tu entorno si se acerca a los límites de recursos. También puedes optimizar el tamaño de la base de datos realizando una limpieza de la base de datos.

Métrica de base de datos API Descripción
Uso de CPU de la base de datos composer.googleapis.com/environment/database/cpu/usage_time
Núcleos de CPU de la base de datos composer.googleapis.com/environment/database/cpu/reserved_cores
Uso de CPU de la base de datos composer.googleapis.com/environment/database/cpu/utilization
Uso de memoria de la base de datos composer.googleapis.com/environment/database/memory/bytes_used
Cuota de memoria de la base de datos composer.googleapis.com/environment/database/memory/quota
Uso de memoria de la base de datos composer.googleapis.com/environment/database/memory/utilization
Uso de disco de la base de datos composer.googleapis.com/environment/database/disk/bytes_used
Cuota de Database Disk composer.googleapis.com/environment/database/disk/quota
Uso de disco de la base de datos composer.googleapis.com/environment/database/disk/utilization
Límite de conexiones de bases de datos composer.googleapis.com/environment/database/network/max_connections
Conexiones de bases de datos composer.googleapis.com/environment/database/network/connections
Base de datos disponible para conmutación por error composer.googleapis.com/environment/database/available_for_failover Es True si la instancia de Cloud SQL del entorno está en el modo de alta disponibilidad y está lista para la conmutación por error.
Recuento de solicitudes de conmutación por error automática de la base de datos composer.googleapis.com/environment/database/auto_failover_request_count Cantidad total de solicitudes de conmutación por error automática del entorno Instancia de Cloud SQL.

Métricas de los trabajadores

La siguiente métrica de entorno está disponible para los trabajadores de Airflow que usan los entornos de Cloud Composer 2.

Esta métrica se usa para escalar automáticamente la cantidad de trabajadores en tu entorno. El escalador automático de pods horizontal establece esta métrica y, luego, el componente de entorno Airflow Worker Set Controller la usa para aumentar o disminuir la cantidad de trabajadores de Airflow, según el valor de esta métrica.

Métrica de trabajador API
Objetivo de factor de escala composer.googleapis.com/environment/worker/scale_factor_target

Métricas del programador

Nombre API Descripción
Programadores activos composer.googleapis.com/environment/active_schedulers Cantidad de instancias activas del programador.

Métricas del activador

Las siguientes métricas de activador se proporcionan exclusivamente para Cloud Composer:

Nombre API Descripción
Activadores activos composer.googleapis.com/environment/active_triggerers Es la cantidad de instancias de activadores activos.

Además, las siguientes métricas de Airflow están disponibles a través de las métricas de Cloud Composer:

Nombre API Nombre en Airflow Descripción
Cantidad total de activadores en ejecución composer.googleapis.com/workload/triggerer/num_running_triggers triggers.running Es la cantidad de activadores en ejecución por instancia del activador.
Activadores de bloqueo composer.googleapis.com/environment/trigger/blocking_count triggers.blocked_main_thread Cantidad de activadores que bloquearon el subproceso principal (probablemente debido a que no es completamente asíncrono)
Activadores con errores composer.googleapis.com/environment/trigger/failed_count triggers.failed Cantidad de activadores que fallaron con un error antes de poder activar un evento.
Activadores correctos composer.googleapis.com/environment/trigger/succeeded_count triggers.succeeded Cantidad de activadores que activaron al menos un evento.

Métricas de servidor web

Las siguientes métricas de entorno están disponibles para el servidor web de Airflow que usan los entornos de Cloud Composer. Puedes usar estas métricas para verificar el rendimiento y el uso de recursos de la Web de Airflow de tu entorno de Compute Engine.

Por ejemplo, es posible que desees aumentar la escala del servidor web y los parámetros de rendimiento si se acerca constantemente a los límites de recursos.

Nombre API Descripción
Uso de CPU del servidor web composer.googleapis.com/environment/web_server/cpu/usage_time
Cuota de CPU del servidor web composer.googleapis.com/environment/web_server/cpu/reserved_cores
Uso de memoria del servidor web composer.googleapis.com/environment/web_server/memory/bytes_used
Cuota de memoria del servidor web composer.googleapis.com/environment/web_server/memory/quota
Servidores web activos composer.googleapis.com/environment/active_webservers Cantidad de instancias de servidor web activas.

Métricas del DAG

Para ayudarte a supervisar la eficacia de las ejecuciones de tu DAG y, también, identificar tareas que causan una latencia alta, se encuentran disponibles las siguientes métricas de DAG.

Métrica del DAG API
Cantidad de ejecuciones de DAG composer.googleapis.com/workflow/run_count
Duración de cada ejecución del DAG composer.googleapis.com/workflow/run_duration
Cantidad de ejecuciones de tareas composer.googleapis.com/workflow/task/run_count
Duración de cada ejecución de tarea composer.googleapis.com/workflow/task/run_duration

Cloud Monitoring solo muestra las métricas de las ejecuciones del flujo de trabajo y de tareas completadas (tengan éxito o fallen). Sin datos se muestra cuando no hay actividad del flujo de trabajo y, también, cuando hay ejecuciones del flujo de trabajo y de tareas en curso.

Métricas de ejecutor de Celery

Están disponibles las siguientes métricas del ejecutor de Celery. Estas métricas pueden ayudarte a determinar si hay suficientes recursos de trabajador en tu entorno.

Métrica del ejecutor de Celery API
Cantidad de tareas en la cola composer.googleapis.com/environment/task_queue_length
Cantidad de trabajadores de Celery en línea composer.googleapis.com/environment/num_celery_workers

Métricas de Airflow

Las siguientes métricas de Airflow están disponibles. Estas métricas corresponden a las métricas que proporciona Airflow.

Nombre API Nombre en Airflow Descripción
Códigos de salida de tareas de Celery distintos de cero composer.googleapis.com/environment/celery/execute_command_failure_count celery.execute_command.failure Cantidad de códigos de salida distintos de cero de las tareas de Celery.
Tiempos de espera de publicación de tareas de Celery composer.googleapis.com/environment/celery/task_timeout_error_count celery.task_timeout_error Cantidad de errores AirflowTaskTimeout generados cuando se publica la tarea en el agente de Celery.
Duración de recuperación del DAG serializado composer.googleapis.com/environment/collect_db_dag_duration collect_db_dags Es el tiempo que se tarda en recuperar todos los DAG serializados de la base de datos.
Errores de actualización del DAG composer.googleapis.com/environment/dag_callback/exception_count dag.callback_exceptions Cantidad de excepciones generadas a partir de devoluciones de llamada de DAG. Cuando esto sucede, significa que una devolución de llamada de DAG no funciona.
Errores de actualización del DAG composer.googleapis.com/environment/dag_file/refresh_error_count dag_file_refresh_error Cantidad de fallas cuando se cargaba cualquier archivo DAG.
Tiempo de carga del archivo DAG composer.googleapis.com/environment/dag_processing/last_duration dag_processing.last_duration.<dag_file> El tiempo necesario para cargar un archivo DAG específico.
Tiempo transcurrido desde que se procesó el archivo DAG composer.googleapis.com/environment/dag_processing/last_run_elapsed_time dag_processing.last_run.seconds_ago.<dag_file> Segundos desde la última vez que se procesó un archivo DAG.
Recuento de bloqueos de DagFileProcessorManager composer.googleapis.com/environment/dag_processing/manager_stall_count dag_processing.manager_stalls Cantidad de procesos DagFileProcessorManager detenidos.
Errores de análisis de DAG composer.googleapis.com/environment/dag_processing/parse_error_count dag_processing.import_errors Cantidad de errores generados cuando se analizan archivos DAG.
Ejecuta procesos de análisis de DAG composer.googleapis.com/environment/dag_processing/processes dag_processing.processes Cantidad de procesos de análisis de DAG que se están ejecutando actualmente.
Tiempos de espera del procesador composer.googleapis.com/environment/dag_processing/processor_timeout_count dag_processing.processor_timeouts Cantidad de procesadores de archivos que se cerraron porque tardaron demasiado.
Tiempo que se tardó en analizar e importar todos los archivos DAG composer.googleapis.com/environment/dag_processing/total_parse_time dag_processing.total_parse_time El tiempo total necesario para analizar e importar todos los archivos DAG una vez.
Tamaño actual del paquete de DAG composer.googleapis.com/environment/dagbag_size dagbag_size Cantidad de DAG que se encontraron cuando el programador ejecutó un análisis según su configuración.
Notificaciones por correo electrónico no enviadas al ANS con errores composer.googleapis.com/environment/email/sla_notification_failure_count sla_email_notification_failure Cantidad de intentos fallidos de notificación por correo electrónico de ANS.
Ranuras abiertas en el ejecutor composer.googleapis.com/environment/executor/open_slots executor.open_slots Cantidad de ranuras abiertas en el ejecutor.
Tareas en cola en el ejecutor composer.googleapis.com/environment/executor/queued_tasks executor.queued_tasks Cantidad de tareas en cola en el ejecutor.
Ejecución de tareas en el ejecutor composer.googleapis.com/environment/executor/running_tasks executor.running_tasks Cantidad de tareas en ejecución en el ejecutor.
Éxitos o fallas de las instancias de tareas composer.googleapis.com/environment/finished_task_instance_count ti_failures, ti_successes Aciertos o errores generales de las instancias de la tarea.
Trabajos iniciados o finalizados composer.googleapis.com/environment/job/count <job_name>_start, <job_name>_end Cantidad de trabajos iniciados y finalizados, como SchedulerJob o LocalTaskJob.
Fallas de señal de monitoreo de funcionamiento del trabajo composer.googleapis.com/environment/job/heartbeat_failure_count <job_name>_heartbeat_failure Cantidad de mensajes de estado fallidos de un trabajo.
Tareas creadas por operador composer.googleapis.com/environment/operator/created_task_instance_count task_instance_created-<operator_name> Cantidad de instancias de tareas creadas para un operador determinado.
Ejecuciones del operador composer.googleapis.com/environment/operator/finished_task_instance_count operator_failures_<operator_name>, operator_successes_<operator_name> Cantidad de instancias de tareas finalizadas por operador
Ranuras abiertas en el grupo composer.googleapis.com/environment/pool/open_slots pool.open_slots.<pool_name> Cantidad de espacios disponibles en el grupo.
Ranuras en cola del grupo composer.googleapis.com/environment/pool/queued_slots pool.queued_slots.<pool_name> Cantidad de ranuras en cola en el grupo.
Ranuras en ejecución en el grupo composer.googleapis.com/environment/pool/running_slots pool.running_slots.<pool_name> Cantidad de ranuras en ejecución en el grupo.
Faltan tareas en el grupo composer.googleapis.com/environment/pool/starving_tasks pool.starving_tasks.<pool_name> Cantidad de tareas sin recursos en el grupo.
Tiempo que se usó en la sección crítica del programador composer.googleapis.com/environment/scheduler/critical_section_duration scheduler.critical_section_duration Es el tiempo transcurrido en la sección crítica del bucle del programador. Solo un programador puede ingresar a este bucle a la vez.
Fallas de bloqueo de secciones críticas composer.googleapis.com/environment/scheduler/critical_section_lock_failure_count scheduler.critical_section_busy Recuento de las veces que un proceso del programador trató de obtener un bloqueo en la sección crítica (necesaria para enviar tareas al ejecutor) y lo encontró bloqueado por otro proceso.
Tareas finalizadas de forma externa composer.googleapis.com/environment/scheduler/task/externally_killed_count scheduler.tasks.killed_externally Cantidad de tareas que se finalizaron externamente.
Tareas huérfanas composer.googleapis.com/environment/scheduler/task/orphan_count scheduler.orphaned_tasks.cleared, scheduler.orphaned_tasks.adopted Cantidad de tareas huérfanas que borró o adoptó el programador.
Ejecutar/dejar/dejar/ejecutar tareas composer.googleapis.com/environment/scheduler/tasks scheduler.tasks.running, scheduler.tasks.starving, scheduler.tasks.executable Cantidad de tareas en ejecución, sin recursos o ejecutables.
Señales de monitoreo de funcionamiento del programador composer.googleapis.com/environment/scheduler_heartbeat_count scheduler_heartbeat Señales de monitoreo de funcionamiento del programador
Notificaciones de devolución de llamada de ANS fallidas composer.googleapis.com/environment/sla_callback_notification_failure_count sla_callback_notification_failure Cantidad de intentos fallidos de notificaciones de devolución de llamada no entregadas por el ANS.
Fallas de excepción de empuje del sensor inteligente composer.googleapis.com/environment/smart_sensor/exception_failures smart_sensor_operator.exception_failures Cantidad de fallas causadas por una excepción en el bucle de sondeo del sensor inteligente anterior.
Fallas en la infraestructura de inserción de sensores inteligentes composer.googleapis.com/environment/smart_sensor/infra_failures smart_sensor_operator.infra_failures Cantidad de fallas de infraestructura en el bucle de sondeo del sensor inteligente anterior.
Excepciones de búsqueda de sensores inteligentes composer.googleapis.com/environment/smart_sensor/poked_exception smart_sensor_operator.poked_exception Cantidad de excepciones en el bucle de contacto del sensor inteligente anterior.
El sensor inteligente inició tareas correctamente composer.googleapis.com/environment/smart_sensor/poked_success smart_sensor_operator.poked_success Cantidad de tareas recientemente exitosas que recibió el sensor inteligente en el bucle de ataque anterior.
Tareas de toque de sensores inteligentes composer.googleapis.com/environment/smart_sensor/poked_tasks smart_sensor_operator.poked_tasks Cantidad de tareas insertadas por el sensor inteligente en el bucle de ataque anterior.
Instancias de tareas que se completaron correctamente composer.googleapis.com/environment/task_instance/previously_succeeded_count previously_succeeded Cantidad de instancias de tareas que se completaron correctamente.
Eliminación de tareas zombi composer.googleapis.com/environment/zombie_task_killed_count zombies_killed Cantidad de tareas zombi eliminadas.
Duración de la ejecución del DAG composer.googleapis.com/workflow/dag/run_duration dagrun.duration.success.<dag_id>, dagrun.duration.failed.<dag_id> Es el tiempo que tarda un DagRun en alcanzar el estado de éxito o error.
Duración de la verificación de dependencias del DAG composer.googleapis.com/workflow/dependency_check_duration dagrun.dependency-check.<dag_id> Tiempo que lleva verificar las dependencias del DAG. Esta métrica es diferente de la métrica de dependencias y verificaciones de permisos del entorno, y se aplica a los DAG
Retraso en la programación de la ejecución de DAG composer.googleapis.com/workflow/schedule_delay dagrun.schedule_delay.<dag_id> Tiempo de retraso entre la fecha de inicio programada de DagRun y la fecha de inicio real de DagRun.
Tareas finalizadas composer.googleapis.com/workflow/task_instance/finished_count ti.finish.<dag_id>.<task_id>.<state> Cantidad de tareas completadas en un DAG determinado.
Duración de la ejecución de la instancia de tarea composer.googleapis.com/workflow/task_instance/run_duration dag.<dag_id>.<task_id>.duration Tiempo que lleva completar una tarea.
Tareas iniciadas composer.googleapis.com/workflow/task_instance/started_count ti.start.<dag_id>.<task_id> Cantidad de tareas iniciadas en un DAG determinado.
Duración de la instancia de la tarea en cola composer.googleapis.com/workflow/task_instance/queued_duration dag.<dag_id>.<task_id>.queued_duration Es el tiempo que una tarea pasa en el estado En cola antes de cambiar al estado En ejecución.
Tareas que se quitaron del DAG composer.googleapis.com/workflow/task/removed_from_dag_count task_removed_from_dag.<dag_id> Cantidad de tareas que se quitaron de un DAG determinado (es decir, la tarea ya no existe en el DAG).
Tareas restablecidas en el DAG composer.googleapis.com/workflow/task/restored_to_dag_count task_restored_to_dag.<dag_id> Cantidad de tareas restablecidas para un DAG determinado (es decir, la instancia de tarea que antes tenía el estado REMOVED en la base de datos se agrega al archivo DAG).
Retraso de programación de tareas composer.googleapis.com/workflow/task/schedule_delay dagrun.schedule_delay.<dag_id> Es el tiempo transcurrido entre la fecha de inicio de la primera tarea y el inicio esperado de dagrun.

Usa Monitoring para entornos de Cloud Composer

Console

Puedes usar el Explorador de métricas para mostrar métricas relacionadas con tus entornos y DAG:

  • El recurso Cloud Composer Environment contiene métricas para los entornos.

    Para mostrar las métricas de un entorno específico, filtrar métricas según el environment_name. También puedes filtrar por otras etiquetas, como la ubicación del entorno o la versión de la imagen.

  • El recurso Cloud Composer Workflow contiene métricas para DAG.

    Para mostrar las métricas de un DAG o una tarea específicos, filtrar métricas según el Etiquetas workflow_name y task_name. También puedes filtrar por otras etiquetas, como el estado de la tarea o el nombre del operador de Airflow.

API y gcloud

Puedes crear y administrar paneles personalizados y los widgets a través del API de Cloud Monitoring y el comando gcloud monitoring dashboards Para obtener más información, consulta Administra paneles por API.

Para obtener más información sobre los recursos, las métricas y los filtros, consulta la referencia de la API de Cloud Monitoring:

Usa alertas de Cloud Monitoring

Puedes crear políticas de alertas para supervisar los valores de las métricas y recibir notificaciones cuando estas infrinjan una condición.

  1. En la consola de Google Cloud, ve a la página  Alertas.

    Ir a las Alertas

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Monitoring.

  2. Si aún no creas canales de notificaciones y deseas recibir notificaciones, haz clic en Edit Notification Channels y agrega tus canales de notificaciones. Regresa a la página Alertas después de agregar tus canales.
  3. En la página Alertas, elige Crear política.
  4. Para elegir la métrica, expande el menú Seleccionar una métrica y, luego, haz lo siguiente:
    1. Para limitar el menú a las entradas relevantes, ingresa Cloud Composer en la barra de filtros. Si no hay resultados después de que filtres el menú, inhabilita el botón de activación Show only active resources & metrics.
    2. En Tipo de recurso, selecciona Cloud Composer Environment o Cloud Composer Workflow.
    3. Selecciona una Categoría de métrica y una Métrica. Luego, selecciona Aplicar.
  5. Haz clic en Siguiente.
  6. La configuración de la página Configure alert trigger determina cuándo se activa la alerta. Selecciona un tipo de condición y, si es necesario, especifica un umbral. Para obtener más información, consulta Crea políticas de alertas de límite de métrica.
  7. Haz clic en Siguiente.
  8. Para agregar notificaciones a tu política de alertas, haz clic en Canales de notificaciones (opcional). En el diálogo, elige uno o más canales de notificaciones del menú y, luego, haz clic en Aceptar.
  9. Opcional: Actualiza la Duración del cierre automático de incidentes. Este campo determina cuándo Monitoring cierra los incidentes ante la ausencia de datos de métricas.
  10. Opcional: Haz clic en Documentación y, luego, agrega la información que deseas incluir en un mensaje de notificación.
  11. Haz clic en Nombre de la alerta y, luego, ingresa un nombre para la política de alertas.
  12. Haz clic en Crear política.
Para obtener más información, consulta Políticas de alertas.

¿Qué sigue?