Airflow ウェブ インターフェース

Apache Airflow には、ワークフロー(DAG)の管理、Airflow 環境の管理、管理アクションの実行に使用できるウェブ インターフェースが含まれています。たとえば、ウェブ インターフェースを使用すると、DAG の進行状況の確認、新しいデータ接続の設定、以前の DAG 実行からのログの確認ができます。

Airflow ウェブサーバー

Cloud Composer 環境ごとに、Airflow ウェブ インターフェースを実行するウェブサーバーを持ちます。ウェブサーバーは環境の GKE クラスタとは別のもので、固定されたマシンタイプの App Engine インスタンス上で動作します。

ウェブサーバーは dags/ フォルダ内の DAG 定義ファイルを解析します。また、DAG をロードし、HTTP リクエストを処理するため、DAG のデータとリソースにアクセスできる必要があります。

ウェブサーバーは DAG を 60 秒ごとに更新します。これは、Cloud Composer のデフォルト worker_refresh_interval です。更新間隔内でウェブサーバーがすべての DAG を解析できない場合、ウェブサーバー エラーが発生することがあります。

DAG ファイルの数が多い場合や、DAG ファイルを読み込む際の作業負荷が少なくない場合は、DAG の読み込みに 60 秒を超える時間を要することがあります。DAG の読み込み時間に関係なくウェブサーバーがアクセス可能な状態を維持できるように、非同期 DAG 読み込みを構成して、事前構成された間隔で DAG の解析と読み込みをバックグラウンドで行うことができます(この機能は composer-1.7.1-airflow-1.10.2 以降のバージョンで利用可能)。この構成では、DAG 更新時間も短縮できます。

ワーカーの更新間隔の超過だけではなく、ほどんどの場合の DAG 読み込みの失敗に対しても、ウェブサーバーは適切に対処できます。DAG が原因でウェブサーバーがクラッシュする、または終了する場合は、ブラウザでエラーが返されることがあります。詳細については、DAG のトラブルシューティングをご覧ください。

DAG 解析によってウェブサーバーの問題が引き続き発生する場合は、非同期 DAG 読み込みを使用することをおすすめします。

ウェブサーバーの再起動(プレビュー版)

Cloud Composer 環境をデバッグまたはトラブルシューティングする場合、Airflow ウェブサーバーを再起動することで問題が解決する場合があります。restartWebServer API または restart-web-server gcloud コマンドを使用して、ウェブサーバーを再起動できます。

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

始める前に

  • Cloud Composer 環境で Airflow ウェブサーバーにアクセスするには、composer.environments.get 権限が必要です。詳細については、Cloud Composer のアクセス制御をご覧ください。

  • 環境の作成中に、Cloud Composer によって Airflow ウェブ インターフェースを実行するウェブサーバーの URL が構成されます。この URL はカスタマイズできません。

  • Airflow ウェブ インターフェースのロールベースのアクセス制御(RBAC)機能は、Composer バージョン 1.13.4 以降、Airflow バージョン 1.10.10 以降、Python 3 を実行している Cloud Composer 環境でサポートされています。

ウェブ インターフェースへのアクセス

Airflow ウェブサーバー サービスは appspot.com ドメインにデプロイされ、Airflow ウェブ インターフェースへのアクセスを可能にします。Identity-Aware Proxy によってユーザー ID に基づいたアクセス保護が提供され、インターフェースが保護されます。

新しい Cloud Composer 環境を作成してから、ウェブ インターフェースがホスティングを終了してアクセス可能になるまでに最大で 25 分間かかります。

Google Cloud Console を介したウェブ インターフェースへのアクセス

Google Cloud Console から Airflow ウェブ インターフェースにアクセスするには:

  1. [環境] ページを開いて、既存の Cloud Composer 環境を表示します。

    [環境] ページを開く

  2. Airflow webserver 列で、Airflow ウェブ インターフェースを表示する環境の新しいウィンドウ アイコンをクリックします。
  3. 適切な権限を持つ Google アカウントでログインします。

Airflow ウェブサーバーへのアクセスを制限する

Composer 環境では、Airflow ウェブサーバーへのアクセスを制限できます。

すべてのアクセスをブロックする、または特定の IPv4 または IPv6 の外部 IP 範囲からのアクセスを許可することができます。

現時点では、プライベート IP アドレスを使用しての許可された IP 範囲を構成することはできません。

gcloud コマンドライン ツールを使用したウェブ インターフェース URL の取得

任意のウェブブラウザから Airflow ウェブ インターフェースにアクセスできます。ウェブ インターフェースの URL を取得するには、次の gcloud コマンドを入力します。

gcloud composer environments describe ENVIRONMENT_NAME \
--location LOCATION

ここで

  • ENVIRONMENT_NAME は、環境の名前です。
  • LOCATION は、環境が配置される Compute Engine のリージョンです。

gcloud コマンドにより、ウェブ インターフェースの URL を含む Cloud Composer 環境のプロパティが表示されます。URL は、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)を使用して、ウェブサーバーは新しいプロセスを作成します。プロセスはバックグラウンドで 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 シリアル化機能を無効にする必要があります。