Aceda à interface Web do Airflow

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

O Apache Airflow inclui uma interface do utilizador Web denominada IU do Airflow, que pode usar para gerir DAGs do Airflow, ver registos de execução de DAGs, monitorizar o Airflow e realizar ações administrativas.

Acerca do servidor Web do Airflow

Cada ambiente do Cloud Composer tem um servidor Web que executa a IU do Airflow. O servidor Web faz parte da arquitetura do ambiente do Cloud Composer.

O servidor Web analisa os ficheiros de definição de DAG na pasta dags/ e tem de conseguir aceder aos dados e aos recursos de um DAG para carregar o DAG e processar pedidos HTTP.

O servidor Web atualiza os DAGs a cada 60 segundos, que é o valor predefinido worker_refresh_interval no Cloud Composer. Pode ocorrer um erro do servidor Web se o servidor Web não conseguir analisar todos os DAGs dentro do intervalo de atualização.

O carregamento de DAGs pode demorar mais de 60 segundos se houver um grande número de ficheiros DAG ou uma carga de trabalho não trivial para carregar os ficheiros DAG. Para garantir que o servidor Web permanece acessível independentemente do tempo de carregamento do DAG, pode configurar o carregamento assíncrono do DAG para analisar e carregar DAGs em segundo plano a um intervalo pré-configurado (disponível na versão composer-1.7.1-airflow-1.10.2 e posteriores). Esta configuração também pode reduzir o tempo de atualização do DAG.

Além de exceder o intervalo de atualização do worker, o servidor Web pode processar normalmente as falhas de carregamento do DAG na maioria dos casos. Os DAGs que fazem com que o servidor Web falhe ou termine podem fazer com que sejam devolvidos erros no navegador. Para mais informações, consulte o artigo Resolução de problemas de DAGs.

Se continuar a ter problemas com o servidor Web devido à análise DAG, recomendamos que use o carregamento DAG assíncrono.

Antes de começar

  • Tem de ter uma função que possa ver ambientes do Cloud Composer. Para mais informações, consulte o artigo Controlo de acesso.

  • Durante a criação do ambiente, o Cloud Composer configura o URL do servidor Web que executa a IU do Airflow. O URL não é personalizável.

  • A funcionalidade Controlo de acesso da IU do Airflow (controlo de acesso baseado em funções do Airflow) para a IU do Airflow é suportada para ambientes do Cloud Composer que executam a versão 1.13.4 ou posterior do Composer, a versão 1.10.10 ou posterior do Airflow e o Python 3.

Aceda à IU do Airflow

O serviço do servidor Web do Airflow é implementado no domínio appspot.com e fornece acesso à IU do Airflow. O Cloud Composer 1 fornece acesso à interface com base nas identidades dos utilizadores e nas associações de políticas do IAM definidas para os utilizadores. O Cloud Composer 1 usa o Identity-Aware Proxy para este fim.

Depois de criar um novo ambiente do Cloud Composer, a IU demora até 25 minutos a concluir a alojamento e a ficar acessível.

Aceda à IU do Airflow a partir da Google Cloud consola

Para aceder à IU do Airflow a partir da Google Cloud consola:

  1. Na Google Cloud consola, aceda à página Ambientes.

    Aceder a Ambientes

  2. Na coluna Servidor Web do Airflow, siga o link do Airflow para o seu ambiente.

  3. Inicie sessão com uma Conta Google que tenha as autorizações adequadas.

Obtenha o URL da IU do Airflow com a CLI Google Cloud

Pode aceder à IU do Airflow a partir de qualquer navegador de Internet. Para obter o URL da IU do Airflow, execute o seguinte comando na CLI Google Cloud:

gcloud composer environments describe ENVIRONMENT_NAME \
  --location LOCATION

Substitua o seguinte:

  • ENVIRONMENT_NAME: o nome do seu ambiente.
  • LOCATION: a região onde o ambiente está localizado.

O comando gcloud mostra as propriedades de um ambiente do Cloud Composer, incluindo o URL da IU do Airflow. O URL está listado como airflowUri.

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

Configure o carregamento assíncrono de DAGs

Quando o carregamento DAG assíncrono está ativado, o servidor Web do Airflow cria um novo processo. Este processo carrega DAGs em segundo plano, envia DAGs carregados recentemente em intervalos definidos pela opção dagbag_sync_interval e, em seguida, entra em suspensão.

O processo é ativado periodicamente para recarregar os DAGs. O intervalo é definido pela opção collect_dags_interval.

Para ativar o carregamento assíncrono de DAGs:

  1. Desative a serialização DAG. Não é possível usar o carregamento assíncrono de DAGs com a serialização de DAGs. A utilização das opções de configuração do async_dagbag_loader e do store_serialized_dags Airflow produz erros HTTP 503 e danifica o seu ambiente.

  2. Substitua as seguintes opções de configuração do Airflow:

    Secção Chave Valor Notas
    webserver async_dagbag_loader True A predefinição é False.
    webserver collect_dags_interval 30 A predefinição é 30. Use um valor mais pequeno para atualizações mais rápidas.
    webserver dagbag_sync_interval 10 A predefinição é 10.
    webserver worker_refresh_interval 3600 A predefinição é 60. Com o carregamento assíncrono de DAGs, pode usar um intervalo de atualização mais longo.

Reinicie o servidor Web

Ao depurar ou resolver problemas de ambientes do Cloud Composer, alguns problemas podem ser resolvidos reiniciando o servidor Web do Airflow. Pode reiniciar o servidor Web através da API restartWebServer ou do comando restart-web-server na CLI do Google Cloud:

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

Substitua o seguinte:

  • ENVIRONMENT_NAME: o nome do seu ambiente.
  • LOCATION: a região onde o ambiente está localizado.

Configure o acesso à rede do servidor Web

Os parâmetros de acesso do servidor Web do Airflow não dependem da configuração de rede do seu ambiente. Em alternativa, configura o acesso ao servidor Web separadamente. Por exemplo, um ambiente de IP privado pode continuar a ter a IU do Airflow acessível a partir da Internet.

Não é possível configurar os intervalos de IP permitidos para serem endereços IP privados.

Consola

  1. Na Google Cloud consola, aceda à página Ambientes.

    Aceder a Ambientes

  2. Na lista de ambientes, clique no nome do seu ambiente. É apresentada a página Detalhes do ambiente.

  3. Aceda ao separador Configuração do ambiente.

  4. Na secção Configuração da rede, encontre o item Controlo de acesso ao servidor Web e clique em Editar.

  5. Na caixa de diálogo Controlo de acesso à rede do servidor Web:

    • Para conceder acesso ao servidor Web do Airflow a partir de todos os endereços IP, selecione Permitir acesso a partir de todos os endereços IP.

    • Para restringir o acesso apenas a intervalos de IP específicos, selecione Permitir acesso apenas a partir de endereços IP específicos. No campo Intervalo de IP, especifique um intervalo de IP na notação CIDR. No campo Descrição, especifique uma descrição opcional para este intervalo. Se quiser especificar mais do que um intervalo, clique em Adicionar intervalo de IP.

    • Para proibir o acesso a todos os endereços IP, selecione Permitir acesso apenas a endereços IP específicos e clique em Eliminar item junto à entrada de intervalo vazia.

gcloud

Quando atualiza um ambiente, os seguintes argumentos controlam os parâmetros de acesso do servidor Web:

  • O --web-server-allow-all fornece acesso ao Airflow a partir de todos os endereços IP. Esta é a opção predefinida.

  • O --update-web-server-allow-ip restringe o acesso apenas a intervalos de IP de origem específicos. Para especificar vários intervalos de IP, use este argumento várias vezes.

  • --web-server-deny-all proíbe o acesso para todos os endereços IP.

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

Substitua o seguinte:

  • ENVIRONMENT_NAME: o nome do seu ambiente.
  • LOCATION: a região onde o ambiente está localizado.
  • WS_IP_RANGE: o intervalo de IP, na notação CIDR, que pode aceder à IU do Airflow.
  • WS_RANGE_DESCRIPTION: a descrição do intervalo de IP.

Exemplo:

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. Construa um pedido de API [environments.patch][api-patch].

  2. Neste pedido:

    1. No parâmetro updateMask, especifique a máscara config.webServerNetworkAccessControl.

    2. No corpo do pedido, especifique como os registos de tarefas do Airflow têm de ser guardados:

      • Para conceder acesso ao Airflow a partir de todos os endereços IP, especifique um elemento config vazio (o elemento webServerNetworkAccessControl não pode estar presente).

      • Para restringir o acesso apenas a intervalos de IPs específicos, especifique um ou mais intervalos em allowedIpRanges.

      • Para proibir o acesso a todos os endereços IP, especifique um elemento webServerNetworkAccessControl vazio. O elemento webServerNetworkAccessControl tem de estar presente, mas não pode conter um elemento allowedIpRanges.

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

Substitua o seguinte:

  • WS_IP_RANGE: o intervalo de IP, na notação CIDR, que pode aceder à IU do Airflow.
  • WS_RANGE_DESCRIPTION: a descrição do intervalo de IP.

Exemplo:

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

No bloco allowed_ip_range, em web_server_network_access_control especifique os intervalos de IP que podem aceder ao 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"
      }

    }

  }
}

Substitua o seguinte:

  • WS_IP_RANGE: o intervalo de IP, na notação CIDR, que pode aceder à IU do Airflow.
  • WS_RANGE_DESCRIPTION: a descrição do intervalo de IP.

Exemplo:

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

    }
}

O que se segue?