Monitorizar entornos con Cloud Monitoring

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

Puedes usar Cloud Monitoring y Cloud Logging con Cloud Composer.

Cloud Monitoring permite ver con mayor claridad el rendimiento, el tiempo de actividad y el estado general de las aplicaciones en la nube. Cloud Monitoring recoge e ingiere métricas, eventos y metadatos de Cloud Composer para generar estadísticas en paneles y gráficos. Puede usar Cloud Monitoring para conocer el rendimiento y el estado de sus entornos de Cloud Composer y las métricas de Airflow.

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

Antes de empezar

  • Para acceder a los registros y las métricas de tu entorno de Cloud Composer, se necesitan los siguientes permisos:

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

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

  • Para evitar que se registren datos duplicados, Cloud Logging para Google Kubernetes Engine está inhabilitado.

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

Métricas de entorno

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

Estado del entorno

Para comprobar el estado de tu entorno, puedes usar la siguiente métrica de estado:

Métrica API
Estado de un entorno composer.googleapis.com/environment/healthy

Cloud Composer ejecuta un DAG de actividad denominado airflow_monitoring, que se ejecuta según una programación y comunica el estado del entorno de la siguiente manera:

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

El DAG de la prueba de vida se almacena en la carpeta dags/ y se puede ver en la interfaz de usuario de Airflow. La frecuencia y el contenido del DAG de actividad son inmutables y no se deben modificar. Los cambios en el DAG de actividad no se conservan.

Comprobaciones de las dependencias del entorno

Cloud Composer comprueba periódicamente que el entorno pueda acceder a los servicios necesarios para su funcionamiento y que tenga suficientes permisos 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 comprobaciones de las dependencias del entorno:

Métrica API Descripción
Número de comprobaciones de dependencias composer.googleapis.com/environment/health/dependency_check_count Esta métrica registra el número de veces que se realizan comprobaciones de accesibilidad en los servicios necesarios para el funcionamiento del entorno.
Número de comprobaciones de permisos de dependencia composer.googleapis.com/environment/health/dependency_permissions_check_count Esta métrica registra el número de veces que se realizan comprobaciones de permisos en los servicios necesarios para el funcionamiento del entorno.

Estado de la base de datos

Para comprobar el estado de tu base de datos, puedes usar la siguiente métrica de estado: composer.googleapis.com/environment/database_health.

El pod de monitorización de Airflow hace ping a la base de datos cada minuto e informa del estado como True si se puede establecer una conexión SQL o False si no se puede.

Métricas de la 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. Puede usar estas métricas para monitorizar el rendimiento y el uso de recursos de la instancia de base de datos de su entorno.

Por ejemplo, puede que quieras aumentar el tamaño de tu entorno si se acerca a los límites de recursos. También puedes optimizar el tamaño de tu 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 del disco de la base de datos composer.googleapis.com/environment/database/disk/bytes_used
Cuota de disco de la base de datos 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 modo de alta disponibilidad y está lista para la conmutación por error.
Número de solicitudes de conmutación por error automática de la base de datos composer.googleapis.com/environment/database/auto_failover_request_count Número total de solicitudes de conmutación por error automática de la instancia de Cloud SQL del entorno.

Métricas de los trabajadores

Las siguientes métricas de entorno están disponibles para los trabajadores de Airflow en los entornos de Cloud Composer 3 y Cloud Composer 2.

Esta métrica se usa para escalar automáticamente el número de trabajadores de tu entorno. El Horizontal Pod Autoscaler define esta métrica y, a continuación, el componente del entorno Airflow Worker Set Controller usa esta métrica para aumentar o reducir el número de trabajadores de Airflow en función del valor de esta métrica.

Métrica de trabajador API
Factor de escala objetivo composer.googleapis.com/environment/worker/scale_factor_target

Métricas de Scheduler

Nombre API Descripción
Programadores activos composer.googleapis.com/environment/active_schedulers Número de instancias de programador activas.

Métricas de activadores

Nombre API Descripción
Activadores activos composer.googleapis.com/environment/active_triggerers Número de instancias de activador activas.

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 comprobar el rendimiento y el uso de recursos de la instancia del servidor web de Airflow de tu entorno.

Por ejemplo, puede que le interese aumentar los parámetros de escala y rendimiento del servidor web si se acerca constantemente a los límites de recursos.

Nombre API Descripción
Servidores web activos composer.googleapis.com/environment/active_webservers Número de instancias de servidor web activas.
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

Cuotas de los servicios que usa el entorno

Cloud Composer usa otros Google Cloud servicios. Estos servicios tienen cuotas a nivel de proyecto que se aplican cuando usas Cloud Composer.

En Cloud Composer 3, el clúster del entorno se encuentra en el proyecto de inquilino. Cloud Composer 3 proporciona las siguientes métricas que informan sobre el uso de las cuotas y los límites de cuota correspondientes de los servicios que usa tu entorno en el proyecto de inquilino.

Métrica API Descripción
Límite de cuota de CPU para cargas de trabajo de Cloud Composer composer.googleapis.com/environment/workloads_cpu_quota (Solo para Cloud Composer 3) La cuota de asignación de CPUs de Compute Engine para el número total de CPUs virtuales que utiliza un entorno. El límite se aplica por entorno. Si tu proyecto tiene varios entornos de Cloud Composer 3, cada uno de ellos tendrá su propio límite de cuota.
Uso de la cuota de CPU para cargas de trabajo de Cloud Composer composer.googleapis.com/environment/workloads_cpu_quota_usage (Solo para Cloud Composer 3) Uso de la cuota de asignación de CPU de Compute Engine por parte de un entorno.

Métricas de DAG

Para ayudarte a monitorizar la eficiencia de tus ejecuciones de DAG y a identificar las tareas que provocan una latencia alta, tienes disponibles las siguientes métricas de DAG.

Métrica de DAG API
Número de ejecuciones de DAG composer.googleapis.com/workflow/run_count
Duración de cada ejecución de DAG composer.googleapis.com/workflow/run_duration
Número 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 los flujos de trabajo y las ejecuciones de tareas completados (con éxito o error). Sin datos se muestra cuando no hay actividad en el flujo de trabajo y en los flujos de trabajo y las tareas en curso.

Métricas de Celery Executor

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

Métrica de Celery Executor API
Número de tareas en la cola composer.googleapis.com/environment/task_queue_length
Número de trabajadores online de Celery composer.googleapis.com/environment/num_celery_workers

Métricas de Airflow

Están disponibles las siguientes métricas de Airflow. Estas métricas se corresponden con las métricas proporcionadas por Airflow.

Nombre API Nombre en Airflow Descripción
Códigos de salida distintos de cero de tareas de Celery composer.googleapis.com/environment/celery/execute_command_failure_count celery.execute_command.failure Número 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 Número de errores AirflowTaskTimeout que se han producido al publicar la tarea en el broker de Celery.
Duración de la obtención de DAG serializados composer.googleapis.com/environment/collect_db_dag_duration collect_db_dags Tiempo necesario para obtener todos los DAGs serializados de la base de datos.
Errores de actualización de DAG composer.googleapis.com/environment/dag_callback/exception_count dag.callback_exceptions Número de excepciones generadas a partir de las retrollamadas de DAG. Cuando esto ocurre, significa que una devolución de llamada de DAG no funciona.
Errores de actualización de DAG composer.googleapis.com/environment/dag_file/refresh_error_count dag_file_refresh_error Número de errores al cargar archivos DAG.
Tiempo de carga del archivo DAG composer.googleapis.com/environment/dag_processing/last_duration dag_processing.last_duration.<dag_file> Tiempo necesario para cargar un archivo DAG específico.
Tiempo transcurrido desde el procesamiento del archivo DAG composer.googleapis.com/environment/dag_processing/last_run_elapsed_time dag_processing.last_run.seconds_ago.<dag_file> Segundos transcurridos 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 Número de procesos DagFileProcessorManager detenidos.
Errores de análisis de DAGs composer.googleapis.com/environment/dag_processing/parse_error_count dag_processing.import_errors Número de errores generados al analizar archivos DAG.
Procesos de análisis de DAG en ejecución composer.googleapis.com/environment/dag_processing/processes dag_processing.processes Número de procesos de análisis de DAGs que se están ejecutando.
Tiempos de espera del procesador composer.googleapis.com/environment/dag_processing/processor_timeout_count dag_processing.processor_timeouts Número de procesadores de archivos que se han cerrado porque han tardado demasiado.
Tiempo necesario para analizar e importar todos los archivos DAG composer.googleapis.com/environment/dag_processing/total_parse_time dag_processing.total_parse_time Tiempo total necesario para analizar e importar todos los archivos DAG una vez.
Tamaño de la bolsa DAG actual composer.googleapis.com/environment/dagbag_size dagbag_size Número de DAGs encontrados cuando el programador ha ejecutado un análisis en función de su configuración.
Notificaciones por correo de incumplimiento del SLA composer.googleapis.com/environment/email/sla_notification_failure_count sla_email_notification_failure Número de intentos fallidos de envío de notificaciones por correo electrónico de incumplimiento del SLA.
Abrir espacios en el ejecutor composer.googleapis.com/environment/executor/open_slots executor.open_slots Número de ranuras abiertas en el ejecutor.
Tareas en cola en el ejecutor composer.googleapis.com/environment/executor/queued_tasks executor.queued_tasks Número de tareas en cola en el ejecutor.
Ejecutar tareas en el ejecutor composer.googleapis.com/environment/executor/running_tasks executor.running_tasks Número de tareas en ejecución en el ejecutor.
Éxitos o fallos de instancias de tareas composer.googleapis.com/environment/finished_task_instance_count ti_failures, ti_successes Número total de instancias de tareas completadas correctamente o con errores.
Tareas iniciadas o finalizadas composer.googleapis.com/environment/job/count <job_name>_start, <job_name>_end Número de tareas iniciadas o finalizadas, como SchedulerJob o LocalTaskJob.
Errores de latido de tarea composer.googleapis.com/environment/job/heartbeat_failure_count <job_name>_heartbeat_failure Número de latidos fallidos de una tarea.
Tareas creadas por operador composer.googleapis.com/environment/operator/created_task_instance_count task_instance_created-<operator_name> Número de instancias de tareas creadas para un operador determinado.
Ejecuciones de operadores composer.googleapis.com/environment/operator/finished_task_instance_count operator_failures_<operator_name>, operator_successes_<operator_name> Número de instancias de tareas finalizadas por operador
Abrir espacios en la piscina composer.googleapis.com/environment/pool/open_slots pool.open_slots.<pool_name> Número de ranuras abiertas en el grupo.
Espacios en cola en el pool composer.googleapis.com/environment/pool/queued_slots pool.queued_slots.<pool_name> Número de ranuras en cola del grupo.
Ejecutar ranuras en el grupo composer.googleapis.com/environment/pool/running_slots pool.running_slots.<pool_name> Número de ranuras en ejecución en el grupo.
Tareas que no se pueden ejecutar en el grupo composer.googleapis.com/environment/pool/starving_tasks pool.starving_tasks.<pool_name> Número de tareas que no se pueden ejecutar en el grupo.
Tiempo dedicado a la sección crítica del programador composer.googleapis.com/environment/scheduler/critical_section_duration scheduler.critical_section_duration Tiempo empleado en la sección crítica del bucle del programador. Solo un programador puede entrar en este bucle a la vez.
Errores de bloqueo de sección crítica composer.googleapis.com/environment/scheduler/critical_section_lock_failure_count scheduler.critical_section_busy Número de veces que un proceso del programador ha intentado obtener un bloqueo en la sección crítica (necesario para enviar tareas al ejecutor) y ha detectado que otro proceso lo ha bloqueado.
Tareas finalizadas externamente composer.googleapis.com/environment/scheduler/task/externally_killed_count scheduler.tasks.killed_externally Número de tareas finalizadas externamente.
Tareas huérfanas composer.googleapis.com/environment/scheduler/task/orphan_count scheduler.orphaned_tasks.cleared, scheduler.orphaned_tasks.adopted Número de tareas huérfanas que ha eliminado o adoptado el programador.
Tareas en ejecución, con falta de recursos o ejecutables composer.googleapis.com/environment/scheduler/tasks scheduler.tasks.running, scheduler.tasks.starving, scheduler.tasks.executable Número de tareas en ejecución, con falta de recursos o ejecutables.
Señales de latido del programador composer.googleapis.com/environment/scheduler_heartbeat_count scheduler_heartbeat Señales de latido del programador.
Notificaciones de devolución de llamada de SLA fallidas composer.googleapis.com/environment/sla_callback_notification_failure_count sla_callback_notification_failure Número de intentos fallidos de enviar notificaciones de devolución de llamada por incumplimiento del SLA.
Errores de excepción de comprobación de sensores inteligentes composer.googleapis.com/environment/smart_sensor/exception_failures smart_sensor_operator.exception_failures Número de fallos causados por una excepción en el bucle de comprobación del sensor inteligente anterior.
Smart sensor poking infrastructure failures composer.googleapis.com/environment/smart_sensor/infra_failures smart_sensor_operator.infra_failures Número de errores de infraestructura en el bucle de comprobación del sensor inteligente anterior.
Excepciones de comprobación de sensores inteligentes composer.googleapis.com/environment/smart_sensor/poked_exception smart_sensor_operator.poked_exception Número de excepciones en el bucle de comprobación del sensor inteligente anterior.
El sensor inteligente ha detectado correctamente las tareas composer.googleapis.com/environment/smart_sensor/poked_success smart_sensor_operator.poked_success Número de tareas completadas recientemente que ha comprobado el sensor inteligente en el bucle de comprobación anterior.
Tareas de sensores inteligentes composer.googleapis.com/environment/smart_sensor/poked_tasks smart_sensor_operator.poked_tasks Número de tareas activadas por el sensor inteligente en el bucle de activación anterior.
Instancias de tareas anteriores que se han completado correctamente composer.googleapis.com/environment/task_instance/previously_succeeded_count previously_succeeded Número de instancias de tareas que se han completado correctamente anteriormente.
Tareas fallidas composer.googleapis.com/environment/zombie_task_killed_count zombies_killed Número de tareas fallidas.
Duración de la ejecución de DAG composer.googleapis.com/workflow/dag/run_duration dagrun.duration.success.<dag_id>, dagrun.duration.failed.<dag_id> Tiempo necesario para que un DagRun alcance un estado de éxito o de error.
Duración de la comprobación de dependencias de DAG composer.googleapis.com/workflow/dependency_check_duration dagrun.dependency-check.<dag_id> Tiempo necesario para comprobar las dependencias de DAG. Esta métrica es diferente de las métricas de comprobaciones de dependencias y permisos del entorno, y se aplica a los DAGs.
Retraso de la programación de 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> Número 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 necesario para completar una tarea.
Tareas iniciadas composer.googleapis.com/workflow/task_instance/started_count ti.start.<dag_id>.<task_id> Número de tareas iniciadas en un DAG determinado.
Duración en cola de la instancia de tarea composer.googleapis.com/workflow/task_instance/queued_duration dag.<dag_id>.<task_id>.queued_duration Tiempo que una tarea pasa en el estado Queued antes de cambiar al estado Running.
Uso de CPU de la tarea composer.googleapis.com/workflow/task/cpu_usage task.cpu_usage.<dag_id>.<task_id> Porcentaje de CPU usado por una tarea.
Uso de memoria de las tareas composer.googleapis.com/workflow/task/mem_usage task.mem_usage.<dag_id>.<task_id> Porcentaje de memoria usada por una tarea.
Tareas eliminadas del DAG composer.googleapis.com/workflow/task/removed_from_dag_count task_removed_from_dag.<dag_id> Número de tareas eliminadas de un DAG determinado (es decir, la tarea ya no existe en el DAG).
Tareas restauradas en el DAG composer.googleapis.com/workflow/task/restored_to_dag_count task_restored_to_dag.<dag_id> Número de tareas restauradas de un DAG determinado (es decir, la instancia de tarea que estaba en estado REMOVED en la base de datos se añade al archivo DAG).
Retraso en la programación de tareas composer.googleapis.com/workflow/task/schedule_delay dagrun.schedule_delay.<dag_id> Tiempo transcurrido entre la fecha de inicio de la primera tarea y el inicio previsto de la ejecución del DAG.
Número total de activadores en ejecución composer.googleapis.com/workload/triggerer/num_running_triggers triggers.running Número de activadores en ejecución por instancia de activador.
Activadores de bloqueo composer.googleapis.com/environment/trigger/blocking_count triggers.blocked_main_thread Número de activadores que han bloqueado el hilo principal (probablemente porque no son totalmente asíncronos).
Activadores fallidos composer.googleapis.com/environment/trigger/failed_count triggers.failed Número de activadores que han fallado con un error antes de poder activar un evento.
Activadores correctos composer.googleapis.com/environment/trigger/succeeded_count triggers.succeeded Número de activadores que han activado al menos un evento.

Usar Monitoring en entornos de Cloud Composer

Consola

Puedes usar el explorador de métricas para mostrar métricas relacionadas con tus entornos y DAGs:

  • El recurso Entorno de Cloud Composer contiene métricas de los entornos.

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

  • El recurso Workflow de Cloud Composer contiene métricas de los DAGs.

    Para mostrar las métricas de un DAG o una tarea específicos, filtra las métricas por las 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 gestionar paneles de control personalizados y los widgets a través de la API de Cloud Monitoring y del comando gcloud monitoring dashboards. Para obtener más información, consulta Gestionar paneles de control 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:

Usar alertas de Cloud Monitoring

Puedes crear políticas de alertas para monitorizar los valores de las métricas y recibir notificaciones cuando esas métricas incumplan una condición.

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

    Ve a Alertas.

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuya sección sea Monitorización.

  2. Si no has creado tus canales de notificación y quieres recibir notificaciones, haz clic en Editar canales de notificación y añade tus canales de notificación. Vuelve a la página Alertas después de añadir tus canales.
  3. En la página Alertas, selecciona Crear política.
  4. Para seleccionar la métrica, despliega el menú Seleccionar una métrica y, a continuación, haz lo siguiente:
    1. Para limitar el menú a las entradas relevantes, introduce Cloud Composer en la barra de filtro. Si no hay resultados después de filtrar el menú, desactive el interruptor Mostrar solo recursos y métricas activos.
    2. En Resource type (Tipo de recurso), selecciona Cloud Composer Environment (Entorno de Cloud Composer) o Cloud Composer Workflow (Flujo de trabajo de Cloud Composer).
    3. Seleccione una categoría de métrica y una métrica, y, a continuación, Aplicar.
  5. Haz clic en Siguiente.
  6. Los ajustes de la página Configurar activador de alerta determinan cuándo se activa la alerta. Seleccione un tipo de condición y, si es necesario, especifique un umbral. Para obtener más información, consulta el artículo Crear políticas de alertas de umbral de métricas.
  7. Haz clic en Siguiente.
  8. Opcional: Para añadir notificaciones a tu política de alertas, haz clic en Canales de notificación. En el cuadro de diálogo, selecciona uno o más canales de notificación y, luego, haz clic en Aceptar.
  9. Opcional: Actualiza la duración del cierre automático de incidentes. Este campo determina cuándo cierra Monitoring los incidentes si no hay datos de métricas.
  10. Opcional: Haz clic en Documentación y añade la información que quieras incluir en las notificaciones.
  11. Haz clic en Nombre de la alerta y escribe el que quieras asignar a la política de alertas.
  12. Haz clic enCreate Policy (Crear política).
Para obtener más información, consulta el resumen de alertas.

Siguientes pasos