Milky's note

[Airflow] Gmail로 alert 메일 보내기(Email Operator 설정) 본문

DevOps/Airflow

[Airflow] Gmail로 alert 메일 보내기(Email Operator 설정)

밀뿌 2024. 11. 15. 22:33

 

Airflow Dag들이 실패하면 메일로 alert를 받아볼 수 있게 

Email Operator를 설정해주려고 한다! 

 

먼저 mail을 보낼 gmail 계정이 있어야 하기 때문에

없다면 먼저 google에 가입을 해준다.

 

 

1. Gmail의 IMAP 활성화

이제 구글에 로그인을 해서 IMAP를 켜줘야한다! 

[Gmail] -> [설정] -> 모든 설정 보기 클릭!

 

[전달 및 POP/IMAP] -> [IMAP 액세스]에서 

IMAP 사용을 체크 !!

 

 

2. SMTP 비밀번호 설정

이제 airflow config 파일에 넣어줄 smtp 비밀번호를 설정해준다.

smtp 비밀번호를 생성하기 위해선 먼저 2단계 인증이 설정되어야 한다.

 

그리고 앱 비밀번호를 만들어준다.

앱 비밀번호가 잘 안보였었는데 위에 검색창에서 검색했다.

 

앱 이름을 입력해주고 만들기를 클릭하면 다음처럼 16자리 앱 비밀번호가 생성된다!

 

이걸 잘 복사를 해놓는다.

 

 

3. Airflow config 파일 수정

위에서 생성한 smtp 정보를 airflow의 config 파일에 입력해준다.

airflow가 설치되어 있는 경로에 가서 아래와 같이 명령어를 입력해준다.

vi airflow.cfg

 

config 파일에  [smtp] 라는 항목이 보일 것 이다.

여기에서 아래와 같이 설정해준다.

smtp_host = smtp.gmail.com
smtp_starttls = True #default
smtp_ssl = False #default
smtp_user = 생성한 gmail
smtp_password = 발급 받은 16자리 패스워드(띄어쓰기 없이)
smtp_port = 587
smtp_mail_from = 생성한 gmail
smtp_timeout = 30
smtp_retry_limit = 5

 

 

config 파일을 수정해 준 뒤,

제대로 설정이 되게 airflow 서비스를 재기동 시켜준다.

 

 

그리고 airflow에서 일부러 오류를 내보았다 !!

import json
import logging
import requests
import pandas as pd
from datetime import datetime
from airflow import DAG
from airflow.operators.python import PythonOperator
from airflow.operators.email_operator import EmailOperator


logging.basicConfig(level=logging.DEBUG)


default_args = {
    'email_on_retry': False,
    'email_on_failure': True,
    'email' : ['sample@email.com']
}

with DAG(
    'email_test',
    default_args=default_args,
    schedule_interval='@once',
    start_date=pendulum.datetime(2024, 6, 1, tz="UTC"),
    tags=['email'],
    catchup=False
) as dag:

    #환율 구하는 API 호출
    def extract_currency(**kwargs):
	#코드 작성

    extract_task = PythonOperator(
        task_id='extract_currency',
        python_callable=extract_currency,
    )


    extract_task

 

오류를 만들어서 호출하였고 실행시켜보니까 

오류가 발생했다는 alert 메일이 잘 도착했다 !!

Comments