如何通过电子邮件发送Cloudwatch日志详细信息?

时间:2017-08-16 12:28:35

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

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

CloudTrail to send alerts

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

使用上面的CloudFormation模板,我可以发送电子邮件提醒。但警报非常基本;它不会发送关键信息,例如哪个用户发起了此事件,何时发生等等。

逻辑思考AWS::Logs::MetricFilter应该将值传递给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"

      }
  },

1 个答案:

答案 0 :(得分:4)

这是不可能的。

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

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

把它想象成一个计算进入地铁的人的旋转门。十字转门计算人数,但不保留有关人员的信息。同样,CloudWatch警报会对事件进行计数,但没有任何有关已计算事件的信息。