您的位置 首页 java

监控系统: java实现企业微信发送告警通知(http代理)

1. 项目背景

朋友在一家日企,运维工具老旧,希望增加一款系统告警工具。我提议通过 微信企业号 (改版为 企业微信 )或者短信推送告警信息。提出两点要求:

  1. 可以群发给企业微信中的多个人
  2. 监测健康检测服务是否存活(绕嘴。。)

做了第一版demo,定位为通信渠道的http代理。贴出企业微信相关代码,如果有需要的同学可以拿去用,记得点个star就好。

1.1 依赖项目

因为定位为http代理,并未使用数据库及 持久化 工具。

  1. springboot
  2. 企业微信接口
  3. 可能是目前最好最全的微信Java开发工具包(SDK)
  4. swagger 工具

2. 项目code

代理入口为健康检测工具,出口为企业微信、短信等。同时需要保障和健康检测工具之间的网络通畅。

最近在尝试画图

2.1 微信接口

企业微信相关配置如下

  1. corpid 企业ID
  2. agentid 应用ID,在企业微信管理后台创建应用后,可以查看应用ID
  3. corp.secret 应用的凭证密钥

weixin-java-tools已经对微信接口进行了友好的封装,可以通过标签、部门等分组,查询用户标识。配置 bean 方法如下

同时也提供了发送消息、已经封装消息的类

2.2 restful 接口

对外暴露的接口主要提供两个功能

  1. 代理企业微信,用于查询部门、标签、userId等
  2. 发送告警信息

具体实现在service中,restful暴露了http请求接口及swagger接口。并且将首页指向了swagger页面

2.3 验权

两种验权方式

  1. 参数+secret通过 SHA 加密签名
  2. ip 白名单

通过interceptor实现

2.3.1 白名单校验

2.3.2 接口参数签名校验

SHA加密工具封装

如果需要对sign有效期进行校验,需要提供获取服务器时钟的方法,避免因为服务器时间不一致导致的时间差, 此方法可以通过@Anonymous去掉验权操作。

2.4 健康检测

定时用http get 请求确认网络通畅,如果网络连接失败次数超过阈值,报警给 系统管理员

通过Scheduled编写定时任务

在配置bean中需要注入bean并允许启动调度

3. 其他

项目写的比较仓促,后续根据实际使用场景进行调整优化。都是站在巨人的肩膀上,利用现成的工具进行拼装。 如果有建议或者希望实现哪些功能,可以留言或者给我提 issue

文章来源:智云一二三科技

文章标题:监控系统: java实现企业微信发送告警通知(http代理)

文章地址:https://www.zhihuclub.com/188859.shtml

关于作者: 智云科技

热门文章

网站地图