Integrate Pagerduty On Airflow

200 Views Asked by At

i've been trying to send a notification from my airflow DAGs to Pagerduty, But it seems there's a missing code that triggers my DAGs to send notification to Pagerduty.

Here's my code:

import logging
from airflow import DAG
from datetime import datetime

from airflow.hooks.base_hook import BaseHook
from airflow.providers.pagerduty.hooks.pagerduty_events import PagerdutyEventsHook
from airflow.providers.pagerduty.hooks.pagerduty import PagerdutyHook

def python_error():
    y = 1/0

def task_fail_pager_alert(context):
    PAGER_CONN_ID = 'pagerduty_conns'
    pagerduty_key = BaseHook.get_connection(PAGER_CONN_ID).password
    pg_hook= PagerdutyHook(token=pagerduty_key, pagerduty_conn_id='pagerduty_conns')
    pg_hook.get_session()
    pg_hook.create_event(
        summary='Test event for pagerduty from sandbox',
        severity='critical',
        routing_key=token
    )

default_args = {
    'owner': 'yohanes',
    'on_failure_callback': task_fail_pager_alert
}

log = logging.getLogger(__name__)

try:
    with DAG(
        dag_id='pagerduty-test',
        default_args=default_args,
        schedule_interval=None,
        start_date=datetime(2023, 09, 20),
        tags=['pagerduty-test'],
        catchup=False
    ) as dag:
        test = PythonOperator(
            task_id="test-pager-duty",
            python_callable=python_error)

        test

except ImportError as e:
    log.warning("Could not import DAGs: %s", str(e))

My DAG resulting an error, but it doesn't trigger any response to pagerduty even after i define on_failure_callback to call pagerduty function. does anybody know where or what i'm missing in my code? thanks

0

There are 0 best solutions below