Accede a la interfaz web de Airflow

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

Apache Airflow incluye una interfaz de usuario web llamada IU de Airflow, que puedes usar para administrar los DAG de Airflow, ver los registros de ejecución de DAG, supervisar Airflow y realizar acciones administrativas.

Información acerca del servidor web de Airflow

Cada entorno de Cloud Composer tiene un servidor web que ejecuta la IU de Airflow. El servidor web es parte de la arquitectura del entorno de Cloud Composer.

El servidor web analiza los archivos de definición de DAG en la carpeta dags/ y debe poder acceder a los datos y recursos de un DAG para cargarlo y entregar solicitudes HTTP.

El servidor web actualiza los DAG cada 60 segundos, que es el worker_refresh_interval predeterminado en Cloud Composer. Un error del servidor web puede ocurrir si el servidor web no puede analizar todos los DAG dentro del intervalo de actualización.

Si hay una gran cantidad de archivos de DAG o si hay una carga de trabajo no trivial para subir los DAG, es posible que se superen los 60 segundos para subir los DAG. Para garantizar el acceso al servidor web independientemente del tiempo de carga del DAG, puedes configurar carga asíncrona de DAG para analizar y subir DAG en segundo plano en un intervalo preconfigurado (disponible en composer-1.7.1-airflow-1.10.2 y versiones posteriores ). Con esta configuración, también se puede reducir el tiempo de actualización del DAG.

Además de superar el intervalo de actualización del trabajador, el servidor web puede manejar correctamente los errores de carga de DAG en la mayoría de los casos. Los DAG que provocan la falla o la salida del servidor web pueden provocar errores en el navegador. Para obtener más información, consulta Solución de problemas de DAG.

Si continúas teniendo problemas con el servidor web debido al análisis de DAG, te recomendamos que uses la carga asíncrona de DAG.

Antes de comenzar

  • Debes tener una función que pueda ver los entornos de Cloud Composer. Para obtener más información, consulta Guía de control de acceso.

  • Durante la creación del entorno, Cloud Composer configura la URL del servidor web que ejecuta la IU de Airflow. La URL no se puede personalizar.

  • La función de control de acceso de la IU de Airflow (control de acceso basado en roles de Airflow) para la IU de Airflow es compatible con entornos de Cloud Composer que ejecutan la versión 1.13.4 de Composer o una posterior, la versión 1.10.10 de Airflow o una posterior, y Python 3.

Accede a la IU de Airflow

El servicio de servidor web de Airflow se implementa en el dominio appspot.com y proporciona acceso a la IU de Airflow. Cloud Composer 1 proporciona acceso a la interfaz según las identidades de los usuarios y las vinculaciones de políticas de IAM definidas para los usuarios. Cloud Composer 1 usa Identity-Aware Proxy para este fin.

Después de crear un nuevo entorno de Cloud Composer, la IU demora hasta 25 minutos en terminar el hosting y estar accesible.

Accede a la IU de Airflow desde la consola de Google Cloud

Para acceder a la IU de Airflow desde la consola de Google Cloud, sigue estos pasos:

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

    Ir a Entornos

  2. En la columna Servidor web de Airflow, sigue el vínculo de Airflow para tu entorno.

  3. Accede con una Cuenta de Google que tenga los permisos correspondientes.

Obtén la URL de la IU de Airflow con Google Cloud CLI

Puedes acceder a la IU de Airflow desde cualquier navegador web. Para obtener la URL de la IU de Airflow, ejecuta el siguiente comando en Google Cloud CLI:

gcloud composer environments describe ENVIRONMENT_NAME \
  --location LOCATION

Reemplaza lo siguiente:

  • ENVIRONMENT_NAME: Es el nombre de tu entorno.
  • LOCATION: Es la región en la que se encuentra el entorno.

El comando gcloud muestra las propiedades de un entorno de Cloud Composer, incluida la URL de la IU de Airflow. La URL aparece como airflowUri.

config:
  airflowUri: https://example-tp.appspot.com

Configura la carga asíncrona de DAG

Cuando la carga asíncrona del DAG está habilitada, el servidor web de Airflow crea un proceso nuevo. Este proceso carga DAG en segundo plano, envía DAG recién cargados en intervalos definidos por la opción dagbag_sync_interval y, luego, se suspende.

El proceso se activa periódicamente para volver a subir los DAG. El intervalo se define con la opción collect_dags_interval.

Para habilitar la carga asíncrona de DAG, haz lo siguiente:

  1. Inhabilita la serialización del DAG. La carga asíncrona de DAG no se puede usar con la serialización de DAG. El uso de las opciones de configuración de Airflow async_dagbag_loader y store_serialized_dags produce errores HTTP 503 e interrumpe tu entorno.

  2. Anula las siguientes opciones de configuración de Airflow:

    Sección Clave Valor Notas
    webserver async_dagbag_loader True El valor predeterminado es False.
    webserver collect_dags_interval 30 El valor predeterminado es 30. Usa un valor menor para realizar actualizaciones más rápidas.
    webserver dagbag_sync_interval 10 El valor predeterminado es 10.
    webserver worker_refresh_interval 3600 El valor predeterminado es 60. Con la carga asíncrona de DAG, puedes usar un intervalo de actualización mayor.

Reinicia el servidor web

Cuando depuras o solucionas problemas de entornos de Cloud Composer, puedes resolver algunos problemas si reinicias el servidor web de Airflow. Puedes reiniciar el servidor web con la API de restartWebServer o el comando restart-web-server en Google Cloud CLI:

gcloud beta composer environments restart-web-server ENVIRONMENT_NAME \
  --location=LOCATION

Reemplaza lo siguiente:

  • ENVIRONMENT_NAME: Es el nombre de tu entorno.
  • LOCATION: Es la región en la que se encuentra el entorno.

Configura el acceso a la red del servidor web

Los parámetros de acceso del servidor web de Airflow no dependen de la configuración de red de tu entorno. En cambio, configuras el acceso al servidor web por separado. Por ejemplo, un entorno de IP privada aún puede tener la IU de Airflow accesible desde Internet.

No es posible configurar los rangos de IP permitidos como direcciones IP privadas.

Console

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

    Ir a Entornos

  2. En la lista de entornos, haz clic en el nombre de tu entorno. Se abrirá la página Detalles del entorno.

  3. Ve a la pestaña Configuración del entorno.

  4. En la sección Configuración de red, busca el elemento Control de acceso del servidor web y haz clic en Editar.

  5. En el diálogo Control de acceso a la red del servidor web, haz lo siguiente:

    • Para proporcionar acceso al servidor web de Airflow desde todas las direcciones IP, selecciona Permitir acceso desde todas las direcciones IP.

    • Para restringir el acceso solo a rangos de IP específicos, selecciona Permitir el acceso solo desde direcciones IP específicas. En el campo Rango de IP, especifica un rango de IP en la notación CIDR. En el campo Descripción, especifica una descripción opcional para este rango. Si deseas especificar más de un rango, haz clic en Agregar rango de IP.

    • Para prohibir el acceso de todas las direcciones IP, selecciona Permitir el acceso solo desde direcciones IP específicas y haz clic en Borrar elemento junto a la entrada de rango vacía.

gcloud

Cuando actualizas un entorno, los siguientes argumentos controlan los parámetros de acceso del servidor web:

  • --web-server-allow-all proporciona acceso a Airflow desde todas las direcciones IP. Esta es la opción predeterminada.

  • --web-server-allow-ip restringe el acceso solo a rangos de IP de origen específicos. Para especificar varios rangos de IP, usa este argumento varias veces.

  • --web-server-deny-all prohíbe el acceso a todas las direcciones IP.

gcloud composer environments update ENVIRONMENT_NAME \
    --location LOCATION \
    --web-server-allow-ip ip_range=WS_IP_RANGE,description=WS_RANGE_DESCRIPTION

Reemplaza lo siguiente:

  • ENVIRONMENT_NAME: Es el nombre de tu entorno.
  • LOCATION: Es la región en la que se encuentra el entorno.
  • WS_IP_RANGE: Es el rango de IP, en la notación CIDR, que puede acceder a la IU de Airflow.
  • WS_RANGE_DESCRIPTION: Es la descripción del rango de IP.

Ejemplo:

gcloud composer environments update example-environment \
    --location us-central1 \
    --web-server-allow-ip ip_range=192.0.2.0/24,description="example range" \
    --web-server-allow-ip ip_range=192.0.4.0/24,description="example range 2"

API

  1. Crea una solicitud a la API de [environments.patch][api-patch].

  2. En esta solicitud, realiza lo siguiente:

    1. En el parámetro updateMask, especifica la máscara config.webServerNetworkAccessControl.

    2. En el cuerpo de la solicitud, especifica cómo se deben guardar los registros de tareas de Airflow:

      • Para proporcionar acceso a Airflow desde todas las direcciones IP, especifica un elemento config vacío (el elemento webServerNetworkAccessControl no debe estar presente).

      • Para restringir el acceso solo a rangos de IP específicos, especifica uno o más rangos en allowedIpRanges.

      • Para prohibir el acceso a todas las direcciones IP, especifica un elemento webServerNetworkAccessControl vacío. El elemento webServerNetworkAccessControl debe estar presente, pero no debe contener un elemento allowedIpRanges.

{
  "config": {
    "webServerNetworkAccessControl": {
      "allowedIpRanges": [
        {
          "value": "WS_IP_RANGE",
          "description": "WS_RANGE_DESCRIPTION"
        }
      ]
    }
  }
}

Reemplaza lo siguiente:

  • WS_IP_RANGE: Es el rango de IP, en la notación CIDR, que puede acceder a la IU de Airflow.
  • WS_RANGE_DESCRIPTION: Es la descripción del rango de IP.

Ejemplo:

// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.webServerNetworkAccessControl

{
  "config": {
    "webServerNetworkAccessControl": {
      "allowedIpRanges": [
        {
          "value": "192.0.2.0/24",
          "description": "example range"
        },
        {
          "value": "192.0.4.0/24",
          "description": "example range 2"
        }
      ]
    }
  }
}

Terraform

En el bloque allowed_ip_range, en web_server_network_access_control, especifica los rangos de IP que pueden acceder al servidor web.

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    web_server_network_access_control {

      allowed_ip_range {
        value = "WS_IP_RANGE"
        description = "WS_RANGE_DESCRIPTION"
      }

    }

  }
}

Reemplaza lo siguiente:

  • WS_IP_RANGE: Es el rango de IP, en la notación CIDR, que puede acceder a la IU de Airflow.
  • WS_RANGE_DESCRIPTION: Es la descripción del rango de IP.

Ejemplo:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {

    web_server_network_access_control {
      allowed_ip_range {
        value = "192.0.2.0/24"
        description = "example range"
      },
      allowed_ip_range {
        value = "192.0.4.0/24"
        description = "example range 2"
      }

    }
}

¿Qué sigue?