如何解决Terraform:将SEARCH表达式与CloudWatch Alarms一起使用
我已经查看了this个问题,该问题并没有太大帮助,所以就这样...
我有很多Lambda函数,如果有问题,我想监视它们并触发CloudWatch警报。 Lambda函数实际上以环境名称为前缀,即env-1-function-1
,env-1-function-2
,env-2-function-1
等。
这些环境是独立的,即env1的cloudwatch警报设置与env2无关。为此,我开始研究SEARCH表达式。
这是我的警报:
resource "aws_cloudwatch_metric_alarm" "lambda_average_duration" {
alarm_name = "${local.env_prefix}-alarm-lambda_average_duration"
comparison_operator = "GreaterThanOrEqualToThreshold"
evaluation_periods = "1"
threshold = "40000"
alarm_description = "This alarm monitors lambda average duration and triggers if the average of durations rise above 40 seconds."
alarm_actions = [aws_sns_topic.alarms_topic.arn]
metric_query {
id = "e1"
expression = "SEARCH('{AWS/Lambda,FunctionName} MetricName=\"Duration\" FunctionName=${local.env_prefix}','Maximum',60000)"
label = "Function Name filter"
return_data = true
}
}
env_prefix
将为env-1
的位置。在为指标绘制图表时,这在AWS控制台中完全可以正常工作。
现在,当我运行Terraform时,似乎出现了一个问题,即“更新度量标准警报失败:ValidationError:期间不能为空”,但是在提供metric_query
时对此according to the Terraform documentation您可能没有指定期限...
我是否有一种具体方法来限制按环境(名称过滤器)过滤我的Lambda指标,而不是在整个帐户中使用Lambda函数?
解决方法
发生这种情况是因为AWS Cloudwatch不支持有关SEARCH指标的警报。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。