【问题标题】:How to send Cloudwatch log details via email?如何通过电子邮件发送 Cloudwatch 日志详细信息?
【发布时间】:2020-09-21 20:50:06
【问题描述】:

下图是我想要实现的。简而言之,将 CloudTrail 日志发送到 CloudWatch 日志组,然后对其进行扫描以查找某些事件,最后在发生协同事件时发送电子邮件警报。

我正在关注这个官方文档,其中也有一个示例 CloudFormation 模板:http://docs.aws.amazon.com/awscloudtrail/latest/userguide/use-cloudformation-template-to-create-cloudwatch-alarms.html

使用上面的 CloudFormation 模板,我已经能够发送电子邮件警报。然而,警报是非常基本的;它不会发送关键信息,例如哪个用户发起了此事件、何时​​发生等。

逻辑上认为AWS::Logs::MetricFilter 应该将值传递给AWS::CloudWatch::Alarm,然后AWS::CloudWatch::Alarm 将发送信息。我查看了MetricFilterAlarm 服务的文档。 Dimension 更接近我想要的,但还不能从日志中读取信息。

我原以为这是一个常见的用例,并且会有文档。我在这里错过了什么明显的东西吗?这里有人解决了这个问题吗?

AWS::Logs::MetricFilter块:

"AuthorizationFailuresMetricFilter": {
    "Type": "AWS::Logs::MetricFilter",
    "Properties": {
        "LogGroupName": { "Ref" : "LogGroupName" },
        "FilterPattern": "{ ($.errorCode = \"*UnauthorizedOperation\") || ($.errorCode = \"AccessDenied*\") }",
        "MetricTransformations": [
            {
                "MetricNamespace": "CloudTrailMetrics",
                "MetricName": "AuthorizationFailureCount",
                "MetricValue": "1"
            }
        ]
    }
},

AWS::CloudWatch::Alarm

  "AuthorizationFailuresAlarm": {
      "Type": "AWS::CloudWatch::Alarm",
      "Properties": {
          "AlarmName" : "CloudTrailAuthorizationFailures",
          "AlarmDescription" : "Alarms when an unauthorized API call is made.",
          "AlarmActions" : [{ "Ref" : "AlarmNotificationTopic" }],
          "Dimensions": [
             {
                "Name": "errorCode",
                "Value": ""
             },
             {
                "Name": "userIdentity",
                "Value": ""
             }
          ],
          "MetricName" : "AuthorizationFailureCount",
          "Namespace" : "CloudTrailMetrics",
          "ComparisonOperator" : "GreaterThanOrEqualToThreshold",
          "EvaluationPeriods" : "1",
          "Period" : "300",
          "Statistic" : "Sum",
          "Threshold" : "1"

      }
  },

【问题讨论】:

  • 你不能这样做。这是 Amazon 真正需要添加的 CloudWatch Logs 缺少的功能。
  • 人们会认为这是最常见的用例之一。奇怪,它还没有实现。

标签: amazon-web-services amazon-cloudformation amazon-cloudwatch amazon-cloudwatchlogs amazon-cloudtrail


【解决方案1】:

这是不可能的。

Amazon CloudWatch Logs 将接受来自 AWS CloudTrail 的信息,并在找到与预定义过滤器匹配的消息后,将增加一个指标计数。

当指标超过某个阈值时,可以触发 Amazon CloudWatch 警报。但是,生成指标的传入数据与基于阈值触发的警报之间没有直接联系。

把它想象成一个计算进入地铁人数的旋转门。闸机统计人数,但不保留通过人的信息。同样,CloudWatch 警报对事件进行计数,但不包含有关已计数事件的任何信息。

【讨论】:

  • 感谢约翰的回答。我真的很想嗅探 CloudTrail 日志并向事件响应团队发送警报,其中包含所有可能的详细信息。你会如何自己解决这个问题?
  • 您是要通知一个特定事件,还是仅在超过计算阈值时(例如,在 1 小时内发生超过 5 次事件)?前者应该很容易,后者很难,因为随着时间的推移,数据会分布在许多事件中。
  • 我想在事件发生时发送警报不一定计算阈值。但我需要的是详细且有助于调查的警报。
  • 如果您只想在特定事件发生时收到通知,请使用 Amazon CloudWatch Events 进行配置。您可以将 API 调用或事件定义为触发器,将 SNS 主题定义为目标。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-03
  • 1970-01-01
  • 2020-09-14
  • 2017-10-28
  • 1970-01-01
相关资源
最近更新 更多