Projeto para monitoramento de execuções de DAGs com falhas no airflow
Para execução em ambiente próprio, ou em alguma ferramenta gerenciada que permita login por usuário e senha, será necessário alterar as seguintes informações antes de compilar o container:
AIRFLOW_URL="http://YOUR_AIRFLOW_URL" -> URL da tela inicial do Airflow
AIRFLOW_USERNAME="YOUR AIRFLOW USER" -> Usuário que é utilizado para fazer login no Airflow
AIRFLOW_PASSWORD="YOUR AIRFLOW PASSWORD" -> Senha do usuário que é utilizada para fazer login no Airflow
Para dar o build no container deverá executar o comando:
docker build -t airflow-monitor:latest --build-arg AIRFLOW_URL=YOUR-AIRFLOW-URL --build-arg AIRFLOW_USERNAME=YOUR-AIRFLOW-USERNAME --build-arg AIRFLOW_PASSWORD=YOUR-AIRFLOW-PASSWORD . --no-cache
Para execução no MWAA da AWS será necessário alterar as seguintes informações antes de compilar o container:
AWS_REGION="YOUR-REGION" -> Região em que está hospedado o MWAA
AWS_ACCESS_KEY_ID="YOUR-KEY-ID" -> Access Key ID do usuário programático que tem permissões de acesso ao airflow
AWS_SECRET_ACCESS_KEY="YOUR-SECRET-ACCESS-KEY" -> Secret Access Key do usuário programático que tem permissões de acesso ao airflow
AWS_AIRFLOW_NAME="YOUR AIRFLOW NAME ON MWAA" -> Nome do ambiente do Airflow configurado no MWAA
Para dar o build no container deverá executar o comando:
docker build -t airflow-monitor:latest --build-arg AWS_REGION=YOUR-REGION --build-arg AWS_ACCESS_KEY_ID=YOUR-KEY-ID --build-arg AWS_SECRET_ACCESS_KEY=YOUR-SECRET-KEY --build-arg AWS_AIRFLOW_NAME=YOUR-AIRFLOW-NAME --build-arg . --no-cache
Para a execução existem dois arquivos distintos:
airflow.py
airflowMWAA.py
Os dois scripts possuem exatamente a mesma forma de ser executado, alterando apenas a forma de realizar a autenticação, então pode-se executar os dois scripts da mesma forma.
O primeiro passo será de entrar no Container compilado:
docker run --rm -it --name=airflow_monitor --entrypoint bash airflow-monitor:latest
Uma vez no container poderá ser executado o script com seus parâmetros:
python3 airflow.py --help
usage: airflow.py [-h] [-d DATAFIM] [-q QTDDIAS] [-p PREFIX] [-s SUFFIX] [-v]
Monitoramento de dags com erros no airflow.
options:
-h, --help show this help message and exit
-d DATAFIM, --dataFim DATAFIM
Data da última execução a ser verificada. Formato: YYYY-MM-DDD. Default = hoje.
-q QTDDIAS, --qtdDias QTDDIAS
Quantidade de dias antes da data de fim a ser considerado para a análise. Default = 90
-p PREFIX, --prefix PREFIX
Prefixo que a DAG deverá ter no nome para entrar na análise.
-s SUFFIX, --suffix SUFFIX
Sufixo que a DAG deverá ter no nome para entrar na análise.
-v, --verbose O nível de verbose por padrão é logging.INFO, quando passado este argumento altera para logging.DEBUG
Para uma execução de teste, que irá retornar o log de execução dos últimos 10 dias, rodar da seguinte forma:
python3 airflow.py -q 10
Dentro do container executar os seguintes comandos:
# executar os testes
python3 -m unittest testAirflow.py
# adicionar a validação de cobertura de testes
coverage erase
coverage run testAirflow.py
coverage report -m