应用系统在碰到运行异常等情况时,发送预警消息@群内相关人员,可以及时发出问题,观察对问题的响应情况

1. 创建一个群(可以是公司内部群)

2. 添加机器人

自定义机器人安全设置: https://open.dingtalk.com/document/robots/customize-robot-security-settings

设置说明:https://open.dingtalk.com/document/org/application-types

{
"at": {
"atMobiles":[
"手机号"
],
"atUserIds":[
""
],
"isAtAll": false
},
"text": {
"content":"【业务报警】接口发生异常,请及时处理,如果加了自定义关键词,内容必须包括关键词,消息才能发出"
},
"msgtype":"text"
}

https://open.dingtalk.com/document/robots/push-message

https://open.dingtalk.com/document/group/custom-robot-access

https://open.dingtalk.com/document/resourcedownload/download-server-sdk

DT研究院 https://gitee.com/dt_research_institute

代码实现:

package com.vipsoft.dingtalk.rpc;

import com.vipsoft.dingtalk.entity.dingtalk.request.RobotMessage;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*; import java.util.Map; /**
* 需要在启动项中添加 @EnableFeignClients(basePackages = {"com.vipsoft"})
*/
@FeignClient(name = "vipsoft-dingtalk", url = "${dingtalk.rebot-url}")
public interface IDingtalkService { /**
* 发送预警信息
* SendSmsInfo.TemplateParam = 文本
* @return
*/
@PostMapping(value = "/robot/send")
String sendMessage(@RequestParam Map<String, Object> headerParam, @RequestBody RobotMessage param);
}

RobotMessage

package com.vipsoft.dingtalk.entity.dingtalk.request;

import java.io.Serializable;

public class RobotMessage implements Serializable {
private String msgtype; private RobotAtInfo at; private RobotContentInfo text; public String getMsgtype() {
return msgtype;
} public void setMsgtype(String msgtype) {
this.msgtype = msgtype;
} public RobotAtInfo getAt() {
return at;
} public void setAt(RobotAtInfo at) {
this.at = at;
} public RobotContentInfo getText() {
return text;
} public void setText(RobotContentInfo text) {
this.text = text;
}
}

RobotAtInfo

package com.vipsoft.dingtalk.entity.dingtalk.request;

import java.io.Serializable;
import java.util.List; public class RobotAtInfo implements Serializable { private List<String> atMobiles; public List<String> getAtMobiles() {
return atMobiles;
} public void setAtMobiles(List<String> atMobiles) {
this.atMobiles = atMobiles;
}
}

RobotContentInfo

package com.vipsoft.dingtalk.entity.dingtalk.request;

import java.io.Serializable; 

public class RobotContentInfo implements Serializable {

    private String content;

    public String getContent() {
return content;
} public void setContent(String content) {
this.content = content;
}
}

Test

@SpringBootTest
class VipsoftDingTalkTests {
Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired
IDingtalkService dingtalkService; @Test
void sendMessage() {
String result = "";
Long timestamp = System.currentTimeMillis();
List<String> phoneNoList = new ArrayList<>();
String[] phoneNoStr = "25988888888,35988888888".split(",");
for (String phoneNo : phoneNoStr) {
phoneNoList.add(phoneNo);
}
String content = "【业务预警】 调用开放平台,推送消息接口异常"; if (ObjectUtil.isNotEmpty(phoneNoList)) {
Map<String, Object> map = new HashMap<>();
map.put("access_token", "2471310a60b56329c47c0e5f202af16b89XXXXXXXXXXXXXXXXXX");
map.put("timestamp", timestamp);
map.put("sign", sign(timestamp)); RobotAtInfo atInfo=new RobotAtInfo();
atInfo.setAtMobiles(phoneNoList);
RobotContentInfo contentInfo=new RobotContentInfo();
contentInfo.setContent(content);
RobotMessage param=new RobotMessage();
param.setMsgtype("text");
param.setAt(atInfo);
param.setText(contentInfo);
result = dingtalkService.sendMessage(map, param);
}
logger.info(result); } public String sign(Long timestamp) {
try {
String appSecret = "SECfd5138XXXXXXXXXXXXXXXXXXXXXXXX";
String stringToSign = timestamp + "\n" + appSecret;
Mac mac = Mac.getInstance("HmacSHA256");
mac.init(new SecretKeySpec(appSecret.getBytes("UTF-8"), "HmacSHA256"));
byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8"));
return new String(Base64.encodeBase64(signData));
} catch (Exception ex) {
return "";
}
}
}

DevOps 运维提醒 钉钉 机器人 群通知的更多相关文章

  1. 运维利器:钉钉机器人脚本告警(Linux Python 篇)

    写在前面的话 在前面的博客中已经具体提到了如何获取对的机器人的 Token 等操作,不清楚的可以参考之前写的 [运维利器:钉钉机器人脚本告警(Linux Shell 篇)]这篇博客的前部分. 本文主要 ...

  2. Go语言Golang DevOps运维开发实战

    Go语言Golang DevOps运维开发实战 提高运维意识.从下到上,从上到下的工作都要做好,对上运维工作的价值和含金量可以得到认可,对下我们的工作能够提高效率解放运维.运维意识是很重要,并不是你技 ...

  3. DEVOPS 运维开发系列

    DEVOPS 运维开发系列四:ITIL事态管理流程.事态监控系统设计以及基于Devops的效率提升实践 - watermelonbig的专栏 - CSDN博客https://blog.csdn.net ...

  4. 运维利器:钉钉机器人脚本告警(Linux Shell 篇)

    写在前面的话 目前换了几家公司,且最近几家都是以钉钉作为公司 OA 聊天工具,总的来说还是很不错的.最近去了新公司,由于公司以前没有运维,所以监控,做自动化等方面都没有实施,恰逢这个机会把最近做的关于 ...

  5. Elasticsearch 运维实战之1 -- 集群规划

    规划一个可用于生产环境的elasticsearch集群. 集群节点划分 整个集群的节点分为以下三种主要类型 Master nodes -- 负责维护集群状态,不保存index数据, 硬件要求: 一般性 ...

  6. yii2-dingtalk 钉钉群机器人

    说明 群机器人是钉钉群的高级扩展功能.群机器人可以将第三方服务的信息聚合到群聊中,实现自动化的信息同步.目前,大部分机器人在添加后,还需要进行Webhook配置,才可正常使用(配置说明详见操作流程中的 ...

  7. shell操作钉钉机器人实现告警提醒

    我们知道,之前的运维告警多通过mail 等方式通知到相应的人员,难以实现随时随地的查看.随着手机APP的发展,很多告警开始发送到IM软件上去.目前比较常用的是发送到微信和钉钉上,今天我们将重点放在钉钉 ...

  8. 阿里智能运维实践|阿里巴巴DevOps实践指南

    编者按:本文源自阿里云云效团队出品的<阿里巴巴DevOps实践指南>,扫描上方二维码或前往:https://developer.aliyun.com/topic/devops,下载完整版电 ...

  9. 大数据运维尖刀班 | 集群_监控_CDH_Docker_K8S_两项目_腾讯云服务器

    说明:大数据时代,传统运维向大数据运维升级换代很常见,也是个不错的机会.如果想系统学习大数据运维,个人比较推荐通信巨头运维大咖的分享课:https://url.cn/5HIqOOr,主要是实战强.含金 ...

  10. 运维不仅仅是懂Linux就行,还需要知道这些……

    运维不仅仅是懂Linux就行,因为还有一大部分的Windows运维,最近看一个报道说,windows的服务器占了47.71%.嗯,向windows运维人员致敬.当然我们这篇文章不是说运维除了懂Linu ...

随机推荐

  1. 第1章 .NET起步

    1.1 什么是.NET? .NET 8.0 SDK下载地址:https://dotnet.microsoft.com/zh-cn/download/dotnet/8.0 .NET 是一个免费的跨平台开 ...

  2. 【Azure Durable Function】PowerShell Activity 函数遇见 Newtonsoft.Json.JsonReaderException: The reader's MaxDepth of 64 has been exceeded.

    问题描述 创建PowerShell Azure Durable Function,执行大量的PowerShell脚本操作Azure Resource,遇见了一个非常非常奇怪的问题: Function ...

  3. Proj4:改进LiteOS中物理内存分配算法

    Proj4:改进LiteOS中物理内存分配算法 实验目的 掌握LiteOS系统调用的自定义方法 实验环境 Ubantu和IMX6ULL mini 实验内容 (从代码角度详细描述实验的步骤和过程) 原先 ...

  4. jdk所有版本-自留收藏

    链接:https://pan.baidu.com/s/1NDbEAEbKeh8xFzjEwB8aLg 提取码:0000

  5. Alist手动安装并使用教程

    一.官方文档及下载地址 1.官方文档 AList文档 2.下载地址 alist · GitHub 二.下载并解压文件 以Windows为例,下载指定版本的文件. 三.运行 1.解压文件并进入文件夹: ...

  6. Windows风格的个人网盘,支持文档在线编辑

    这是一个Windows页面风格的个人网盘,支持普通文本.文档.表格.xmind等在线编辑,支持Windows的小组件,例如计算器.WhiteBoard.python 等,其他更多功能待你来发现,也待你 ...

  7. 使用mumu模拟器抓包 andriod app

    背景 公司H5嵌入到农行手机app里面.某天有人反馈进入国内机票订单详情时,应用崩溃了,如下图: 经过测试,此问题仅在安卓手机中出现,且其他页面都正常.于是我怀疑可能是这个页面代码有问题,想着能否抓包 ...

  8. setup的执行时机

    setup是在beforeCreate之前执行的,也就是vue实例还未被创建,因为setup中并没有this指针 <script> export default { setup() { c ...

  9. 华企盾DSC服务器配置无法创建数据库

    测试连接的数据库用户没有创建数据库的权限,应该打开数据库控制台,把对应用户的权限都勾上

  10. MES喷码机联动:MES实时下发设备生产参数及信息,实现从上层系统控制设备输出

    随着工厂数字化的不断转型,设备单机工作已逐渐无法满足工业工厂互联网信息化数字化升级需求,从上层工单拉动设备生产参数的变化以及信息输出已经成为必然趋势. 开发工具:C# WPF 数据库:sqlite3 ...