
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 结合,通过企业微信以即时聊天的形式发送事件通知。以下所有操作将在由西云数据运营的亚马逊云科技中国(宁夏)区域进行测试。


对 SNS 主题创建邮件订阅。


创建 EventBridge 规则,首先跳转到 EventBridge 页面。

进行规则定义。

源选择所有 RDS 的事件。这里可以根据需要进行配置,比如需要配置只接收特定数据库的事件通知。


目标选择刚刚创建的 SNS 主题。



创建 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。
import json
import requests
import os
def lambda_handler(event, context):
qywx_robot_url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key="
token = os.environ['mytoken']
send_url = qywx_robot_url + token
headers = {
'Content-Type': 'application/json'
}
context = ""
try:
message = json.loads(event['Records'][0]['Sns']['Message'])
# 时间
time = message['time']
detail = str(message['detail'])
title = '<font color=\"info\">[Amazon Web Services health event]</font>'
content = title + "\n> time: " + str(time) + "\n> detail: " + detail
except Exception as e:
print('cloudwath event 告警解析异常,请检查lambda代码')
print(str(e))
content = "cloudwath event 告警解析异常,请检查lambda代码" + str(e)
msg = {
"msgtype": 'markdown',
"markdown": {'content': content}
}
response = requests.post(url=send_url, data=json.dumps(msg), headers=headers)
print('已发送消息到企业微信')
return response.text
配置 SNS,创建 Lambda 的订阅并根据情况删除邮件的订阅。

在企业微信接收相关通知。

在这篇文章中,我们演示了如何使用 EventBridge,SNS 和 Lambda 自定义 Amazon RDS 事件通知并发送到企业微信进行通知。监控数据库对每个组织都至关重要,借助此解决方案,我们可以使用 Amazon RDS 事件监控数据库,向运营团队发送通知,这有助于您管理和监视所有 Amazon RDS 数据库环境。您还可以根据您的要求添加和删除所需的 Amazon RDS 事件。同时本方案支持在 EventBridge 中支持的所有亚马逊云科技云服务,包括 ElastiCache,OpenSearch 等,可以同时订阅并发送通知到企业微信。
参考连接:(复制下方链接至浏览器即可查看)
作者介绍
肖福生
西云数据解决方案架构师,负责西云数据华南区域的云计算方案咨询和设计,同时致力于亚马逊云科技在国内的应用和推广。在加入西云数据之前,在云计算行业担任解决方案架构师,负责互联网行业的云计算方案咨询以及架构设计,在企业软件架构,数据库,中间件软件等方面有丰富的经验。

点击文末左下角 “阅读原文” 查看
亚马逊云科技中国(宁夏)区域免费套餐







