如何让 CodeDeploy Blue/Green 为自定义指标创建 CloudWatch 警报?

Posted

技术标签:

【中文标题】如何让 CodeDeploy Blue/Green 为自定义指标创建 CloudWatch 警报?【英文标题】:How to make CodeDeploy Blue/Green create CloudWatch alarms for custom metrics? 【发布时间】:2020-12-20 21:50:13 【问题描述】:

我正在使用 CloudWatch 代理来创建磁盘使用情况、内存使用情况、cpu 和其他一些指标的指标。我想使用 "AutoScalingGroupName":"$aws:AutoScalingGroupName" 根据自动缩放组聚合指标。

但是,我将 Blue/Green 部署与 CodeDeploy 结合使用,这会创建 Autoscaling Group 的副本。我最初为自动缩放组上的聚合所做的警报已经消失,我无法在我的仪表板中放置一个显示平均 cpu、内存等的小部件。

我的快速解决方案是使用设置为硬编码值的自定义append_dimension,并在其上聚合维度。 AWS 是否提供了一种我不知道的自动化方式?

【问题讨论】:

append_dimensions 也是我能想到的唯一方法。即使使用其他指标平台,如 InfluxDB/Telegraf,您也必须指定一些自定义标签,如服务/层。 【参考方案1】:

我没有使用 AWS 控制台的上述场景的经验。

但是,由于我主要使用 Terraform(基础设施即代码),您可以这样使用:

dimensions = 
    AutoScalingGroupName = tolist(aws_codedeploy_deployment_group.autoScalingGroup.autoscaling_groups)[0]
  

将其转换为列表的原因 - 的输出

aws_codedeploy_deployment_group.asg.autoscaling_groups

是一个设定值,你可以在输出编码部署组自动缩放组的值时看到它——它使用toset函数。 CloudWatch 指标警报的指标维度需要string。因此,需要将 set 类型(无序)转换为 list 类型,以便您可以访问自动缩放组的第一个元素 - 这是 codedeploy 新创建的自动缩放组副本。

【讨论】:

以上是关于如何让 CodeDeploy Blue/Green 为自定义指标创建 CloudWatch 警报?的主要内容,如果未能解决你的问题,请参考以下文章

PCL进阶:点云渲染渐变赋色(Blue>Green>Yellow>Red)

计算数组数组中的项目

如何将n个字符串元素的数组过采样为m个字符串元素的数组

AWS ECS Blue/Green CodePipeline:尝试读取图像工件时出现异常

Unity图集优化原理

使用R中的for循环内的if语句将字符串组折叠成一个字符串