如何实现AWS CloudWatch自定义仪表盘触发Slack阈值告警通知?
AWS CloudWatch 5xx状态码持续超标自动发送Slack通知的两种实现流程
方式一:不使用Lambda(CloudWatch Alarm + SNS + Slack Webhook)
- 配置Slack Incoming Webhook
打开Slack工作区,进入「Settings & administration > Manage apps」,搜索“Incoming WebHooks”并添加到工作区,选好要接收通知的频道,复制生成的Webhook URL备用。 - 创建SNS主题并配置订阅
- 进入AWS SNS控制台,新建标准类型的主题。
- 在主题的订阅页面,协议选「HTTPS」,端点填刚才的Slack Webhook URL,完成订阅(Slack会自动确认,不用手动操作)。
- 给SNS主题加权限:在主题的「权限」标签页,添加如下策略,允许CloudWatch Alarm向其发消息:
{ "Effect": "Allow", "Principal": { "Service": "cloudwatch.amazonaws.com" }, "Action": "sns:Publish", "Resource": "你的SNS主题ARN" }
- 创建CloudWatch Alarm监控5xx指标
- 进入CloudWatch控制台,找到你自定义仪表盘里的5xx状态码指标(确认命名空间、指标名称和仪表盘一致)。
- 点击「创建警报」,配置指标:
- 选统计类型(比如Sum或Average,看你的计数逻辑)
- 周期设为1分钟,数据点选「连续M个周期」(M就是你要求的分钟数)
- 阈值设为「大于N」(N是你设定的阈值)
- 配置警报操作:选「通知」,添加刚才创建的SNS主题,可设置触发和恢复时都发通知。
- 完成创建后,手动触发5xx请求测试,看Slack是否收到通知。
方式二:使用Lambda(CloudWatch Alarm + Lambda + Slack API)
- 创建Lambda函数
- 进入Lambda控制台,从头创建函数,运行时选Python 3.x(或你熟悉的语言)。
- 替换函数代码为以下示例(记得把Slack Webhook URL换成你的):
import json import urllib3 def lambda_handler(event, context): slack_webhook_url = "你的Slack Webhook URL" http = urllib3.PoolManager() # 解析CloudWatch Alarm的SNS消息 alarm_msg = event['Records'][0]['Sns']['Message'] alarm_info = json.loads(alarm_msg) # 构造Slack通知内容 slack_content = { "text": f"⚠️ CloudWatch警报触发:5xx状态码持续超标\n" f"警报名称: {alarm_info['AlarmName']}\n" f"当前状态: {alarm_info['NewStateValue']}\n" f"阈值: {alarm_info['Threshold']}\n" f"触发时间: {alarm_info['StateChangeTime']}" } # 发送到Slack response = http.request( 'POST', slack_webhook_url, body=json.dumps(slack_content), headers={'Content-Type': 'application/json'} ) return { 'statusCode': response.status, 'body': response.data.decode('utf-8') } - 给Lambda加权限:允许SNS向其发消息,要么在Lambda执行角色里添加SNS触发权限,要么后续在SNS订阅Lambda时自动生成权限。
- 关联CloudWatch Alarm与Lambda
- 方式一:创建SNS主题,订阅刚才的Lambda函数,然后在CloudWatch Alarm操作里选择这个SNS主题。
- 方式二:直接在CloudWatch Alarm的操作里选择「Lambda函数」,添加创建好的Lambda函数。
- 配置CloudWatch Alarm监控规则
和方式一的配置逻辑一致:选5xx指标,设置统计类型、连续M分钟、阈值大于N的规则。 - 测试验证
触发5xx请求,等待M分钟,检查Slack是否收到格式化的通知。
内容的提问来源于stack exchange,提问作者Aanchal Gupta
相关产品推荐
相关产品推荐

