Airflow-Weboberfläche

Apache Airflow enthält eine Weboberfläche, über die Sie Workflows (DAGs) verwalten, die Airflow-Umgebung verwalten und administrative Aktionen durchführen können. Beispielsweise können Sie über die Weboberfläche den Fortschritt eines DAG prüfen, eine neue Datenverbindung einrichten oder Protokolle aus vorherigen DAG-Ausführungen prüfen.

Airflow-Webserver

Jede Cloud Composer-Umgebung verfügt über einen Webserver, auf dem die Airflow-Weboberfläche ausgeführt wird. Der Webserver ist vom GKE-Cluster der Umgebung getrennt und wird auf einer App Engine-Instanz mit einem festgelegten Maschinentyp ausgeführt.

Der Webserver parst die DAG-Definitionsdateien im Ordner dags/. Er muss die Möglichkeit haben, auf die Daten und Ressourcen eines DAG zuzugreifen, um den DAG laden und HTTP-Anfragen senden zu können.

Der Webserver aktualisiert die DAGs alle 60 Sekunden. Dies ist der Standardwert für worker_refresh_interval in Cloud Composer. Sollte der Webserver nicht alle DAGs innerhalb des Aktualisierungsintervalls parsen können, tritt eventuell ein Webserverfehler auf.

Wenn eine große Anzahl an DAG-Dateien oder eine komplexe Arbeitslast zum Laden der DAG-Dateien vorhanden ist, kann das Laden von DAGs mehr als 60 Sekunden dauern. Damit der Webserver unabhängig von der DAG-Ladezeit verfügbar bleibt, können Sie ein asynchrones Laden von DAGs konfigurieren, um DAGs im Hintergrund in einem vorkonfigurierten Intervall zu parsen und zu laden (in composer-1.7.1-airflow-1.10.2 und höheren Versionen verfügbar). Diese Konfiguration kann auch die DAG-Aktualisierungszeit reduzieren.

Mit Ausnahme einer Überschreitung des Worker-Aktualisierungsintervalls kann der Webserver die meisten DAG-Ladefehler problemlos bewältigen. Bei DAGs, die einen Absturz oder ein Schließen des Webservers verursachen, werden eventuell Fehler im Browser zurückgegeben. Weitere Informationen finden Sie unter Fehlerbehebung bei DAGs.

Wenn das Parsen von DAGs dauerhaft Webserverprobleme verursacht, empfehlen wir, DAGs asynchron zu laden.

Vorbereitung

  • Für das Zugreifen auf den Airflow-Webserver in der Cloud Composer-Umgebung ist die folgende Berechtigung erforderlich: composer.environments.get. Weitere Informationen finden Sie unter Cloud Composer-Zugriffssteuerung.

  • Während der Erstellung der Umgebung konfiguriert Cloud Composer die URL für den Webserver, auf dem die Airflow-Weboberfläche ausgeführt wird. Die URL kann nicht angepasst werden.

  • In Cloud Composer-Umgebungen mit Airflow 1.10 wird die Funktion für die rollenbasierte Zugriffssteuerung (Roles Based Access Control; RBAC) für die Airflow-Weboberfläche nicht unterstützt.

Weboberfläche aufrufen

Der Dienst für den Airflow-Webserver wird in der Domain appspot.com bereitgestellt und bietet Zugriff auf die Airflow-Weboberfläche. Identity-Aware Proxy schützt die Oberfläche und steuert den Zugriff anhand von Nutzeridentitäten.

Nach dem Erstellen einer neuen Cloud Composer-Umgebung dauert es bis zu 25 Minuten, bis die Weboberfläche das Hosting vollendet hat und der Zugriff darauf möglich ist.

Auf die Weboberfläche über die Google Cloud Console zugreifen

So greifen Sie über die Google Cloud Console auf die Airflow-Weboberfläche zu:

  1. Öffnen Sie die Seite Umgebungen, um die vorhandenen Cloud Composer-Umgebungen anzusehen.

    Seite "Umgebungen" öffnen

  2. Klicken Sie In der Spalte Airflow-Webserver auf das Symbol "Neues Fenster" für die Umgebung, deren Airflow-Weboberfläche Sie darstellen möchten.
  3. Melden Sie sich mit einem Google-Konto an, das über die entsprechenden Berechtigungen verfügt.

URL der Weboberfläche mit dem gcloud-Befehlszeilentool abrufen

Sie können über einen beliebigen Webbrowser auf die Airflow-Weboberfläche zugreifen. Zum Abrufen der URL für die Weboberfläche geben Sie diesen gcloud-Befehl ein:

gcloud composer environments describe ENVIRONMENT_NAME \
--location LOCATION

Dabei gilt:

  • ENVIRONMENT_NAME ist der Name der Umgebung.
  • LOCATION ist die Compute Engine-Region, in der sich die Umgebung befindet.

Der gcloud-Befehl zeigt die Attribute einer Cloud Composer-Umgebung an, einschließlich der URL für die Weboberfläche. Die URL ist als airflowUri aufgeführt.

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

Asynchrones Laden von DAGs konfigurieren

Beim asynchronen Laden von DAGs (webserver-async_dagbag_loader) erstellt der Webserver einen neuen Prozess. Dieser Prozess lädt DAGs im Hintergrund, sendet neu geladene DAGs (dagbag_sync_interval) und pausiert dann.

Der Prozess wird regelmäßig angestoßen, um DAGs neu zu laden (collect_dags_interval). Dafür ist composer-1.7.1-airflow-1.10.2 oder höher erforderlich.

Zum Konfigurieren des asynchronen Ladens von DAGs müssen Sie die folgenden Airflow-Konfigurationen überschreiben:

Abschnitt und Konfiguration Hinweise
webserver-async_dagbag_loader = True Die Standardeinstellung ist "False".
webserver-collect_dags_interval = 30 Der Standardwert ist 30. Verwenden Sie einen kleineren Wert für schnellere Aktualisierungen.
webserver-dagbag_sync_interval = 10 Der Standardwert ist 10.
webserver-worker_refresh_interval = 3600 Der Standardwert ist 60. Beim asynchronen Laden von DAGs können Sie ein größeres Aktualisierungsintervall verwenden.

Beachten Sie, dass das DAG-Serialisierungsfeature deaktiviert sein muss, wenn das asynchrone Laden von DAGs verwendet wird.