Невозможно получить уведомления о сбое, успехе и повторной попытке в GCP composer с помощью Sendgrid

Я хочу получать уведомление по электронной почте об успешном выполнении задачи, сбое и повторной попытке в GCP composer с использованием Sendgrid.

В настоящее время все задачи в моей группе DAG успешно выполняются. Я хочу получить уведомление в этом случае.

Кроме того, когда определенные задачи завершаются ошибкой или повторяются, я хочу получать и эти уведомления. Я выполнил следующие шаги и не получил никаких уведомлений, когда я принудительно завершил задачу.

  1. Создано окружение GCP Composer, добавлены переменные окружения.
SENDGRID_MAIL_FROM : [email protected]

SENDGRID_API_KEY : 
  1. Создан после DAG.
import json
from datetime import timedelta, datetime
from airflow import DAG
from airflow.contrib.operators.bigquery_operator import BigQueryOperator
from airflow.contrib.operators.bigquery_check_operator import BigQueryCheckOperator
from airflow.operators.email_operator import EmailOperator

default_args = {
    'owner': 'airflow',
    'depends_on_past': True,    
    'start_date': datetime(2020, 3, 30),
    'email': ['[email protected]'],
    'email_on_failure': True,
    'email_on_retry': True,
    'retries': 2,
    'retry_delay': timedelta(minutes=5),

}


schedule_interval = "05 23 * * *"


dag = DAG(
    'DAG_NAME', 
    default_args=default_args, 
    schedule_interval=schedule_interval
    )

# Config variables
BQ_CONN_ID = ""
BQ_PROJECT = ""
BQ_DATASET = ""

## Task 1
t1 = BigQueryCheckOperator(----)

## Task 2
t2 = BigQueryCheckOperator(----)

## Task 3
t3 = BigQueryOperator(----)

t4  = EmailOperator(
        task_id='send_email',
        to='[email protected]',
        subject='Airflow Alert',
        html_content=""" <h3>Email Test</h3> """,
        dag=dag

    )
# Setting up Dependencies
t1>>t2>>t3>>t4

Я что-нибудь упускаю? Подскажите пожалуйста, что нужно сделать, спасибо.


comment
Привет! Пожалуйста, укажите, какую версию Composer, Airflow и Sendgrid вы используете.   -  person Ines    schedule 02.04.2020


Ответы (1)


Во-первых, вам нужно проверить, какие версии Composer и Sendgrid вы используете.

Например, последняя версия Sendgrid, поддерживаемая airflow-1.10.3, - v5.6.0. Вы можете обратиться к setup.py воздушного потока. какие зависимости установлены для конкретной версии воздушного потока.

Я рекомендую вам проверить инструкции по настройке Sendgrid снова с Cloud Composer. Убедитесь в нескольких вещах:

  • Вы настраиваете переменные среды, как сказано в руководстве, чтобы настроить Sendgrid в качестве почтового сервера, вам необходимо получить свой SENDGRID_API_KEY (вы создали его с нужным разрешением? Как минимум, ключ должен иметь Mail send разрешения на отправку электронной почты) и SENDGRID_MAIL_FROM (правильная ли структура? noreply-composer@) в качестве переменных среды.
  • В вашем airflow.cfg файле проверьте, установлена ​​ли переменная email_backend для использования Sendgrid:
email_backend = airflow.contrib.utils.sendgrid.send_email
  • Попробуйте отправить тестовый DAG, как сказано в руководстве, например, вы можете использовать это:
from airflow import DAG
from airflow.operators.email_operator import EmailOperator
from airflow.operators.bash_operator import BashOperator
from airflow.utils.dates import days_ago

default_args = {
    'owner': 'name.surname',
    'start_date': days_ago(1),
    'email_on_failure': True,
    'email': ['[email protected]'],
}

dag = DAG(
    'mail-test',
    schedule_interval='@once',
    default_args=default_args,
)

send_mail = EmailOperator(
    task_id='sendmail',
    to='[email protected]',
    subject='TEST Mail from Cloud Composer',
    html_content='Mail Contents',
    dag=dag,
)

failed_bash = BashOperator(
    task_id='run_bash',
    bash_command='exit 1',
    dag=dag,
)

send_mail >> failed_bash

Кроме того, проверьте спам-фильтр в своем почтовом клиенте. Если это по-прежнему не удается, я бы начал подозревать, что правило брандмауэра (если вы их редактировали) может быть причиной проблемы.

Сообщите мне о результатах. Я надеюсь, что это помогает.

person Ines    schedule 02.04.2020
comment
Большое спасибо, это помогло. - person lucy; 09.04.2020