钉钉报警的优势在哪里?如何配置钉钉机器人进行报警信息推送?

一、常见的报警方式

1、短信或者电话报警

这样的报警方式更适合高级别的报警提醒,用于处理紧急情况。出现级别不高而又频繁地发送短信会让人产生排斥感,而且电话或者短信的报警方式也存在一定的成本。

2、邮件报警

邮件报警更适用于工作时的提醒,但是系统往往是不能区分是不是在工作,有时候夜间的报警邮件也很难及时关注到,所以说邮件报警也存在一定的局限性。

3、钉钉报警

随着钉钉越来越普及,很多公司都已经使用钉钉。员工在公司需要使用钉钉管理自己的考勤以及进行工作上的沟通,如果将监控报警信息推送到钉钉上其实就很方便的。不过也存在有的企业用的是其他沟通工具,不过对于报警推送到沟通软件上的原理都是类似的,接下来我们以钉钉作为模版来讲解如何进行报警信息的推送。

二、配置钉钉机器人

1、打开机器人管理页面

以 PC 端为例,打开 PC 端钉钉,进入首页面点击头像,在弹出框里选择机器人管理,打开管理页面后可以选择自定义,如下图所示:

2、添加机器人

在打开的机器人详情页面点击添加按钮,如下图所示:

3、配置机器人信息

在打开的添加机器人页面输入机器人名字,选择要接收报警的钉钉群 ,设置机器人头像。根据需要勾选安全设置等就可以,点击完成之后,在页面拷贝出 Webhook 地址保存好,向这个地址发送 HTTP POST 请求,设置的 SkyWalking 钉钉报警群便能收到钉钉报警消息,如下图所示: 配置好之后我们可以看到设置报警的钉钉群"SkyWalking 钉钉报警"出现了报警机器人消息,如下图所示:

我们可以用 Linux 命令行工具 curl 快速验证是否可以推送成功,curl 命令行示意如下:

css 复制代码
[root@JD ~]# curl 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxx' -H 'CONTENT-TyPE: application/json' -d '{"msgtype": "text","text": {"content": "业务报警"}}'

{"errcode":0,"errmsg":"ok"}

4、SkyWalking与钉钉报警结合

上述已经配置完成了钉钉机器人,那如何将 SkyWalking 的报警信息自动推送到钉钉机器人呢?我们可以实现一个接口作为它们沟通的"桥梁"。

首先在 pom 里面引入相关的 jar 包,如下所示:

xml 复制代码
<dependency> 

    <groupId>com.aliyun</groupId> 

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

</dependency>

然后自定义 DingTalkUtils 工具类,暴露接口访问路径 /dingdingAlarm。

java 复制代码
@RequestMapping(value = "/dingdingAlarm", method = RequestMethod.POST)

public void alarm(@RequestBody List<AlarmDto> alarmList){

    //示意代码

    alarmList.forEach(alarm-> {

        DingTalkUtils.sendMsg(alarm.getAlarmMessage());

    });

}

5、SkyWalking告警推送到钉钉

SkyWalking 提供了告警的配置,我们可以很方便地配置上面暴露的接口。在 SkyWalking 程序包里的 config 文件夹下有个 alarm-settings.yml 文件,该文件专门用来配置相关的报警。在该配置文件中我们可以搜索到 webhooks,把上面暴露的接口写上去就好了。

bash 复制代码
 webhooks:-http://ip:port/dingdingAlarm

接下来我们测试下,比如 auth 服务获取验证码的接口出现错误,我们是可以在 SkyWalking 追踪页面清楚地看到的。同时对于其他相关的业务同学,也都可以在钉钉群收到报警信息,这样的方式在实际工作中非常实用。业务报错图和钉钉报警图如下所示:

文章将持续更新,欢迎关注公众号:服务端技术精选。欢迎点赞、关注、转发

相关推荐
许野平39 分钟前
Rust: 利用 chrono 库实现日期和字符串互相转换
开发语言·后端·rust·字符串·转换·日期·chrono
齐 飞2 小时前
MongoDB笔记01-概念与安装
前端·数据库·笔记·后端·mongodb
LunarCod3 小时前
WorkFlow源码剖析——Communicator之TCPServer(中)
后端·workflow·c/c++·网络框架·源码剖析·高性能高并发
码农派大星。3 小时前
Spring Boot 配置文件
java·spring boot·后端
杜杜的man4 小时前
【go从零单排】go中的结构体struct和method
开发语言·后端·golang
幼儿园老大*4 小时前
走进 Go 语言基础语法
开发语言·后端·学习·golang·go
llllinuuu4 小时前
Go语言结构体、方法与接口
开发语言·后端·golang
cookies_s_s4 小时前
Golang--协程和管道
开发语言·后端·golang
为什么这亚子4 小时前
九、Go语言快速入门之map
运维·开发语言·后端·算法·云原生·golang·云计算
想进大厂的小王4 小时前
项目架构介绍以及Spring cloud、redis、mq 等组件的基本认识
redis·分布式·后端·spring cloud·微服务·架构