Dolphinscheduler任务失败-钉钉监控报警

文章介绍了如何创建并使用钉钉机器人来替代默认的调度器告警。首先,通过安装pymysql库连接到MySQL数据库,查询DolphinScheduler中状态为失败的任务实例。然后,利用Python发送消息到钉钉机器人的API,构建包含任务名称、失败时间和链接的告警信息。最后,将脚本集成到调度器或Linuxcronjob中,实现定期监控和告警。
摘要由CSDN通过智能技术生成

简介

调度器默认的告警不是挺好用所以自定义一个脚本报警。

创建一个钉钉机器人

如何设置钉钉机器人_性能测试-阿里云帮助中心

调度失败告警脚本

1.先安装pymysql。

pip install pymysql

2.具体脚本

#!/usr/bin/env python
# coding=utf-8
# -*- coding=utf-8
import pymysql  # 实现连接mysql
import requests
import json
import datetime
#要修改的钉钉webhook
token_dd = ''

mysql = pymysql.connect(
    host='localhost',  # 连接地址, 本地
    user='账号',    # 用户
    password='密码',  # 数据库密码,记得修改为自己本机的密码
    port=3306, # 端口,默认为3306
    database='dolphinscheduler' #这里就是dolphinscheduler对应的库
)
# 查询数据,t_ds_process_instance就是运行后实例,如果是6那么就代表失败,具体的状态可以去数据库进行查看这张表
find_fail_process_instance = 'select name,state,start_time from t_ds_process_instance where state=6 limit 10;'

# ======================主要是修改上面三个===================

date_str =  (datetime.datetime.now()+datetime.timedelta(days=0)).strftime("%Y-%m-%d")
def send_msg(token_dd, date_str,test_str, note_str, at_all=False):
    """
    通过钉钉机器人发送内容
    @param date_str:
    @return:
    """
    url = 'https://oapi.dingtalk.com/robot/send?access_token=' + token_dd
    headers = {'Content-Type': 'application/json;charset=utf-8'}
    content_str = '''{} 定时推送:\n'''.format(date_str)
    
    data = {
        "msgtype": "link",
        "link": {
            "title": content_str,
            "text": test_str+'\n告警 !', #这里有一个告警是因为在创建钉钉机器人的时候,设置了只有内容有告警的时候才能够发送成功,具体根据自己的情况来
            "picUrl": "https://img0.baidu.com/it/u=2230992780,1546219343&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",
            "messageUrl": "https://www.baidu.com" #点击以后跳转的地址
        }
    }
    res = requests.post(url, data=json.dumps(data), headers=headers)
    print(res.text)
    
    return res.text


db = mysql.cursor()


try:
    # 查找数据
    db.execute(find_fail_process_instance)
    # 获取查询的所有记录
    res = db.fetchall()
    # print(res)
    for item in res:
        #数据库查出来的数据由于是元组类型,所以得到值进行发送
        # print(item[0])
        # print(item[1])
        # print(item[2])
        text_str='''任务: \n{} \n在 {} 失败'''.format(item[0],item[2])
        send_msg(token_dd, date_str, text_str, True)
except Exception as e:
    print('操作失败',e)
# 游标关闭
db.close()
# 关闭连接
mysql.close()

3.然后测试脚本发送钉钉信息成功以后放在调度器上面去执行,就达到了监控的效果。

4.或者直接使用linux只带的调度。

crontab -e
#每分钟执行一次
* * * * * /home/bigdata/shell/warn/dolphinscheduler_warn.sh
#查看下是否修改成功了
crontab -l

钉钉发送样式参考

python操作钉钉机器人 ——学习来源:Datawhale自动化办公_︶ㄣ我18、O_o岁ㄜ的博客-CSDN博客_python 钉钉机器人

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

工作变成艺术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值