Auf die Airflow-Weboberfläche zugreifen

Managed Airflow (Gen 3) | Managed Airflow (Gen 2) | Managed Airflow (Legacy Gen 1)

Apache Airflow enthält eine Webbenutzeroberfläche namens Airflow-UI, über die Sie Airflow-DAGs verwalten, DAG-Ausführungsprotokolle ansehen, Airflow überwachen und administrative Aktionen ausführen können.

Airflow-Webserver

Jede Managed Airflow-Umgebung hat einen Webserver, auf dem die Airflow-UI ausgeführt wird. Der Webserver ist Teil der Managed Airflow-Umgebungsarchitektur.

Der Webserver parst die DAG-Definitionsdateien im dags/ Ordner. 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 Managed Airflow. 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.

Hinweis

  • Sie benötigen eine Rolle, die Managed Airflow-Umgebungen aufrufen kann. Weitere Informationen finden Sie unter Zugriffssteuerung.

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

  • Die Funktion Airflow-UI-Zugriffssteuerung (Airflow Role-Based Access Control) für die Airflow-UI wird für Managed Airflow-Umgebungen mit Composer-Version ab 1.13.4, Airflow-Version ab 1.10.10 und Python 3 unterstützt.

Auf die Airflow-UI zugreifen

Der Dienst für den Airflow-Webserver wird in der Domain appspot.com bereitgestellt und bietet Zugriff auf die Airflow-UI. Managed Airflow (Legacy Gen 1) bietet Zugriff auf die Benutzeroberfläche basierend auf Nutzeridentitäten und IAM-Richtlinienbindungen, die für Nutzer definiert sind. Managed Airflow (Legacy Gen 1) verwendet hierfür Identity-Aware Proxy.

Nach dem Erstellen einer neuen Managed Airflow-Umgebung, dauert es bis zu 25 Minuten, bis die UI das Hosting beendet hat und der Zugriff darauf möglich ist.

Über die Google Cloud console auf die Airflow-UI zugreifen

So greifen Sie über die Google Cloud console auf die Airflow-UI zu:

  1. Rufen Sie in der Google Cloud console die Umgebungen Seite auf.

    Zur Seite Umgebungen

  2. Klicken Sie in der Spalte Airflow-Webserver auf den Link Airflow für Ihre Umgebung.

  3. Melden Sie sich mit einem Google-Konto an, das über die entsprechenden Berechtigungen verfügt.

Airflow-UI-URL mit Google Cloud CLI abrufen

Sie können über einen beliebigen Webbrowser auf die Airflow-UI zugreifen. Führen Sie den folgenden Befehl in Google Cloud CLI aus, um die URL für die Airflow-UI abzurufen:

gcloud composer environments describe ENVIRONMENT_NAME \
  --location LOCATION

Ersetzen Sie Folgendes:

  • ENVIRONMENT_NAME: der Name Ihrer Umgebung
  • LOCATION: die Region, in der sich die Umgebung befindet

Der gcloud-Befehl zeigt die Attribute einer Managed Airflow-Umgebung an, einschließlich der URL für die Airflow-UI. Die URL ist als airflowUri aufgeführt.

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

Asynchrones Laden von DAGs konfigurieren

Wenn das asynchrone Laden von DAGs aktiviert ist, erstellt der Airflow-Webserver einen neuen Prozess. Dieser Prozess lädt DAGs im Hintergrund, sendet neu geladene DAGs in Intervallen, die mit der Option dagbag_sync_interval definiert sind, und pausiert dann.

Der Prozess wird regelmäßig angestoßen, um DAGs neu zu laden. Das Intervall wird durch die Option collect_dags_interval definiert.

So aktivieren Sie das asynchrone Laden von DAGs:

  1. DAG-Serialisierung deaktivieren. Das asynchrone Laden von DAGs kann nicht mit der DAG-Serialisierung verwendet werden. Bei Verwendung der Airflow-Konfigurationsoptionen async_dagbag_loader und store_serialized_dags werden HTTP-503-Fehler erzeugt und die Umgebung wird beeinträchtigt.

  2. Überschreiben Sie die folgenden Airflow-Konfigurationsoptionen:

    Bereich Schlüssel Wert Hinweise
    webserver async_dagbag_loader True Der Standardwert 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 längeres Aktualisierungsintervall verwenden.

Webserver neu starten

Bei dem Debugging oder der Fehlerbehebung in Managed Airflow-Umgebungen können einige Probleme möglicherweise durch einen Neustart des Airflow-Webservers behoben werden. Sie können den Web server mit der restartWebServer API oder dem restart-web-server Befehl in Google Cloud CLI neu starten:

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

Ersetzen Sie Folgendes:

  • ENVIRONMENT_NAME: der Name Ihrer Umgebung
  • LOCATION: die Region, in der sich die Umgebung befindet

Netzwerkzugriff für Webserver konfigurieren

Die Zugriffsparameter für den Airflow-Webserver hängen nicht von der Netzwerkkonfiguration Ihrer Umgebung ab. Stattdessen konfigurieren Sie den Webserverzugriff separat. Beispiel: In einer privaten IP-Umgebung kann die Airflow-UI weiterhin über das Internet zugänglich sein.

Es ist nicht möglich, die zulässigen IP-Bereiche als private IP-Adressen zu konfigurieren.

Console

  1. Rufen Sie in der Google Cloud console die Umgebungen Seite auf.

    Zur Seite Umgebungen

  2. Klicken Sie in der Liste der Umgebungen auf den Namen Ihrer Umgebung. Die Seite Umgebungsdetails wird geöffnet.

  3. Rufen Sie den Tab Umgebungskonfiguration auf.

  4. Suchen Sie im Bereich Netzwerkkonfiguration das Element Webserver-Zugriffssteuerung und klicken Sie auf Bearbeiten.

  5. Gehen Sie im Dialogfeld Webserver-Netzwerkzugriffssteuerung so vor:

    • Wenn Sie den Zugriff auf den Airflow-Webserver von allen IP-Adressen aus zulassen möchten, wählen Sie Zugriff über alle IP-Adressen zulassen aus.

    • Wenn Sie den Zugriff auf bestimmte IP-Bereiche beschränken möchten, wählen Sie Zugriff nur von bestimmten IP-Adressen zulassen aus. Geben Sie im Feld IP-Bereich einen IP-Bereich in der CIDR-Notation an. Geben Sie im Feld Beschreibung eine optionale Beschreibung für diesen Bereich an. Wenn Sie mehr als einen Bereich angeben möchten, klicken Sie auf IP-Bereich hinzufügen.

    • Wenn Sie den Zugriff für alle IP-Adressen verbieten möchten, wählen Sie Zugriff nur von bestimmten IP-Adressen zulassen aus und klicken Sie neben dem leeren Bereichseintrag auf Element löschen.

gcloud

Beim Aktualisieren einer Umgebung steuern die folgenden Argumente die Zugriffsparameter des Webservers:

  • --web-server-allow-all ermöglicht den Zugriff auf Airflow von allen IP-Adressen aus. Dies ist die Standardoption.

  • --update-web-server-allow-ip beschränkt den Zugriff auf bestimmte Quell-IP-Bereiche. Wenn Sie mehrere IP-Bereiche angeben möchten, verwenden Sie dieses Argument mehrmals.

  • --web-server-deny-all verbietet den Zugriff für alle IP-Adressen.

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

Ersetzen Sie Folgendes:

  • ENVIRONMENT_NAME: der Name Ihrer Umgebung
  • LOCATION: die Region, in der sich die Umgebung befindet
  • WS_IP_RANGE: der IP-Bereich (in CIDR-Notation), der auf die Airflow-UI zugreifen darf
  • WS_RANGE_DESCRIPTION: die Beschreibung des IP-Bereichs

Beispiel:

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

API

  1. Erstellen Sie eine [environments.patch][api-patch]-API-Anfrage.

  2. In dieser Anfrage:

    1. Geben Sie im Parameter updateMask die Maske config.webServerNetworkAccessControl an.

    2. Geben Sie im Anfragetext an, wie Airflow-Aufgabenprotokolle gespeichert werden müssen:

      • Wenn Sie den Zugriff auf Airflow von allen IP-Adressen aus zulassen möchten, geben Sie ein leeres config-Element an. Das Element webServerNetworkAccessControl darf nicht vorhanden sein.

      • Wenn Sie den Zugriff auf bestimmte IP-Bereiche beschränken möchten, geben Sie einen oder mehrere Bereiche in allowedIpRanges an.

      • Wenn Sie den Zugriff für alle IP-Adressen verbieten möchten, geben Sie ein leeres webServerNetworkAccessControl-Element an. Das Element webServerNetworkAccessControl muss vorhanden sein, darf aber kein allowedIpRanges-Element enthalten.

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

Ersetzen Sie Folgendes:

  • WS_IP_RANGE: der IP-Bereich (in CIDR-Notation), der auf die Airflow-UI zugreifen darf
  • WS_RANGE_DESCRIPTION: die Beschreibung des IP-Bereichs

Beispiel:

// 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

Geben Sie im Block allowed_ip_range in web_server_network_access_control IP-Bereiche an, die auf den Webserver zugreifen können.

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"
      }

    }

  }
}

Ersetzen Sie Folgendes:

  • WS_IP_RANGE: der IP-Bereich (in CIDR-Notation), der auf die Airflow-UI zugreifen darf
  • WS_RANGE_DESCRIPTION: die Beschreibung des IP-Bereichs

Beispiel:

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"
      }

    }
}

Nächste Schritte