AWS CLI autoscaling enable-metrics-collection 命令详解:为 Auto Scaling 组开启 CloudWatch 指标收集
【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli
aws autoscaling enable-metrics-collection是 AWS CLI 中用于为指定 Auto Scaling 组(Auto Scaling Group,ASG)开启 CloudWatch 组级指标(group metrics)收集的核心命令。本文以当前仓库中的官方示例文档 enable-metrics-collection.rst 为主体,结合仓库内的服务模型定义、配套示例与关联命令,完整讲解命令的语法、参数、全部可选指标清单、执行结果验证方式,以及与之配套的关闭与查询操作,帮助你直接复制命令即可在生产环境中落地。
命令概览:一条命令,打开 ASG 的可观测性
Auto Scaling 组自身的伸缩行为(期望容量、实例数量变化等)默认不会以组级聚合指标的形式持续写入 CloudWatch。执行enable-metrics-collection后,Amazon EC2 Auto Scaling 会按指定的频率把聚合后的组级数据发送到 CloudWatch,供你后续在 CloudWatch 控制台查看,或配合 CloudWatch Alarms 设置阈值告警、驱动弹性伸缩策略。
该命令的使用形式如下:
aws autoscaling enable-metrics-collection \ --auto-scaling-group-name <group-name> \ --granularity "1Minute" \ [--metrics <metric1> <metric2> ...]参数说明:三个参数,两个必填
命令共有三个参数,其中--auto-scaling-group-name与--granularity为必填项。这一点可以直接从仓库的服务模型文件中得到印证:在 service-2.json 中,EnableMetricsCollectionQuery结构体将AutoScalingGroupName和Granularity标记为required。
| 参数 | 必填 | 说明 |
|---|---|---|
--auto-scaling-group-name | 是 | 要开启指标收集的 Auto Scaling 组名称,字符串最大长度 255(模型中的XmlStringMaxLen255)。 |
--granularity | 是 | Auto Scaling 向 CloudWatch 发送聚合数据的频率。唯一合法值是1Minute,即每 1 分钟发送一次聚合数据。 |
--metrics | 否 | 要开启的具体指标名称列表。省略该参数时,表示开启全部指标。 |
需要注意的关键行为:不传--metrics时开启所有指标;传了--metrics时只开启列表中指定的指标。这条规则同样写在服务模型文档注释中("If you specify Granularity and don't specify any metrics, all metrics are enabled")。
示例一:为 ASG 开启全部组级指标
当你不确定需要哪些指标,或希望获得最完整的组级视图时,直接省略--metrics,一次性开启所有指标即可。官方示例(enable-metrics-collection.rst)如下:
aws autoscaling enable-metrics-collection \ --auto-scaling-group-name my-asg \ --granularity "1Minute"要点:
my-asg需要替换为真实存在的 ASG 名称;--granularity "1Minute"表示 Auto Scaling 每分钟向 CloudWatch 推送一次聚合后的组级指标数据;- 该命令成功执行后不产生任何标准输出("This command produces no output"),这是判断命令是否成功的最直观依据——报错时终端才会出现异常信息。
示例二:只开启指定的某一个指标
如果你只需要关注某一个维度的变化(例如只关心当前期望容量),可以用--metrics精确指定,避免收集多余数据。官方示例(enable-metrics-collection.rst)如下:
aws autoscaling enable-metrics-collection \ --auto-scaling-group-name my-asg \ --metrics GroupDesiredCapacity --granularity "1Minute"要点:
--metrics后跟指标名称,可同时传多个,例如--metrics GroupDesiredCapacity GroupTotalInstances;- 这里只启用了
GroupDesiredCapacity这一个指标; - 同样地,命令成功执行后无输出。
可选指标全清单:13 个基础指标 + 7 个 Warm Pool 相关指标
enable-metrics-collection可选指标清单以服务模型为准。其中 13 个基础指标可以从配套示例 describe-metric-collection-types.rst 的完整输出中确认,Warm Pool 相关指标则进一步记录在 service-2.json 的Metrics参数文档中。
基础组级指标(13 个):
| 指标 | 含义 |
|---|---|
GroupMinSize | 组的最小容量 |
GroupMaxSize | 组的最大容量 |
GroupDesiredCapacity | 组的期望容量 |
GroupInServiceInstances | 处于 InService 状态的实例数 |
GroupInServiceCapacity | 处于 InService 状态的实例容量 |
GroupPendingInstances | 处于 Pending 状态的实例数 |
GroupPendingCapacity | 处于 Pending 状态的实例容量 |
GroupTerminatingInstances | 处于 Terminating 状态的实例数 |
GroupTerminatingCapacity | 处于 Terminating 状态的实例容量 |
GroupStandbyInstances | 处于 Standby 状态的实例数 |
GroupStandbyCapacity | 处于 Standby 状态的实例容量 |
GroupTotalInstances | 组内实例总数 |
GroupTotalCapacity | 组内实例总容量 |
Warm Pool 相关指标(7 个,来自服务模型):
WarmPoolDesiredCapacityWarmPoolWarmedCapacityWarmPoolPendingCapacityWarmPoolTerminatingCapacityWarmPoolTotalCapacityGroupAndWarmPoolDesiredCapacityGroupAndWarmPoolTotalCapacity
提示:你也可以用
aws autoscaling describe-metric-collection-types命令(示例见 describe-metric-collection-types.rst)实时查询当前区域支持的指标与粒度,其输出中的Granularities只有1Minute一项,与--granularity的唯一合法值保持一致。
验证与配套操作:查、开、关三步闭环
由于enable-metrics-collection无输出,推荐用describe-auto-scaling-groups验证指标是否已开启——返回结果中的EnabledMetrics字段会列出已启用的指标及其粒度。关闭指标则使用配套命令disable-metrics-collection,其官方示例见 disable-metrics-collection.rst:
aws autoscaling disable-metrics-collection \ --auto-scaling-group-name my-asg \ --metrics GroupDesiredCapacity关闭时的规则与开启时一致:--metrics指定关闭哪些指标,同样支持多个;省略--metrics则关闭该组全部指标收集。该命令同样无输出。
源码级佐证:命令在仓库中的完整定义
enable-metrics-collection并非手工拼装的命令,其行为完全由仓库内的服务模型驱动:
- 操作定义:在 service-2.json 中,
EnableMetricsCollection操作为POST /请求,输入结构为EnableMetricsCollectionQuery,唯一的错误类型是ResourceContentionFault(资源竞争时抛出,表示请求因 Auto Scaling 服务繁忙而失败,通常可稍后重试)。 - 参数结构:
EnableMetricsCollectionQuery(service-2.json)定义了上面表格中的三个参数,其中AutoScalingGroupName、Granularity为必填,Metrics为列表类型且可缺省。 - 官方示例数据:仓库的 examples-1.json 中记录了与示例文档对应的结构化示例,输入为
AutoScalingGroupName: "my-auto-scaling-group"、Granularity: "1Minute",说明该命令的典型用法就是"组名 + 1Minute 粒度"。
实战注意事项
- 粒度只有
1Minute一种:服务模型明确标注 "The only valid value is 1Minute",传入其他值会被视为非法参数。 - 选择性开启前先看清单:Warm Pool 相关指标仅在组配置了 Warm Pool 时有实际意义,普通场景下基础 13 项指标已足够。
- 指标已开启时重复执行:对已开启的指标重复执行同一命令是幂等操作,不会报错,可放心重跑。
- 错误处理:若遇到
ResourceContentionFault,代表 Auto Scaling 服务出现资源竞争,属于临时性错误,重试即可。 - IAM 权限:执行该命令需要具备对
autoscaling:EnableMetricsCollection的调用权限(即 IAM policy 中允许该 Action),权限不足时会收到 AccessDenied 类错误。
总结
aws autoscaling enable-metrics-collection是开启 Auto Scaling 组可观测性的第一块基石:一条命令配合1Minute粒度,即可让组级指标持续流入 CloudWatch。官方示例文档提供了"全量开启"与"定向开启"两种最常用的实战模式,配合describe-auto-scaling-groups验证、disable-metrics-collection关闭,你就能在仓库提供的命令集内完成指标收集的完整闭环。深入阅读 enable-metrics-collection.rst 及 service-2.json 中的模型定义,可以进一步掌握该命令的全部边界行为。
【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考