标签: cloudwatch-alarms

AWS CloudWatch 日志:如何在 lambda 记录特定错误消息时发送电子邮件通知

我必须监控特定 lambda 的 CloudWatch 日志。当特定错误消息(例如 HTTP-50X)记录到 CloudWatch 时,我们需要发送电子邮件通知以提醒出现问题。

我们需要帮助在 AWS 中创建警报电子邮件,以手动监控日志以查看是否记录了任何此类错误。

amazon-web-services amazon-cloudwatch amazon-cloudwatchlogs aws-cloudwatch-log-insights cloudwatch-alarms

16
推荐指数
2
解决办法
2万
查看次数

警报预算和 CloudWatch 警报计费之间有什么区别?

我想了解在 AWS 中使用预算(成本预算)和配置账单警报之间有什么区别?

amazon-web-services cloudwatch-alarms

13
推荐指数
1
解决办法
6138
查看次数

如何在 SQS 消息发送到死信队列时生成警报?

目标

旨在在从 SQS 队列到 lambda 函数的消息超过最大重试次数时触发 CloudWatch 警报。

问题

我认为这很容易并且 NumberOfMessagesReceived 指标会反映这一点。熟悉这一点的人都知道,事实并非如此。

解决方案

“Limbo”解决方案

我对这个问题的快速简便的解决方案是引入一个“Limbo”,它充当第一个 DLQ,并在几秒钟内将消息推送到最终/实际 DLQ。在指标中,这会导致“Limbo”队列的可见消息指标出现峰值。因此,具有“ > 0 ”的警报阈值意味着每次该队列收到消息时都可以发出警报。

然而,每次我们想要这个功能时,我上面的权力都不满意有一个“Limbo”队列。

此处使用“Limbo”队列显示所需行为的屏幕截图

据我所知,有一些替代方法,但这些方法似乎比Limbo 解决方案更糟糕。

新的 Lambda 函数

第一个是拥有一个新的 lambda 函数,该函数使用 SQS DLQ 作为源并生成警报。

Lambda 运行时拦截

其次是让现有 lambdas 中的逻辑(处理 SQS 消息)读取消息重试的次数,并在最后一次生成警报。这种首先消除了使用队列和重新驱动策略的优势,并且是一种过度设计的解决方案。

公制数学

我能想到的最后一个选择是使用一些度量数学来查看 DLQ 并计算最后 X 分钟内是否有增加。

对于(我确信)必须具有简单实现的解决方案,这些似乎都是奇怪且过于复杂的解决方案。每次 DLQ 收到消息时如何创建警报?

amazon-sqs amazon-web-services amazon-cloudwatch amazon-cloudwatch-metrics cloudwatch-alarms

6
推荐指数
1
解决办法
1672
查看次数

云手表闹钟中的“周期”到底是如何工作的?

我正在构建一个云手表警报,以便在 5 分钟内未调用 lambda 函数时发送电子邮件

    CloudWatchAlarm:
     Type: AWS::CloudWatch::Alarm
     Properties:
      AlarmActions:
        - !Ref SNSTopic
      AlarmDescription: Send email if lambda function was not called within 5 minutes
      Dimensions:
        -
          Name: "FunctionName"
          Value: "my-lambda"
      ComparisonOperator:  LessThanThreshold
      EvaluationPeriods: 1
      MetricName: Invocations
      Namespace: AWS/Lambda
      Period: 300
      Statistic: Sum
      Threshold: 1
      TreatMissingData: breaching
      DatapointsToAlarm: 1
Run Code Online (Sandbox Code Playgroud)

因此,当调用该函数时,调用指标变为 1,警报进入 OK 状态。但是,当 5 分钟后没有调用该函数时,警报不会返回到 ALARM 状态。实际上,进入 ALARM 状态大约需要 15 分钟。

如果我输入较小的句号,则返回“警报”状态所需的时间确实会更少。我不明白期间是如何运作的。

有谁知道这种配置在Cloud Watch Alarm中是否真的可行?我应该如何确定期限和评估期才能在 5 分钟内收到电子邮件?

amazon-web-services aws-cloudformation amazon-cloudwatch cloudwatch-alarms

6
推荐指数
1
解决办法
8776
查看次数

S3 存储桶不显示指标

我创建了一个 S3 存储桶,并通过在其中上传一些文件来填充它。但我无法验证我的用例来检查存储桶大小,因为总存储桶大小的默认指标始终不返回任何数据。注意:我使用默认设置在 AWS 控制台 UI 中创建了存储桶。

我等了一个多星期,即使如此,我仍然在 Metrics 选项卡下看到没有数据,因此 s3 存储桶也没有在 cloudwatch 中列出来配置警报。

有没有人遇到过类似的问题并帮助解决它?附上我的 S3 存储桶的“指标”选项卡的屏幕截图以供参考,在此输入图像描述

amazon-s3 amazon-web-services amazon-cloudwatch cloudwatch-alarms

6
推荐指数
1
解决办法
7346
查看次数

为什么 AWS CloudWatch 警报无法向加密的 SNS 主题发送通知?

如果我的 lambda 函数内存使用量超过 lambda 内存大小的 80%,我设置了警报以通知我。我正在使用自定义指标捕获数据点,并且当内存使用量超过阈值时,我能够在 cloudwatch 控制台中看到警报。但是当警报采取行动向相应的 SNS 主题发送通知时失败并显示以下消息:

{
 "actionState": "Failed",
 "stateUpdateTimestamp": 1558142246126,
 "notificationResource": "arn:aws:sns:us-east-1:5847563209:<myTopic>",
 "publishedMessage": null,
 "error": "null (Service: AWSKMS; Status Code: 400; Error Code: AccessDeniedException; Request ID: 6b7806a6-2c16-4582-9ecd-05100161746e)"
Run Code Online (Sandbox Code Playgroud)

}

SNS 主题使用 KMS 密钥加密,我允许 cloudwatch 访问密钥策略中的密钥:

{
  "Sid": "Allow CloudWatch to use the key",
  "Effect": "Allow",
  "Principal": {
      "Service": "cloudwatch.amazonaws.com"
  },
  "Action": [
      "kms:GenerateDataKey",
      "kms:Decrypt"
  ],
  "Resource": "*"
}
Run Code Online (Sandbox Code Playgroud)

但行动仍然失败。我也试过events.amazonaws.com当校长,但没有运气。我很感激这方面的任何帮助。

amazon-cloudwatch aws-kms cloudwatch-alarms

5
推荐指数
1
解决办法
2259
查看次数

CloudWatch 警报错误百分比 API 网关

我正在尝试使用 terraform 在 Cloudwatch 中设置和报警。我的警报基本上需要检查在 1 分钟的 2 个周期内网关中是否有超过 5% 的 5xx 错误。

我已经尝试了以下代码,但它不起作用:

resource "aws_cloudwatch_metric_alarm" "gateway_error_rate" {
  alarm_name          = "gateway-errors"
  comparison_operator = "GreaterThanOrEqualToThreshold"
  alarm_description   = "Gateway error rate has exceeded 5%"
  treat_missing_data  = "notBreaching"
  metric_name         = "5XXError"
  namespace           = "AWS/ApiGateway"
  period              = 60
  evaluation_periods  = 2
  threshold           = 5
  statistic           = "Average"
  unit                = "Percent"

  dimensions = {
    ApiName = "my-api"
    Stage = "dev"
  }
}
Run Code Online (Sandbox Code Playgroud)

即使部署了警报,也不会显示数据。做一些测试时,我注意到该警报显然不接受单位“百分比”。

有没有人有一个例子terraformcloudformation如何配置此类报警?

amazon-web-services aws-cloudformation amazon-cloudwatch terraform cloudwatch-alarms

5
推荐指数
1
解决办法
1470
查看次数

如何在 AWS Cloudwatch 中的某个时间段内没有日志时收到警报?

我有一个在 AWS Elastic Container Service 中运行的 Java 应用程序。应用程序定期轮询队列。有时队列没有响应,应用程序永远挂起。我已经用带有日志记录异常的 try-catch 块封闭了这些方法。即使之后 Cloudwatch 中没有日志。没有异常或错误。有没有办法可以识别这种情况。? (在 Cloudwatch 中没有日志)。就像过滤错误日志模式一样。所以我可以重新启动服务。任何技巧或解决方案将不胜感激。

public void handleProcess() {
    try {
        while(true) {
            Response response = QueueUitils.pollQueue(); // poll the queue
            QueueUitils.processMessage(response);
            TimeUnit.SECONDS.sleep(WAIT_TIME); // WAIT_TIME = 20
        }
    } catch (Exception e) {
        LOGGER.error("Data Queue operation failed" + e.getMessage());
        throw e;
    }
}
Run Code Online (Sandbox Code Playgroud)

java amazon-web-services amazon-ecs amazon-cloudwatchlogs cloudwatch-alarms

5
推荐指数
2
解决办法
556
查看次数

由于heredoc,Cloudwatch 警报创建失败

我正在尝试使用 terraform 创建复合 cloudwatch 警报。但不幸的是我的 terraform 代码因以下错误而中断:

错误:创建 CloudWatch 复合警报时出错 (node-count-office-time-composite-alarm-DP-1474-desert):ValidationError:AlarmRule 不得包含前导或尾随空格或者为 null 状态代码:400,请求 ID:272b14ae- e6bd-4e65-8bb8-25372d9a5f7c

以下是我的地形代码:

resource "aws_cloudwatch_composite_alarm" "node_count_office_time_alarm" {
  depends_on = [aws_cloudwatch_metric_alarm.node_count, aws_cloudwatch_metric_alarm.office_time]
  alarm_description = "Composite alarm for node count & office time"
  alarm_name        = "node-count-office-time-composite-alarm-${local.postfix}"
  alarm_actions = [var.sns_topic_arn]
  ok_actions    = [var.sns_topic_arn]
alarm_rule =<<-EOF
ALARM(${aws_cloudwatch_metric_alarm.node_count.alarm_name}) AND
ALARM(${aws_cloudwatch_metric_alarm.office_time.alarm_name})
EOF
}
Run Code Online (Sandbox Code Playgroud)

我检查了很多次,我的alarm_rule中没有前导或尾随空格。AND 运算符后仅换行。我正在使用 terraform 0.15.3 版本。有人遇到类似的问题吗?我该如何解决这个问题?谢谢

heredoc amazon-cloudwatch terraform cloudwatch-alarms

5
推荐指数
1
解决办法
1296
查看次数

将 EC2 操作添加到运行状况检查时的 Cloudwatch 警报

我有一个 AWS bitnami 实例,当网站不可用时,我创建了 Route 53 运行状况检查警报。第一个操作成功触发并向我发送了一封电子邮件。但是,我还希望重新启动实例,尽管“添加 EC2”操作显示为灰色,并且显示为:“此操作仅适用于 EC2 每个实例指标”。我怎样才能添加这个?

在此输入图像描述

是否与此相关:我的 EC2 实例位于爱尔兰可用区,但是当我在 Route 53 中的运行状况检查上创建警报和 SNS 主题时,它会自动在弗吉尼亚北部可用区创建它们。而且我似乎无权改变它的去向。

amazon-web-services amazon-sns amazon-route53 cloudwatch-alarms

4
推荐指数
1
解决办法
1746
查看次数