如何解决CW 警报维度中的参考实例 ID - Terraform
我正在向日志记录管道添加警报/监控。具体来说,我正在为 Auto Scaling 组中的 EC2 实例创建在 50+% 磁盘/内存利用率时触发的 CW 警报。在“workers”模块目录下创建ASG,并在“cloudwatch”模块目录下输出伸缩组名称,供创建告警时参考。
我正在努力理解有关创建此警报的一些事情:
- 在创建警报时是否必须引用指标的所有维度?
- 如果是这样,当 TF 文件中仅定义目标组/缩放组时,我如何引用 InstanceID?
在“警报”父模块中:
resource "aws_cloudwatch_metric_alarm" "pipeline_DiskUtilization" {
alarm_name = "pipeline-disk-alarm"
comparison_operator = "GreaterThanOrEqualToThreshold"
evaluation_periods = "5"
metric_name = "disk_used_percent"
namespace = "CWAgent"
period = "60"
statistic = "Average"
threshold = "50"
dimensions = {
AutoScalingGroupName = var.scaling_name
}
alarm_description = "This metric monitors ec2 disk utilization"
alarm_actions = [var.scaling_group]
}
在“workers”父模块中:
resource "aws_autoscaling_group" "pipeline-scaling-group" {
name = "pipeline-worker-asg"
vpc_zone_identifier = var.operating_subnets
desired_capacity = 2
max_size = 4
min_size = 2
target_group_arns = [var.target_group]
launch_template {
id = aws_launch_template.pipeline-worker-launch-template.id
version = "$Latest"
}
}
解决方法
在创建警报时是否必须引用指标的所有维度?
是的。
如果是这样,当 TF 文件中只定义了目标组/缩放组时,我如何引用 InstanceID?
您不能这样做(很容易)来自 TF。一旦您使用 ASG 管理您的实例,它们就不受您的控制,因此您无法直接获取它们的 ID。你也不应该这样做,即使你可以。 ASG 中的实例应被视为组(因此,Auto Scaling 组名称中有“组”),而不是单个实体。
即使您可以(轻松)做到这一点,您将如何管理这些警报? ASG 可以随时更换您的实例,一段时间后会留下大量死警报,而新实例没有任何警报。
管理此问题的正确方法是在您的 TF 之外通过 CloudWatch 事件规则。您必须通过 ASG 检测实例的添加和终止。任何此类操作都会触发 lambda 函数,该函数会根据 ASG 事件动态添加/删除警报。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。