Невозможно получить уведомления о сбое, успешном завершении и повторных попытках в GCP composer с помощью Sendgrid - PullRequest
0 голосов
/ 02 апреля 2020

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

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

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

  1. Создана среда GCP Composer, добавлены переменные среды.
SENDGRID_MAIL_FROM : abc@gmail.com

SENDGRID_API_KEY : 
Создано после 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': ['abc@gmail.com'],
    '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='abc@gmail.com',
        subject='Airflow Alert',
        html_content=""" <h3>Email Test</h3> """,
        dag=dag

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

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

1 Ответ

0 голосов
/ 02 апреля 2020

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

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

Я рекомендую проверить инструкции для Настройка Sendgrid с облаком 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': ['name.surname@company.com'],
}

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

send_mail = EmailOperator(
    task_id='sendmail',
    to='name.surname@company.com',
    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

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

Дайте мне знать о результатах. Надеюсь, это поможет.

...