如何解决服务器列表的 Cloudwatch 警报
我正在尝试跨服务器列表设置一些警报,我在本地定义了我的服务器,如下所示:
locals {
my_list = [
"server1","server2"
]
}
然后我定义了我的 cloudwatch 警报:(这是一个这样的警报)
resource "aws_cloudwatch_metric_alarm" "ec2-high-cpu-warning" {
for_each = toset(local.my_list)
alarm_name = "ec2-high-cpu-warning-for-${each.key}"
comparison_operator = "GreaterThanThreshold"
evaluation_periods = "1"
metric_name = "cpuutilization"
namespace = "AWS/EC2"
dimensions = {
instanceid = values(data.aws_instances.my_instances)[*].ids
instancename = local.my_list
}
period = "60"
statistic = "Average"
threshold = "11"
alarm_description = "This warning is for high cpu utilization for ${each.key}"
actions_enabled = true
alarm_actions = [data.aws_sns_topic.my_sns.arn]
insufficient_data_actions = []
treat_missing_data = "notBreaching"
}
我也这样定义数据源:
data "aws_instances" "my_instances" {
for_each = toset(local.my_list)
instance_tags = {
Name = each.key
}
}
| data.aws_instances.my_instances is object with 2 attributes
属性“dimensions”的不适当值:元素“instanceid”:字符串 需要。
解决方法
在您的 for_each
中,您应该使用 data.aws_instance.my_instances
:
resource "aws_cloudwatch_metric_alarm" "ec2-high-cpu-warning" {
for_each = data.aws_instance.my_instances
alarm_name = "ec2-high-cpu-warning-for-${each.key}"
comparison_operator = "GreaterThanThreshold"
evaluation_periods = "1"
metric_name = "CPUUtilization"
namespace = "AWS/EC2"
dimensions = {
instanceid = each.value.id
instancename = each.key
}
period = "60"
statistic = "Average"
threshold = "11"
alarm_description = "This warning is for high cpu utilization for ${each.key}"
actions_enabled = true
alarm_actions = [data.aws_sns_topic.my_sns.arn]
insufficient_data_actions = []
treat_missing_data = "notBreaching"
}
以上内容将为您的两个实例创建两个警报(每个实例一个警报),其中 instancename
将是 server1
或 ``server2`。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。