当前位置: 首页 > 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白名单问题,大家可以去百度的钉钉的相关配置下,设置下就好了

http://www.lryc.cn/news/450191.html

相关文章:

  • Spring Boot应用:电子商务平台开发
  • 怎么在Vue3项目中引入Vant组件库并使用?
  • springboot中有哪些方式可以解决跨域问题
  • Temporal Dynamic Quantization for Diffusion Models阅读
  • 828华为云征文|华为云Flexus X实例性能实测:速度与稳定性的完美结合
  • 【PyTorch】图像分割
  • 如何快速建立自己的异地互联的远程视频监控系统,通过web浏览器可以直接查看公网上的监控视频(上)
  • 实验2思科网院项目2.7.2-packet-tracer---configure-single-area-ospfv2---实践练习
  • Nginx实战经验分享:从小白到专家的成长历程!
  • 从画质设置看游戏引擎(其一)
  • #git 问题failed to resolve head as a valid ref
  • YOLOv11,地瓜RDK X5开发板,TROS端到端140FPS!
  • Python精选200Tips:181-182
  • SpringCloud 配置 feign.hystrix.enabled: true 不生效
  • 9.24-k8s服务发布
  • UI设计师面试整理-作品集展示
  • CMU 10423 Generative AI:lec10(few-shot、提示工程、上下文学习)
  • 做数据抓取工作要如何选择ip池
  • 防止电脑电池老化,禁止usb或者ac接口调试时充电
  • 智权半导体/SmartDV力助高速发展的中国RISC-V CPU IP厂商走上高质量发展之道
  • 利用vue-capper封装一个可以函数式调用图片裁剪组件
  • 在系统开发中提升 Excel 数据导出一致性与可维护性的统一规范与最佳实践
  • SpringAOP学习
  • 智能网联汽车飞速发展,安全危机竟如影随形,如何破局?
  • Android常用C++特性之std::function
  • 人工智能与机器学习原理精解【27】
  • XXL-JOB在SpringBoot中的集成
  • 前端工程规范-3:CSS规范(Stylelint)
  • Qt系列-1.Qt安装
  • 《自控原理》最小相位系统