Airflow 网页界面

Apache Airflow 有一个网页界面,可用于管理工作流 (DAG)、管理 Airflow 环境以及执行管理操作。例如,您可以使用该网页界面来查看 DAG 的进度,设置新的数据连接,或查看来自先前 DAG 运行的日志。

Airflow Web 服务器

每个 Cloud Composer 环境都有一个 Web 服务器,用于运行 Airflow 网页界面。Web 服务器独立于您的环境的 GKE 集群,并且在采用固定机器类型的 App Engine 实例上运行。

Web 服务器会解析 dags/ 文件夹中的 DAG 定义文件,因此必须能够访问 DAG 的数据和资源才能加载 DAG 和处理 HTTP 请求。

Web 服务器会每 60 秒刷新一次 DAG,这是 Cloud Composer 中的默认 worker_refresh_interval。如果 Web 服务器无法在此刷新间隔内解析所有 DAG,则可能会发生 Web 服务器错误。

如果存在大量 DAG 文件,或加载 DAG 文件涉及重要工作负载,则 DAG 加载过程可能会超过 60 秒。为确保 Web 服务器无论 DAG 加载时间如何始终都可以访问,您可以配置异步 DAG 加载,以按预先配置的间隔在后台解析和加载 DAG(适用于 composer-1.7.1-airflow-1.10.2 及更高版本)。此配置还有助于减少 DAG 刷新时间。

除了超出工作器刷新间隔的情况外,Web 服务器在大多数情况下都能正常处理 DAG 加载故障。如果 Web 服务器因某些 DAG 而崩溃或退出,则浏览器可能返回错误。如需了解相关信息,请参阅排查 DAG 问题

如果由于 DAG 解析问题仍然存在 Web 服务器问题,建议您使用异步 DAG 加载。

准备工作

  • 如需访问 Cloud Composer 环境中的 Airflow Web 服务器,您必须具有以下权限:composer.environments.get。如需了解详情,请参阅 Cloud Composer 访问权限控制

  • 在环境创建期间,Cloud Composer 会为运行 Airflow 网页界面的 Web 服务器配置网址。该网址不可自定义。

  • 对于运行 Airflow 1.10 的 Cloud Composer 环境,Airflow 网页界面不支持基于角色的访问权限控制 (RBAC) 功能。

访问网页界面

Airflow Web 服务器服务会部署到 appspot.com 网域,并提供对 Airflow 网页界面的访问。该界面受 Identity-Aware Proxy 保护,因此可根据用户身份确保访问安全。

创建新的 Cloud Composer 环境后,该网页界面最长需要 25 分钟才能完成托管并可供访问。

通过 Google Cloud Console 访问网页界面

如需通过 Google Cloud Console 访问 Airflow 网页界面,请执行以下操作:

  1. 要查看现有的 Cloud Composer 环境,请打开环境页面。

    打开“环境”页面

  2. Airflow Web 服务器列中,点击要查看其 Airflow 网页界面的环境对应的新窗口图标。
  3. 使用具有相应权限的 Google 帐号登录。

通过 gcloud 命令行工具检索网页界面网址

您可以通过任何网络浏览器访问 Airflow 网页界面。如需获取该网页界面的网址,请输入以下 gcloud 命令:

gcloud composer environments describe ENVIRONMENT_NAME \
--location LOCATION

其中:

  • ENVIRONMENT_NAME 是环境的名称。
  • LOCATION 是环境所在的 Compute Engine 区域。

gcloud 命令显示了 Cloud Composer 环境的属性,包括该网页界面的网址。该网址被列为 airflowUri

airflowUri: https://uexamplebcd3fff-tp.appspot.com/
  dagGcsPrefix: gs://us-central1-example-environment-00a47695-bucket/dags
  gkeCluster: projects/example-project/zones/us-central1-a/clusters/us-central1-example-environment-00a47695-gke
  nodeConfig:
    diskSizeGb: 100
    location: projects/example-project/zones/us-central1-a
    machineType: projects/example-project/zones/us-central1-a/machineTypes/n1-standard-1
    network: projects/example-project/global/networks/default
    oauthScopes:
    - https://www.googleapis.com/auth/cloud-platform
    serviceAccount: N13597NNN465-compute@developer.gserviceaccount.com
  nodeCount: 3
  softwareConfig:
    imageVersion: composer-0.5.1-airflow-1.9.0
createTime: '2018-05-19T02:13:36.749Z'
name: projects/example-project/locations/us-central1/environments/example-environment
state: RUNNING
updateTime: '2018-05-19T02:30:21.387Z'
uuid: 66bd6a28-5b48-4da3-a0aa-898199b569da

配置异步 DAG 加载

使用异步 DAG 加载 (webserver-async_dagbag_loader) 时,Web 服务器会创建一个新进程。该进程会在后台加载 DAG、发送新加载的 DAG (dagbag_sync_interval),然后进入睡眠状态。

系统会定期唤醒该进程以重新加载 DAG (collect_dags_interval)。请务必使用 composer-1.7.1-airflow-1.10.2 或更高版本。

如需配置异步 DAG 加载,请替换以下 Airflow 配置

节和配置 备注
webserver-async_dagbag_loader = True 默认值为 False。
webserver-collect_dags_interval = 30 默认值为 30。如需加快刷新速度,请使用较小的值。
webserver-dagbag_sync_interval = 10 默认值为 10。
webserver-worker_refresh_interval = 3600 默认值为 60。使用异步 DAG 加载时,您可以使用较长的刷新间隔。

请注意,使用异步 DAG 加载时,必须停用 DAG 序列化功能。