SlackAPIPostOperator中的Airflow UI链接?

时间:2018-01-08 15:01:51

标签: slack airflow

我在Airflow中使用SlackAPIPostOperator在任务失败时发送Slack消息。 我想知道是否有一种聪明的方法可以将失败任务的气流UI日志页面的链接添加到松弛消息中。

以下是我想要实现的示例:

http://myserver-uw1.myaws.com:8080/admin/airflow/graph?execution_date=...&arrange=LR&root=&dag_id=MyDAG&_csrf_token=mytoken

当前消息是:

def slack_failed_task(context):
    failed_alert = SlackAPIPostOperator(
        task_id='slack_failed',
        channel="#mychannel",
        token="...",
        text=':red_circle: Failure on: ' + 
             str(context['dag']) +
             '\nRun ID: ' + str(context['run_id']) +
             '\nTask: ' + str(context['task_instance']))
    return failed_alert.execute(context=context)

2 个答案:

答案 0 :(得分:4)

您可以使用<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="form-check sociographic"> <label class="form-check-label" for='crime'> <input class="form-check-input" type="radio" name="crime" id="crime" value="option2"> Crime </label> </div>部分下的配置值base_url为UI构建网址,然后使用Slack的message format [webserver]链接。

<http://example.com|stuff>

答案 1 :(得分:0)

我们也可以使用log_url attribute in the Task Instance

def slack_failed_task(context):
    failed_alert = SlackAPIPostOperator(
        task_id='slack_failed',
        channel="#mychannel",
        token="...",
        text=':red_circle: Failure on: ' + 
             str(context['dag']) +
             '\nRun ID: ' + str(context['run_id']) +
             '\nTask: ' + str(context['task_instance']) + 
             '\nLogs: <{url}|to Airflow UI>'.format(url=context['task_instance'].log_url)
    )
    return failed_alert.execute(context=context)

我知道至少从1.10.4版本开始可用。