前言
🏃🏃🏃
本次分享 SpringBoot Admin - 应用程序监控预警(钉钉机器人)
概述
生产环境中微服务应用集群服务数量较大,为更快,更精确的在第一时间监控到服务健康状态。使用SpringBoot Admin提供的监控告警功能实现钉钉机器人预警通知。
在Springboot Admin中内置多种开箱即用的监控告警系统通知,例如Mail、Slack、Telegram、Hipchat等多种通知渠道。考虑到它所支持的大多是一些国外的主流工具,而目前实际工作场景中大多使用钉钉办公,故本次分享钉钉机器人预警通知。
快速开始
创建钉钉机器人
创建自定义机器人
-
复制 WebHook - token,完成创建
编码-自定义消息通知
编码 - 钉钉通知
public class DingDingNotifier extends AbstractStatusChangeNotifier { public DingDingNotifier(InstanceRepository repository) { super(repository); } @Override protected Mono<Void> doNotify(InstanceEvent event, Instance instance) { String serviceName = instance.getRegistration().getName(); String serviceUrl = instance.getRegistration().getServiceUrl(); String status = instance.getStatusInfo().getStatus(); Map<String, Object> details = instance.getStatusInfo().getDetails(); StringBuilder str = new StringBuilder(); str.append("监控报警 : 【" + serviceName + "】"); str.append("【服务地址】" + serviceUrl); str.append("【状态】" + status); str.append("【详情】" + JSONObject.toJSONString(details)); return Mono.fromRunnable(() -> { DingDingMessageUtil.sendTextMessage(str.toString()); }); } }
编码 - 钉钉消息
public class DingDingMessageUtil { public static String access_token = "TOKEN"; public static void sendTextMessage(String msg) { try { Message message = new Message(); message.setMsgtype("text"); message.setText(new MessageInfo(msg)); URL url = new URL("https://oapi.dingtalk.com/robot/send?access_token=" + access_token); // 建立 http 连接 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setDoOutput(true); conn.setDoInput(true); conn.setUseCaches(false); conn.setRequestMethod("POST"); conn.setRequestProperty("Charset", "UTF-8"); conn.setRequestProperty("Content-Type", "application/Json; charset=UTF-8"); conn.connect(); OutputStream out = conn.getOutputStream(); String textMessage = JSONObject.toJSONString(message); byte[] data = textMessage.getBytes(); out.write(data); out.flush(); out.close(); InputStream in = conn.getInputStream(); byte[] data1 = new byte[in.available()]; in.read(data1); } catch (Exception e) { e.printStackTrace(); } } } class Message { private String msgtype; private MessageInfo text; public String getMsgtype() { return msgtype; } public void setMsgtype(String msgtype) { this.msgtype = msgtype; } public MessageInfo getText() { return text; } public void setText(MessageInfo text) { this.text = text; } } class MessageInfo { private String content; public MessageInfo(String content) { this.content = content; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } }
编码 - Application 初始化钉钉通知
@EnableAdminServer @EnableDiscoveryClient @SpringBootApplication public class AdminApplication { public static void main(String[] args) { SpringApplication.run(AdminApplication.class, args); } @Bean public DingDingNotifier dingDingNotifier(InstanceRepository repository) { return new DingDingNotifier(repository); } }
成果验证
启动 SpringBoot Admin Server,启动关闭Client服务
结束语
- 以上就是 SpringBoot Admin - 钉钉预警的示例,另支持多种监控告警通知,例如 Mail 方式,可自行实践了解。
✔ END
© 🇹 🉐 🆙🆙🆙
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。