监控告警:钉钉告警 【钉钉机器人发送消息,集成SpringBoot】

本文介绍了如何通过SpringBoot应用实现钉钉告警功能,详细阐述了创建钉钉群、添加群机器人以及设置安全策略的步骤。在Java实现部分,展示了如何计算签名、构造请求并发送消息到钉钉群聊,确保消息通知的安全性和准确性。
摘要由CSDN通过智能技术生成

监控告警:钉钉告警 【钉钉机器人发送消息,集成SpringBoot】

实现步骤

钉钉开发平台-自定义机器人接入文档:https://open.dingtalk.com/document/group/custom-robot-access

通过调用Webhook地址可将告警消息发送到群聊里来实现消息通知的功能

1、创建钉钉群
2、添加群机器人

注意:选择其中一项安全设置,可加强安全性,防止Webhook地址泄密被乱发消息

3、 创建成功,复制Webhook地址

注意:请保管好此Webhook 地址,不要公布在外部网站上,泄露后有安全风险。

设计与实现

前端页面设计

java实现

 public static void main(String[] args) {
        try {
            //注意:添加机器人时安全设置选择“加签”时,需要计算签名,并把timestamp和第一步得到的签名值拼接到URL中
            Long timestamp = System.currentTimeMillis();
             //加签一栏下面显示的SEC开头的字符串。
            String secret = "SEC4202dae12290ae7137ef25xxxxxxxxxxxxxxxxxxx";
            String sign = getSign(timestamp,secret);
            //钉钉机器人地址(配置机器人的webhook)
            String dingUrl = "https://oapi.dingtalk.com/robot/send?access_token=b4bbf11c9bfc63936d625xxxxxxxxxxxxxxxxxxx&timestamp="+timestamp+"&sign="+sign;

            //注意:isAtAll【通知所有人】和 mobileList【通知具体人的手机号码列表】 不能同时生效
            //是否通知所有人
            boolean isAtAll = false;
            //通知具体人的手机号码列表
            List mobileList = Lists.newArrayList();
            mobileList.add("153xxxxxxx");
            mobileList.add("1500xxxxxx");

            //钉钉机器人消息内容
            // 注意:添加机器人时安全设置选择的是自定义关键词时,发送内容要包含设置的关键字
            String content = "ipsec业务告警:哈哈,你好!,这是测试机器人消息  啦啦啦啦啦了 使用签名";
            //组装请求内容
            String reqStr = buildReqStr(content, isAtAll, mobileList);
            RestTemplate restTemplate = new RestTemplate();
            HttpHeaders headers = new HttpHeaders();
            headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
            HttpEntity request = new HttpEntity<>(reqStr, headers);
            ResponseEntity postForEntity = restTemplate.postForEntity(dingUrl, request, String.class);
            String body = String.valueOf(postForEntity.getBody());
            System.out.println(body);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    //** 组装请求报文 *//*
    private static String buildReqStr(String content, boolean isAtAll, List mobileList) {
        //消息内容
        Map contentMap = Maps.newHashMap();
        contentMap.put("content", content);
        //通知人
        Map atMap = Maps.newHashMap();
        //1.是否通知所有人
        atMap.put("isAtAll", isAtAll);
        //2.通知具体人的手机号码列表
        atMap.put("atMobiles", mobileList);
        Map reqMap = Maps.newHashMap();
        reqMap.put("msgtype", "text");
        reqMap.put("text", contentMap);
        reqMap.put("at", atMap);
        return JsonUtil.toStr(reqMap);
    }

    /**计算签名**/
    public static String getSign(Long timestamp, String secret) throws Exception{
        String stringToSign = timestamp + "\n" + secret;
        Mac mac = Mac.getInstance("HmacSHA256");
        mac.init(new SecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA256"));
        byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8"));
        String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)),"UTF-8");
        System.out.println(sign);
        return sign;
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是Shell脚本+钉钉机器人实现服务及服务器监控告警的步骤: 1. 创建一个Shell脚本,用于监控服务器或服务的运行状态,比如检查CPU、内存、硬盘使用情况、网络连接等。 2. 在Shell脚本中,使用curl命令调用钉钉机器人接口,将告警信息发送到指定的钉钉群中。比如: ``` #!/bin/bash # 获取CPU使用率 cpu_usage=$(top -b -n1 | grep "Cpu(s)" | awk '{print $2+$4}') # 获取内存使用率 mem_usage=$(free | awk '/Mem/{printf("%.2f"), $3/$2*100}') # 获取硬盘使用率 disk_usage=$(df -h | awk '$NF=="/"{printf "%s", $5}') # 获取网络连接数 net_conn=$(netstat -an | grep ESTABLISHED | wc -l) # 配置钉钉机器人URL和access_token url="https://oapi.dingtalk.com/robot/send?access_token=your_access_token" # 组装告警消息 msg="服务器告警:\nCPU使用率:${cpu_usage}%\n内存使用率:${mem_usage}%\n硬盘使用率:${disk_usage}\n当前连接数:${net_conn}" # 发送告警消息钉钉群 curl -H "Content-Type: application/json" -d "{\"msgtype\": \"text\", \"text\": {\"content\": \"${msg}\"}}" ${url} ``` 3. 在服务器上设置定时任务,定期执行Shell脚本,比如每5分钟执行一次。可以使用crontab命令设置定时任务,比如: ``` */5 * * * * /path/to/your/script.sh ``` 4. 在钉钉群中添加机器人,并获取机器人的access_token。 5. 将access_token替换到Shell脚本中的url参数中,然后保存Shell脚本。 6. 等待定时任务执行,当服务器或服务的运行状态异常时,Shell脚本会自动发送告警消息钉钉群中。 以上就是使用Shell脚本+钉钉机器人实现服务及服务器监控告警的步骤。通过这种方式,可以及时发现服务器或服务的运行异常,避免出现更大的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值