亚马逊AWS官方博客
使用企业微信接收数据库事件通知
1、前言
Amazon Relational Database Service(Amazn RDS)是一个托管式服务的集合,可以简化在云中设置、运营和扩展数据库的过程。从以下七种热门引擎中选择 – 兼容 MySQL 的 Amazon Aurora、兼容 PostgreSQL 的 Amazon Aurora、MySQL、MariaDB、PostgreSQL、Oracle 以及 SQL Server。
监控是维护Amazon RDS和亚马逊云科技解决方案的可靠性、可用性和性能的重要组成部分。要调试多点故障,我们建议您从亚马逊云科技解决方案的所有部分收集监控数据,并尽可能地自动化监控任务。
RDS 事件表示 Amazon RDS 环境中的更改。例如,当数据库实例的状态从挂起变为正在运行时,Amazon RDS 将生成事件。Amazon RDS 将事件近乎实时地传输到 CloudWatch Events 和 EventBridge。同时,数据库的预期维护,特别是补丁更新等的事件也会通过RDS事件进行通知。因此,能够快速的获取到RDS事件对于随时监控数据库运行情况非常重要。
目前一些国内的亚马逊云科技用户,在使用企业微信作为内部工作沟通平台。他们希望将RDS事件发送到企业微信中,方便统一运维及快速反应。 在本文中,将使用RDS事件与EventBridge进行集成,并利用SNS直接以邮件的形式发送告警通知,并且与Amazon Lambda 结合,通过企业微信以即时聊天的形式发送事件通知。以下所有操作将在亚马逊云科技的宁夏区域(由西云数据运营)进行测试,但是可以在亚马逊云科技其他区域上进行部署。
2、方案架构
在本次的文章中,将会使用到如下的服务:
Amazon EventBridge: EventBridge是一种无服务器事件总线,可使用从您的应用程序、集成式软件即服务 (SaaS) 应用程序和 服务生成的事件,更轻松地大规模构建事件驱动型应用程序。在RDS的页面也有RDS Event的订阅按钮,可以使用户订阅不同集群不同类型的event。EventBridge提供了更为灵活的订阅方式,EventBridge支持订阅所有RDS事件,并且支持同时配置Elasticache等,支持一处配置多个事件源。
Amazon SNS : SNS 是一项用于应用与应用之间 (A2A) 以及应用与人之间 (A2P) 通信的完全托管型消息收发服务。
Amazon Lambda : Lambda是一项无服务器事件驱动型计算服务,该服务使您可以运行几乎任何类型的应用程序或后端服务的代码,而无需预置或管理服务器。这里使用Lambda直接调用企业微信的群聊机器人的webhood地址进行消息的发送。
3、邮件测试
下面我们先将RDS event推送到邮件上用于查看RDS event的相关内容。
首先跳转到SNS页面并创建名为“test”的SNS主题。
对SNS主题创建邮件订阅。
创建EventBridge规则,首先跳转到EventBridge页面。
进行规则定义。
源选择所有rds的事件。这里可以根据需要进行配置,比如需要配置只接收特定数据库的事件通知。
目标选择刚刚创建的sns主题
重启测试数据库获取事件通知。此时可以在邮箱中接收到相关重启的事件通知。这里就完成了发送到邮箱的测试。
4、发送到企业微信
下面创建一个lambda的目标接收SNS的RDS事件通知。并且通过lambda将事件通知推送到企业微信群中到群聊机器人,实现实时推送。
首先按照如下步骤在企业微信群中创建一个企业微信群聊机器人,并获取到webhood的token。
创建群聊机器人。
获取webhood地址。
创建lambda函数,其中配置环境变量为mytoken,该值为上面获取到的机器人的webhook地址中的key的值。例如webhood地址为https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa,则mytoken的值设置为693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa。
创建如下的lambda函数,python版本为3.8.
配置sns,创建lambda的订阅并根据情况删除邮件的订阅。
在企业微信接收相关通知。
5、小结
在这篇文章中,我们演示了如何使用 EventBridge, SNS 和 Lambda 自定义 Amazon RDS 事件通知并发送到企业微信进行通知。 监控数据库对每个组织都至关重要; 借助此解决方案,我们可以使用 Amazon RDS 事件监控数据库,向运营团队发送通知, 这有助于您管理和监视所有 Amazon RDS 数据库环境。 您还可以根据您的要求添加和删除所需的 Amazon RDS 事件。同时本方案支持在EventBridge中支持的所有亚马逊云服务,包括ElastiCache,OpenSearch等,可以同时订阅并发送通知到企业微信。
参考连接:
1、企业微信:如何设置群机器人
https://open.work.weixin.qq.com/help2/pc/14931?person_id=1
2、企业微信:群机器人配置说明
https://developer.work.weixin.qq.com/document/path/91770
3、监控 Amazon RDS 事件
https://docs.amazonaws.cn/AmazonRDS/latest/UserGuide/working-with-events.html