我必须监控特定 lambda 的 CloudWatch 日志。当特定错误消息(例如 HTTP-50X)记录到 CloudWatch 时,我们需要发送电子邮件通知以提醒出现问题。
我们需要帮助在 AWS 中创建警报电子邮件,以手动监控日志以查看是否记录了任何此类错误。
amazon-web-services amazon-cloudwatch amazon-cloudwatchlogs aws-cloudwatch-log-insights cloudwatch-alarms
我想了解在 AWS 中使用预算(成本预算)和配置账单警报之间有什么区别?
旨在在从 SQS 队列到 lambda 函数的消息超过最大重试次数时触发 CloudWatch 警报。
我认为这很容易并且 NumberOfMessagesReceived 指标会反映这一点。熟悉这一点的人都知道,事实并非如此。
我对这个问题的快速简便的解决方案是引入一个“Limbo”,它充当第一个 DLQ,并在几秒钟内将消息推送到最终/实际 DLQ。在指标中,这会导致“Limbo”队列的可见消息指标出现峰值。因此,具有“ > 0 ”的警报阈值意味着每次该队列收到消息时都可以发出警报。
然而,每次我们想要这个功能时,我上面的权力都不满意有一个“Limbo”队列。
据我所知,有一些替代方法,但这些方法似乎比Limbo 解决方案更糟糕。
第一个是拥有一个新的 lambda 函数,该函数使用 SQS DLQ 作为源并生成警报。
其次是让现有 lambdas 中的逻辑(处理 SQS 消息)读取消息重试的次数,并在最后一次生成警报。这种首先消除了使用队列和重新驱动策略的优势,并且是一种过度设计的解决方案。
我能想到的最后一个选择是使用一些度量数学来查看 DLQ 并计算最后 X 分钟内是否有增加。
对于(我确信)必须具有简单实现的解决方案,这些似乎都是奇怪且过于复杂的解决方案。每次 DLQ 收到消息时如何创建警报?
amazon-sqs amazon-web-services amazon-cloudwatch amazon-cloudwatch-metrics cloudwatch-alarms
我正在构建一个云手表警报,以便在 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
我创建了一个 S3 存储桶,并通过在其中上传一些文件来填充它。但我无法验证我的用例来检查存储桶大小,因为总存储桶大小的默认指标始终不返回任何数据。注意:我使用默认设置在 AWS 控制台 UI 中创建了存储桶。
我等了一个多星期,即使如此,我仍然在 Metrics 选项卡下看到没有数据,因此 s3 存储桶也没有在 cloudwatch 中列出来配置警报。
amazon-s3 amazon-web-services amazon-cloudwatch cloudwatch-alarms
如果我的 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
当校长,但没有运气。我很感激这方面的任何帮助。
我正在尝试使用 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)
即使部署了警报,也不会显示数据。做一些测试时,我注意到该警报显然不接受单位“百分比”。
有没有人有一个例子terraform
或cloudformation
如何配置此类报警?
amazon-web-services aws-cloudformation amazon-cloudwatch terraform cloudwatch-alarms
我有一个在 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
我正在尝试使用 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 版本。有人遇到类似的问题吗?我该如何解决这个问题?谢谢
我有一个 AWS bitnami 实例,当网站不可用时,我创建了 Route 53 运行状况检查警报。第一个操作成功触发并向我发送了一封电子邮件。但是,我还希望重新启动实例,尽管“添加 EC2”操作显示为灰色,并且显示为:“此操作仅适用于 EC2 每个实例指标”。我怎样才能添加这个?
是否与此相关:我的 EC2 实例位于爱尔兰可用区,但是当我在 Route 53 中的运行状况检查上创建警报和 SNS 主题时,它会自动在弗吉尼亚北部可用区创建它们。而且我似乎无权改变它的去向。
amazon-web-services amazon-sns amazon-route53 cloudwatch-alarms
terraform ×2
amazon-ecs ×1
amazon-s3 ×1
amazon-sns ×1
amazon-sqs ×1
aws-cloudwatch-log-insights ×1
aws-kms ×1
heredoc ×1
java ×1