首页 > 编程语言 >钉钉机器人监控项目异常_JavaWeb实现

钉钉机器人监控项目异常_JavaWeb实现

时间:2023-08-18 13:35:46浏览次数:41  
标签:OapiRobotSendRequest String EmergencyException 机器人 监控 developer 异常 public JavaWe

在prod环境,项目所触发的运行时异常,developer往往无法第一时间得知讯息(在没有项目监控的前提下),为了解决这一问题,可以利用钉钉机器人监控项目异常,实时通知/警报给developer。

1> 自定义紧急异常EmergencyException

2> 在重要业务中产生的异常转换为此异常

3> 在全局异常捕获,针对此异常做特殊处理(发送消息至钉钉群)

在pom.xml引入依赖

    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>alibaba-dingtalk-service-sdk</artifactId>
        <version>2.0.0</version>
    </dependency>

自定义异常

/**
 * For DingTalk warning
 */
public class EmergencyException extends RuntimeException{

    @Getter
    private final String developer;

    public EmergencyException(String developer){
        super();
        this.developer = developer;
    }

    public EmergencyException(String msg, String developer){
        super(msg);
        this.developer = developer;
    }

    public EmergencyException(String msg, Throwable cause, String developer){
        super(msg, cause);
        this.developer = developer;
    }

    public EmergencyException(Throwable cause, String developer){
        super(cause);
        this.developer = developer;
    }
}

业务程序中使用

    public void dingTalk() {
        try {
            int a = 1;
            int b = 0;
            int c = a / b;
            log.info("c = {}", c);
        } catch (Exception e) {
            throw new EmergencyException(e, "152xxxx1282");
        }
    }

 异常警报器

@Component
@Slf4j
public class ExceptionAlarm {

    private ExceptionAlarm() {
    }

    /**
     * 通知开发人员
     */
    public static void noticeDeveloper(String message, String developer) {
        try {
            // 1-初始化API调用Client
            DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/robot/send?access_token=xxxx");
            // 2-初始化请求参数
            OapiRobotSendRequest req = new OapiRobotSendRequest();
            // 2-1 设置消息类型
            req.setMsgtype("text");
            // 2-2 设置消息@人,developer即对应开发者手机号
            OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();
            at.setAtMobiles(List.of(developer));
            req.setAt(at);
            // 2-3 设置消息内容(必须匹配关键词),工作中这里就对应error日志
            OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();
            text.setContent(message);
            req.setText(text);
            // 3 消息发送
            OapiRobotSendResponse rsp = client.execute(req, "");
            log.info("钉钉消息发送成功:{}", rsp.getParams().get("text"));
        } catch (ApiException e) {
            log.error("钉钉消息发送失败:{}", e.getMessage());
        }
    }

}

DefaultDingTalkClient构造器中的入参来源

全局异常捕获

    @ExceptionHandler(value = EmergencyException.class)
    public ResponseEntity<String> catchException(EmergencyException e) {
        // 记录日志
        // 通知运维
        // 通知开发
        ExceptionAlarm.noticeDeveloper(e.getMessage(), e.getDeveloper());
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("系统异常,已通知开发人员");
    }

演示效果

标签:OapiRobotSendRequest,String,EmergencyException,机器人,监控,developer,异常,public,JavaWe
From: https://www.cnblogs.com/ashet/p/17640236.html

相关文章

  • Linux 监控服务 audit的安装与使用
    1、安装一般centos会默认安装,可直接使用,没安装可以yum安装一下yuminstallaudit2、启动方式:systemctlstartauditd或serviceauditd.servicestart如果启动失败了,audit看一下状态systemctlstatusauditd可能是没装audit,可以查一下yumlistinstalled|grepaudit或......
  • Snapchat的AI机器人拥有自我意识,把用户吓坏了!
    您的关注是对我最大的支持......
  • 使用GEWE框架完成微信机器人的开发 (登录模块)
    友情链接 geweapi.com点击即可访问  创建新设备简要描述:微信首次登录时需要先调用本接口创建设备,后续再次登录则直接使用之前创建的设备ID调用获取登录二维码接口登录即可。同一个号避免频繁创建新设备登陆,容易触发风控请求URL:http://域名地址/api/login/createapp请求方式:POS......
  • 虹科干货|一份选择微服务监控工具的指北
    毋庸置疑,监控是管理任何微服务架构的一个关键方面。但是如何为业务选择最佳的微服务监控工具呢?有哪些微服务监控工具?这些工具有什么功能?这里一份参考指北供你参阅。监控您的期望监控哪些内容?在选择工具之前,请考虑一下您购买工具的动机。您的团队应该讨论“我们试图解决或预防哪些问......
  • 虹科干货|一份选择微服务监控工具的指北
    毋庸置疑,监控是管理任何微服务架构的一个关键方面。但是如何为业务选择最佳的微服务监控工具呢?有哪些微服务监控工具?这些工具有什么功能?这里一份参考指北供你参阅。监控您的期望监控哪些内容?在选择工具之前,请考虑一下您购买工具的动机。您的团队应该讨论“我们试图解决或预防......
  • python rasa聊天机器人教程五:经典事例查询天气
    从用户输入的消息中提取城市信息然后查询天气信息1.培训数据在data/nlu.yml文件中,添加意图和实体的例子:nlu:-intent:ask_weatherexamples:|-今天[北京](city)的天气怎么样?-[上海](city)明天会下雨吗?-告诉我[广州](city)的天气-[深圳](cit......
  • 路径规划算法:基于郊狼算法的机器人路径规划算法- 附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • 老杜 JavaWeb 讲解(二十一)——通过银行账户转账业务讲解MVC架构
    老杜-通过银行账户转账业务讲解MVC架构老杜-银行账户转账(mvc001)这个项目将层层迭代,最终成为MVC架构的项目。老杜第一次写代码并没有使用JDBC的封装类,但大差不差,这里即使用了之前的DBUtil.java,代码依然很杂乱。建立数据库数据库名:mvc字符集:utf8mb4排序规则:utf8mb4_unicod......
  • Python小项目:利用tkinter与图灵机器人制作智能聊天系统
    1前言在本项目中,我们将探索如何使用Python的tkinter库以及图灵机器人API来构建一个智能聊天系统。本项目的初衷是通过实际操作,结合GUI编程和API调用,展示如何创建一个有趣且实用的小应用。我们将借助tkinter创建一个类似QQ聊天框的界面,并使用图灵机器人的API来实现自动化的智能聊......
  • python rasa聊天机器人教程四:action查询今天是星期几
    1.修改nlm.yml添加意图-intent:ask_dayexamples:|-今天是星期几?-今天星期几?-现在是星期几?2.修改domain.ymlintents里面增加intents:-ask_day actions里面增加actions:-action_get_day 3.修改rules.yml-rule:respondtoday......