我在Airflow中使用SlackAPIPostOperator
在任务失败时发送Slack消息。
我想知道是否有一种聪明的方法可以将失败任务的气流UI日志页面的链接添加到松弛消息中。
以下是我想要实现的示例:
当前消息是:
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)
答案 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版本开始可用。