当前位置: 首页 > news >正文

java项目实现钉钉异常告警实时监控

最近有个小伙伴问我,我们的项目核心业务的地方总是有异常,虽然有打印日志,但不能立马通知我;所以今天我就教大家如何实现异常报警实时提醒

1.需要有钉钉

自己新建的企业用户
在这里插入图片描述

2.建一个群,需要有三人以上;点击机器人

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.自定义机器人里面设置key和秘钥

在这里插入图片描述
在这里插入图片描述

key

在这里插入图片描述
在这里插入图片描述

3.发送消息的java代码

@Slf4j
public class MessageWarningUtils {public static void sendMessage(String error, String token, String secretKey) {try {OapiRobotSendRequest request = new OapiRobotSendRequest();OapiRobotSendRequest.Markdown markdown = new OapiRobotSendRequest.Markdown();sendMarkdown(request, markdown, error);DingTalkClient client = new DefaultDingTalkClient(token + sign(secretKey));OapiRobotSendResponse response = client.execute(request);if (response != null && response.getErrcode() != 0) {throw new CustomException("系统触发钉钉流控!");}} catch (Exception e) {log.error("系统发送钉钉消息失败=", e);}}private static String sign(String dingTalkSecretKey) {try {Long timestamp = System.currentTimeMillis();String stringToSign = timestamp + "\n" + dingTalkSecretKey;Mac mac = Mac.getInstance("HmacSHA256");mac.init(new SecretKeySpec(dingTalkSecretKey.getBytes(StandardCharsets.UTF_8), "HmacSHA256"));byte[] signData = mac.doFinal(stringToSign.getBytes(StandardCharsets.UTF_8));String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8");return "&timestamp=" + timestamp + "&sign=" + sign;} catch (Exception e) {log.error("系统钉钉消息提醒签名异常=", e);}return "";}/*** 发送markdown文档格式*/public static void sendMarkdown(OapiRobotSendRequest request, OapiRobotSendRequest.Markdown markdown, String error) {request.setMsgtype("markdown");markdown.setTitle("平台告警");markdown.setText("### @所有人 \n" +"### **异常信息:** " + error + "\n\n");OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();at.setIsAtAll(false);List<String> mobiles = new ArrayList<>();mobiles.add("所有人");at.setAtUserIds(mobiles);request.setAt(at);request.setMarkdown(markdown);}
}

4.获取钉钉的key和签名

建机器人的时候,有截图 key和签名,放在你的项目配置文件里面就可以拿到了

@Component
public class DingDingConfig {@Resourceprivate Environment environment;public String getToken() {return environment.getProperty("dingding.warning.token");}public String getSecretKey() {return environment.getProperty("dingding.warning.secretKey");}public String getToken2() {return environment.getProperty("dingding.warning2.token");}public String getSecretKey2() {return environment.getProperty("dingding.warning2.secretKey");}
}

5.测试异常消息发送

@Resourceprivate DingDingConfig dingDingConfig;public static void main(String[] args) {try {throw new RuntimeException("我就故意报错");}catch (Exception e){MessageWarningUtils.sendMessage("应付账单下载异常=" + e, dingDingConfig.getToken(), dingDingConfig.getSecretKey());}}

dingDingConfig 有可能报错,你重新设置下就好了

6.结果

在这里插入图片描述

有问题,请留言讨论
项目发消息的过程中有可能会报IP白名单问题,大家可以去百度的钉钉的相关配置下,设置下就好了

相关文章:

  • Hadoop 性能优化高频面试题及答案
  • 软件设计之SSM(2)
  • 云原生周刊:Argo CD v2.13 发布候选版本丨2024.9.30
  • 超声波扫描仪存储芯片S3A1604V0M
  • 被Karpathy誉为“蕴藏着类似ChatGPT的机会的AI产品Notebook LM”,它到底做对了什么?
  • 二叉树相关oj题(Java)
  • 基于大数据的高校新生数据可视化分析系统
  • 供应SGM3204YN6G/TR圣邦微芯片
  • HTTP状态码全解
  • Squaretest单元测试辅助工具使用
  • Web和UE5像素流送、通信教程
  • 【计算机网络超强概念总结】第一章 概述
  • redisson使用笔记
  • Linux-L13-查看文件归属的用户
  • 中信银行西安分行开展“担当新使命 消保县域行”金融教育宣传活动
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • 2017-08-04 前端日报
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • eclipse的离线汉化
  • E-HPC支持多队列管理和自动伸缩
  • Flex布局到底解决了什么问题
  • HashMap剖析之内部结构
  • java小心机(3)| 浅析finalize()
  • leetcode388. Longest Absolute File Path
  • 翻译:Hystrix - How To Use
  • 复习Javascript专题(四):js中的深浅拷贝
  • 关于for循环的简单归纳
  • 记录一下第一次使用npm
  • 利用DataURL技术在网页上显示图片
  • 利用jquery编写加法运算验证码
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 三栏布局总结
  • 深入浏览器事件循环的本质
  • 使用 @font-face
  • 一道闭包题引发的思考
  • 转载:[译] 内容加速黑科技趣谈
  • hi-nginx-1.3.4编译安装
  • postgresql行列转换函数
  • 国内开源镜像站点
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #define与typedef区别
  • #include到底该写在哪
  • #Linux(make工具和makefile文件以及makefile语法)
  • #微信小程序:微信小程序常见的配置传值
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (C++17) optional的使用
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (poj1.2.1)1970(筛选法模拟)
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (六)c52学习之旅-独立按键
  • (六)Flink 窗口计算