微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

遍历服务器列表并为每个服务器创建警报?

如何解决遍历服务器列表并为每个服务器创建警报?

我有一个服务器列表,如下所示,我需要为其创建 cloudwatch 警报。我似乎找不到很多这样的例子。

variable "vms" {

type = list

default = ["server1","server2","server3"]

}

我想将 for_each 用于我的 cloudwatch 警报:

resource "aws_cloudwatch_metric_alarm" "ec2-warning" {

count = length(var.vms)

for_each = {for vms in var.vms: vm.host => vms}

alarm_name = 

comparison_operator = "GreaterThanThreshold"

evaluation_periods = "1"

metric_name = "disk_used_percent"

namespace = "CWAgent"

dimensions = {

path = "/"

fstype = "xfs"

host = data.aws_instance.myec2.private_

dnsdevice = "xvda1"

}

编辑:我相信我需要做这样的事情

locals {
  my_list = [
    "server1","server3","server4"
  ]
}

resource "aws_cloudwatch_metric_alarm" "ec2-disk-space-warning-for" {
  for_each = toset(local.my_list)
  alarm_name          = {each.key}-"ec2-disk-space-warning"
  comparison_operator = "GreaterThanThreshold"
  evaluation_periods  = "1"
  metric_name         = "disk_used_percent"
  namespace           = "CWAgent"
  dimensions = {
    path   = "/"
    fstype = "xfs"
    host   = {each.key}
    device = "xvda1"
  }

解决方法

如果需要,您可以使用 var.vms。不需要locals。但是,在您第一次尝试时,您不能同时使用 countfor_each。在您的第二次尝试中,您遗漏了一些参数statisticperiod)并且错误地使用了 string interpolation

因此,应尝试以下方法:

variable "vms" {
   type = list
   default = ["server1","server2","server3"]
}


resource "aws_cloudwatch_metric_alarm" "ec2-disk-space-warning-for" {
  for_each            = toset(var.vms)
  alarm_name          = "${each.key}-ec2-disk-space-warning"
  comparison_operator = "GreaterThanThreshold"
  evaluation_periods  = "1"
  metric_name         = "disk_used_percent"
  namespace           = "CWAgent"
  statistic           = "Average"
  period              = 60
  dimensions = {
    path   = "/"
    fstype = "xfs"
    host   = each.key
    device = "xvda1"
  }
}

如果您的自定义指标不存在,警报将不起作用,但我假设这些指标正在运行且设置正确。

,

这终于对我有用

locals {
  my_list = [
    "server1","server3","server4"
  ]
}

resource "aws_cloudwatch_metric_alarm" "ec2-disk-space-warning" {
  for_each            = toset(local.my_list)
  alarm_name          = "ec2-disk-space-warning-for-${each.key}"
  comparison_operator = "GreaterThanThreshold"
  evaluation_periods  = "1"
  metric_name         = "disk_used_percent"
  namespace           = "CWAgent"
  dimensions = {
    path   = "/"
    fstype = "xfs"
    host   = each.key
    device = "xvda1"
  }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。