跳至内容

如何配置自定义 CloudWatch 警报通知?

1 分钟阅读
0

我想为状态更改创建一个 Amazon CloudWatch 警报通知,使其包含触发警报的日志事件。

简短描述

您可以配置指标筛选条件以匹配特定的日志事件,例如包含 AccessDeniedUnauthorizedOperations 错误的 AWS CloudTrail 事件。然后,使用 CloudWatch Logs 获取指标。要监控指标,请创建 CloudWatch 警报。

默认情况下,使用 Amazon Simple Notification Service (Amazon SNS) 的 CloudWatch 警报会发送预先设定格式的通知,其中包含警报和指标详细信息。要确定导致状态更改的原因,您可以将触发了 CloudWatch 警报的日志事件包含在通知中。

要在警报状态更改时调用 AWS Lambda 函数,请使用 CloudWatch 警报直接 Lambda 集成。然后,Lambda 函数可以发布包含相关日志事件的自定义通知。

解决方法

**先决条件:**确保您已创建一个 CloudWatch 警报,用于监控通过指标筛选条件生成的自定义指标。有关详细信息,请参阅根据静态阈值创建 CloudWatch 告警

创建 AWS Lambda 函数

配置 Lambda 函数,使其执行以下操作:

  • 解析 CloudWatch 警报事件的详细信息,例如警报名称、描述、时间戳以及状态更改原因。您可以将这些详细信息包含在自定义消息中。

  • 使用 CloudWatch Logs Insights 来分析相关 CloudWatch 日志组中的日志数据。
    当警报状态更改时,Lambda 函数会发出 StartQuery API 调用,以便对日志组运行查询。以下示例查询汇总了因 AccessDeniedUnauthorizedOperation 错误而失败的 CloudTrail API 调用:

    filter (errorCode="AccessDenied" or errorCode="UnauthorizedOperation")
    | stats count(*) as Hits by errorCode, errorMessage, sourceIPAddress, userIdentity.arn
    | sort Hits desc
  • 使用 GetQueryResults 检索相应的结果。

  • 使用 Amazon SNS Publish API 发送包含警报详细信息和 CloudWatch Logs Insights 查询结果的自定义消息。

相关信息

如何自定义默认 Amazon SNS 电子邮件主题行?