一键启用无服务器化的微信/钉钉告警通知
前言
在使用亚马逊云科技的过程中,各种服务的通知事件在日常运维里常常发挥着关键作用。但在实际使用过程中,这些通知常常因为各种原因被忽略而导致意外的损失。如:亚马逊云科技的维护事件会发送通知邮件到账号的注册邮箱,但这些邮箱通常无人值守,使得在维护事件发生时,客户会遭遇“意外”停机。另外,客户部署的工作负载也有各种自定义的通知希望集成到一个统一的客户端进行提醒;而现在各种流行的即时通信软件都有移动客户端,同时基本都支持 webhook 机制,外部通过API调用,即可传入相应的信息;因此即时通信软件是接收这些通知的理想终端。结合以上需求,本文将介绍基于亚马逊云科技无服务器技术构建的通知方案,客户无需编写代码,仅需简单配置,一键部署,即可将各种通知集中到流行的即时通信软件。
关于本教程 | |
预计部署时间 | 10 分钟 |
费用 | Free tier |
受众 | 运维人员 |
级别 | 中级 |
相关产品 | Lambda、EventBridge、SNS |
相关行业 | 通用 |
上次更新时间 | 2022 年 5 月 |
· 部署架构
· 部署说明
部署区域:全球区域、中国区域
部署来源:Serverless Application Repository (SAR)
步骤 1 - 配置 IM 客户端
- 配置企业微信应用
首先登录企业微信管理后台,创建一个新的应用,并记录 AgentId 和 Secret 。
记录企业 ID :
以上三个参数,为微信通知部署时需要填入的参数。
如果希望从微信客户端直接接收告警消息,而不想使用企业微信客户端,可以考虑使用微信插件:
步骤 2 - 从 SAR 部署通知应用:
从账号 console 打开 Serverless Application Repository (SAR) 服务,从可用应用程序中搜索通知应用。
选择 WeChat-Notifier,进入微信通知部署页面,填入上面获取的三个微信接口相关的参数:
选择 DingTalk-Notifier,进入钉钉通知部署页面,填入所配置的钉钉机器人的 Webhook URL:
点击部署。几分钟后将部署完成。
SAR 上无服务器应用背后是以 Cloudformation 进行部署,可通过 Cloudformation 查看相应的部署完成状况。
步骤 3 - 测试通知功能:
本方案,默认配置了从 EventBridge 中捕获 EC2 的状态变化和 AWS Health 事件作为通知事件源,可通过 EC2 的 Start / Stop / Terminate 操作,触发通知进行测试。示例结果如下:
步骤 4 - 配置成本提醒:
通过 Amazon Budgets 服务,客户可以设置自定义预算,不管是最简单还是最复杂的使用案例,都能跟踪其成本和使用情况。同时 Budgets 服务提供了与 SNS 的直接集成。
从已部署的 Cloudformation 中打开 SNS 关联主题,并获取 ARN。
打开 Budgets 服务,选择“成本预算”类型,设置成本的信息,进入第三步:配置警报。在“提醒阀值”中设置 SNS 提醒。
点击“权限”,获取 SNS 的权限配置示例片段。
{
"Sid": "AWSBudgets-notification-1",
"Effect": "Allow",
"Principal": {
"Service": "budgets.amazonaws.com"
},
"Action": "SNS:Publish",
"Resource": "<insert-ARN-here>"
}
在 SNS 的访问策略中添加以上片段,并将 <insert-ARN-here> 替换成 SNS 自身的 ARN。
完成 Budgets 后续的配置步骤。
- 提示效果
步骤 5 - 资源清理:
如需对已部署的通知集成应用进行卸载,从 Cloudformation 中删除对应堆栈即可完成卸载。