前言
我们在使用云平台时偶尔会在管理员邮箱中收到系统发出的告警通知,如EC2维护信息,这些邮件很容易淹没在收件箱中,没有得到及时处理。另外对于重要的应用我们可能会在CloudWatch设置一些指标告警并进行邮件通知。如果这些都可以发到微信等即时通信软件,就比邮件通知好多了,毕竟很多人都习惯在即时通信软件上查看消息。具体实现原理并不复杂,我们知道微信等即时通信工具均提供了消息接口。第三方应用获取授权后,通过调用这些接口即可往客户端发送消息。在云平台上可以在EventBridge/Cloudwatch Event中配置事件规则,即可以触发一个Lambda运行微信接口调用的处理逻辑,通过Serverless是可以简单地实现这个通知告警机制的。在这个教程里,我们会介绍如何在Serverless Application Repository部署一个微信告警应用,只要将自己微信接口的三个相关参数配置进去,就可以一键启用微信告警功能了。如果有一些新的告警事件想推送到微信,也可以在控制台上设置好规则,不用去修改Lambda相关代码。
教程说明 第1步 - 进入Serverless Application Repository控制台
选择服务 > Serverless Application Repository 以进入 Serverless Application Repository 管理控制台。 选择 ”可用应用程序“ 并选择 “公用应用程序”, 在搜索框中输入 “wechat” ,并勾选 “显示用于创建自定义 IAM 角色或资源策略的应用程序”, 找到 “WeChat-Notifer” 应用程序
第2步 - 部署应用
在“应用程序设置“ 部分,输入与微信接口相关的三个参数。 这三个参数可在企业微信中创建应用后获得:
a, 首先登录企业微信管理后台,创建一个新的应用,并记录 AgentId 和 Secret
b, 记录企业ID
c, 输入完毕后点击”部署“即可在后台进行部署
第3步 - 检查应用部署情况
a, 这个应用会自动部署一系列的组件,涉及的 AWS 服务包括 EventBridge, SNS, Lambda 和 Secrets Manager 等,为方便演示EventBridge功能,这个应用部署时创建了两个EventBridge的Rule,一个是捕获EC2的状态变化事件(如开关机),另一个是捕获AWS健康事件(如EC2计划维护事件)。
b, 部署完成后,可以看到相关部署出来的资源。接下来我们可以测试一下微信通知功能是否正常工作,点击 “WeChatNotifierSNSTopic”,自动跳转至 SNS 控制台
c, 在SNS控制台上点击”发布消息“:
d, 输入测试消息并发送:
e, 在微信客户端检查是否能够正常接收测试消息:
d 后续其他应用如果需要发送消息至微信,则可以将其与SNS进行对接,这样就可以很方便的进行微信告警而无须额外增加处理代码。
第4步 - 通过 EventBridge 捕获 AWS 相关事件并进行告警
a, 如前面所述,这个应用部署了两个示例的规则,分别是捕获AWS健康事件和EC2状态变更事件,同样可以在 Lambda 控制台中找到这两个规则:
b, 接下来我们可以启动一台EC2实例,在微信端检查相关的告警信息:
小结 • 在这个教程里我们演示了如何在Serverless Application Repository一键部署一个微信告警应用,以帮助我们快速进行云平台事件的告警。通过对EventBridge规则的扩展,我们可以很方便地增加新的告警规则,而不需要去手动编写Lambda代码。从这个微信告警应用,我们也可以看到Serverless对于应用开发的效率提升非常明显,我们可以在后续的应用场景中更多地使用Serverless服务和技术,从而提高开发效率,减少运维压力