发布于 2026-01-06 0 阅读
0

如何将 AWS CloudWatch 警报发送到 Slack DEV 的全球展示挑战赛,由 Mux 呈现:展示你的项目!

如何将 AWS CloudWatch 警报发送到 Slack

由 Mux 赞助的 DEV 全球展示挑战赛:展示你的项目!

告警和监控系统是成熟产品和应用程序的关键组成部分。如果您关心您的客户,那么在出现问题时及时收到通知总比一无所知要好得多。如果您将基础设施托管在 AWS 上,那么获取所用服务完整指标的唯一方法就是使用 CloudWatch。AWS CloudWatch 不仅提供指标访问权限,还能针对特定情况创建告警。但是,如果您之前使用过 AWS,您肯定会注意到它的界面和某些功能远称不上“用户友好”,这意味着向 Slack 发送包含告警的通知并非易事。

本文将揭示五分钟内设置所需闹钟的秘诀。如果您想观看实际操作演示,请观看我们的视频教程

要实现这一点,我们需要完成以下几个步骤:

  • 创建 AWS 访问密钥和密钥
  • 创建角色
  • 部署 Lambda 函数
  • 创建 SNS 主题和订阅
  • 创建 CloudWatch 警报

1. 创建 AWS 访问密钥和密钥

如果您已经拥有 AWS 访问密钥和密钥,则可以跳过此步骤。否则,请点击此链接。选择您的用户,然后转到“安全凭证”选项卡,并单击“创建访问密钥”。

复制 AWS 访问密钥和密钥;我们将在配置 Lambda 函数部署时使用它们。

创建角色

此角色将由您的 Lambda 函数使用,并需要获得执行特定操作的权限。
请点击此链接,然后点击“创建角色”。

从列表中选择 Lambda。

找到 AWSLambdaBasicExecutionRole 并选择它。

最后,输入角色名称,例如“cloudwatch-to-slack-role”,在列表中点击新创建的角色,然后复制 ARN 名称。我们将在步骤 3 部署 Lambda 函数时使用它。

3. 部署 Lambda 函数

要部署 AWS Lambda 函数,您需要克隆代码仓库并在本地计算机上安装 Node.js。为了完善配置流程,我们专门为该代码仓库做出了大量贡献。

git clone git@github.com:assertible/lambda-cloudwatch-slack.git
cd lambda-cloudwatch-slack
cp .env.example .env
Enter fullscreen mode Exit fullscreen mode

打开你的 .env 文件并填写环境变量。

UNENCRYPTED_HOOK_URL
变量应填写为 Slack 传入 Webhook 的 URL;在该页面上为您的组织创建一个新的 CloudWatch Webhook。

遵循每个特定服务使用一个 Webhook 的惯例。创建 Webhook 后,选择一个通道,然后发布通知,创建一个用户名(消息标题),当然,别忘了添加一张漂亮的图片。点击此处链接下载 CloudWatch 徽标。

AWS_FUNCTION_NAME
函数的名称,将在您的 AWS Lambda 函数页面中声明。我们将其命名为“cloudwatch-to-slack”。

AWS_REGION=eu-west-1
选择 Lambda 函数所在的区域。

AWS_ROLE="arn:aws:iam::123456789123:role/lambda_exec_role"
将第二步中的 arn id 复制到此处。

AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
请使用第一步中获得的密钥填写 AWS 访问密钥和密钥。

现在我们已准备好部署;只需在终端中,从我们克隆的存储库文件夹执行以下命令:

npm install
npm run deploy
Enter fullscreen mode Exit fullscreen mode

如果一切顺利,您将能够在 AWS 的 Lambda 页面上找到您新安装的函数。

4. 创建 SNS 主题和订阅

在 AWS 中浏览简单通知服务。讽刺的是,这项服务一点也不简单,尤其是他们使用的术语和你需要完成的步骤。

转到“主题”并单击“创建新主题”。我选择“cloudwatch-alarms”作为要发送的通知的名称。

打开创建的主题并创建订阅。

选择 AWS Lambda 作为协议,并选择与您的函数名称对应的端点。

好了,现在我们可以创建警报了。

5. 创建 CloudWatch 警报

通过 CloudWatch 导航至您的 AWS 账户,然后单击“创建警报”。

选择您要监控的指标,定义警报配置,并在“发送通知至”部分选择您的 SNS 主题名称。

我建议您明确定义一些条件,以便在测试函数时立即发出警报。如果一切配置正确,您将在 Slack 频道中看到相关消息。

我希望本指南能帮助您节省时间,并为您的当前或未来项目设置提醒。

补充说明
AWS Lambda 默认提供了一些蓝图,允许您通过简单的配置执行不同的操作,其中甚至包括 CloudWatch 到 Slack 的函数。但遗憾的是,该函数会向频道发送质量很差、结构混乱的数据。

文章来源:https://dev.to/alex_barashkov/how-to-send-aws-cloudwatch-alarms-to-slack-596e