钉钉告警机器人Java接入指南

简介: 本文讲实现Java代码调用钉钉机器人API,发送指定告警消息的效果,以满足用户对于系统的实时监控。API:https://open.dingtalk.com/document/orgapp/custom-robots-send-group-messages每个机器人每分钟最多发送20条消息到群里,如果超过20条,会限流10分钟。重要如果有大量发消息的场景(譬如系统监控报警)可以将这些信息进行整合,通过markdown消息以摘要的形式发送到群

本文讲实现Java代码调用钉钉机器人API,发送指定告警消息的效果,以满足用户对于系统的实时监控。

API:https://open.dingtalk.com/document/orgapp/custom-robots-send-group-messages

每个机器人每分钟最多发送20条消息到群里,如果超过20条,会限流10分钟。

重要

如果有大量发消息的场景(譬如系统监控报警)可以将这些信息进行整合,通过markdown消息以摘要的形式发送到群

1.创建钉钉机器人

创建告警群聊

就拉一个普通群聊就可以

创建机器人

  • 群设置选择机器人

  • 选择自定义机器人

  • 定义机器人相关信息,重点关注关键词

保存Webhook

2.PostMan测试发送API

基于官方提供的API,我们可以做下述测试

官方请求示例

请求示例(HTTP)

  • 下面的token需要替换成webhook中的地址

POST https://oapi.dingtalk.com/robot/send?access_token=ACCESS_TOKEN

请求正文

  • 下面消息类型支持多种,通过msgtype声明你要哪种
  • at,标识群里@哪些人,如果isAtAll就标识@群里所有人,@atMobiles标识指定手机号,其余参数同理

{

"at":{

"isAtAll":"false",

"atUserIds":["user001","user002"],

"atMobiles":["15xxx","18xxx"]

},

   //链接消息

"link":{

"messageUrl":"1",

"picUrl":"1",

"text":"1",

"title":"1"

},

   //markdown消息

"markdown":{

"text":"1",

"title":"1"

},

   //feedCard消息

"feedCard":{

"links":{

  "picURL":"1",

  "messageURL":"1",

  "title":"1"

}

},

   //文本消息

"text":{

"content":"123"

},

"msgtype":"text",

   //actionCard消息

"actionCard":{

"hideAvatar":"1",

"btnOrientation":"1",

"singleTitle":"1",

"btns":[{

  "actionURL":"1",

  "title":"1"

}],

"text":"1",

"singleURL":"1",

"title":"1"

}

}

测试@所有人

测试@指定人

测试卡片消息

3.编写发送代码

有了上述PostMan的测试,下面的java代码编写对于我们来说就很简单了

引入pom依赖

公司内网则直接下载好:https://open-dev.dingtalk.com/sdk/download/java

<dependency>

   <groupId>com.aliyun</groupId>

   <artifactId>alibaba-dingtalk-service-sdk</artifactId>

   <version>2.0.0</version>

</dependency>

<dependency>

   <groupId>com.aliyun</groupId>

   <artifactId>dingtalk</artifactId>

   <version>2.0.18</version>

</dependency>

编写java代码

import com.dingtalk.api.DefaultDingTalkClient;

import com.dingtalk.api.DingTalkClient;

import com.dingtalk.api.request.OapiRobotSendRequest;

import com.dingtalk.api.response.OapiRobotSendResponse;

import com.taobao.api.ApiException;


import java.util.Arrays;


public class DingTalk {



   public static void main(String[] args) {

       try {

           // 1-初始化API调用Client

           DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/robot/send?access_token=8****7");


           // 2-初始化请求参数

           OapiRobotSendRequest req = new OapiRobotSendRequest();

           // 2-1 设置消息类型

           req.setMsgtype("text");

           // 2-2 设置消息@人

           OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();

           at.setAtMobiles(Arrays.asList("17600477102"));

           req.setAt(at);

           // 2-3 设置消息内容(必须匹配关键词),工作中这里就对应error日志

           OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();

           text.setContent("[告警]测试java代码消息");

           req.setText(text);


           // 3 消息发送

           OapiRobotSendResponse rsp = client.execute(req, "");

           System.out.println(rsp.getBody());

       } catch (ApiException e) {

           e.printStackTrace();

       }

   }

}

代码测试

4.工作中到底怎么用

上面我们完成了简单的告警通知,实际工作中也是这么来做,但是会做一点点优化

  • 将上述代码封装成一个工具类,如:DingTalkMessageUtil
  • 将token保存在nacos中,与代码解耦
  • 在有异常日志、慢SQL等关键场景中调用此工具类,将消息发送到群,让开发人员及时感知并处理

5.失败原因分析

  • 看看你发送消息中,是不是没有自己定义的关键词
  • 看看你消息的接收方,是不是userId或手机号不对
相关文章
|
缓存
ecs-centos分区空间大于70时发送钉钉告警并清理
当分区空间大于70时,开始清理并发送钉钉告警。
283 1
|
机器人 关系型数据库 MySQL
shell脚本实现文件自动清理并推送钉钉机器人告警
shell脚本实现文件自动清理并推送钉钉机器人告警
393 1
|
8月前
|
算法 Java 大数据
Java 大视界 --Java 大数据在智能医疗远程手术机器人控制与数据传输中的技术支持(215)
本文深入探讨 Java 大数据在智能医疗远程手术机器人控制与数据传输中的关键技术应用,涵盖数据采集、分布式计算、延迟补偿算法、数据压缩与加密传输等内容,并结合多个跨国手术案例,展示 Java 大数据如何赋能远程医疗,实现高精度、低延迟、安全可靠的手术支持,为医疗行业的数字化转型提供坚实技术支撑。
|
监控 机器人 Shell
Nightingale——夜莺监控系统部署企业微信机器人告警系【四】
Nightingale——夜莺监控系统部署企业微信机器人告警系【四】
677 1
Nightingale——夜莺监控系统部署企业微信机器人告警系【四】
|
JSON 机器人 Go
go接收alertmanager告警并发送钉钉
go接收alertmanager告警并发送钉钉
391 0
|
存储 Prometheus Cloud Native
[prometheus]配置alertmanager和钉钉告警
[prometheus]配置alertmanager和钉钉告警
1697 0
|
JSON 分布式计算 DataWorks
DataWorks产品使用合集之能否支持从结果表取出示警信息并且打通钉钉进行告警
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
271 0
|
Java API
java提交钉钉审批的一个流程例子
java提交钉钉审批的一个流程例子
715 0
|
传感器 机器人 Java
使用Java构建机器人应用
使用Java构建机器人应用
323 0
|
安全 机器人 Shell
shell脚本实现Linux磁盘空间超过阈值自动钉钉机器人告警
shell脚本实现Linux磁盘空间超过阈值自动钉钉机器人告警
370 0

热门文章

最新文章

下一篇
开通oss服务