AWS CLI Autoscaling describe-metric-collection-types 命令详解:查询 Auto Scaling 组可用的 CloudWatch 指标采集类型
2026/9/15 14:37:20 网站建设 项目流程

AWS CLI Autoscaling describe-metric-collection-types 命令详解:查询 Auto Scaling 组可用的 CloudWatch 指标采集类型

【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli

aws autoscaling describe-metric-collection-types是 AWS CLI 中用于查询 Amazon EC2 Auto Scaling 全部可用 CloudWatch 组级指标(group metrics)及其采集粒度(granularity)的命令。本指南围绕 AWS CLI 官方示例文档(describe-metric-collection-types.rst)展开,完整解析命令输出中的每一项指标含义、粒度约束,并结合仓库内 API 模型定义(service-2.json)与配套的 enable/disable 示例,帮助读者在启用指标采集、排查监控缺失时做到心中有数。

命令概览:一条命令摸清 Auto Scaling 组可采集的全部指标

describe-metric-collection-types是只读查询命令,不需要任何参数,调用后返回两个数组:

  • Metrics:当前账户/区域中 Auto Scaling 组支持采集的组级指标名称列表;
  • Granularities:指标聚合数据上报 CloudWatch 的粒度(频率)列表,当前唯一合法值为1Minute(每分钟)。

其命令行形式非常简洁(详见 describe-metric-collection-types.rst):

aws autoscaling describe-metric-collection-types

该命令通常在以下场景中使用:

  • 在编写enable-metrics-collection脚本前,先确认指标名称拼写是否合法;
  • 排查"为什么某个指标没有数据"时,确认该指标是否属于 Auto Scaling 组可采集的指标集合;
  • 编写自动化监控初始化脚本时,动态获取指标清单,避免硬编码导致指标名过期。

输出字段深度解析

Metrics:组级指标的完整清单

示例文档给出的输出如下:

{ "Metrics": [ { "Metric": "GroupMinSize" }, { "Metric": "GroupMaxSize" }, { "Metric": "GroupDesiredCapacity" }, { "Metric": "GroupInServiceInstances" }, { "Metric": "GroupInServiceCapacity" }, { "Metric": "GroupPendingInstances" }, { "Metric": "GroupPendingCapacity" }, { "Metric": "GroupTerminatingInstances" }, { "Metric": "GroupTerminatingCapacity" }, { "Metric": "GroupStandbyInstances" }, { "Metric": "GroupStandbyCapacity" }, { "Metric": "GroupTotalInstances" }, { "Metric": "GroupTotalCapacity" } ], "Granularities": [ { "Granularity": "1Minute" } ] }

这些指标可分为两组语义:

实例数量类指标(Instances),描述 Auto Scaling 组生命周期各阶段的实际实例数:

指标名含义
GroupMinSize组的最小容量(min size 配置值)
GroupMaxSize组的最大容量(max size 配置值)
GroupDesiredCapacity组的期望容量(desired capacity 配置值)
GroupInServiceInstances处于InService状态的实例数
GroupPendingInstances正在启动(挂起)进入服务状态的实例数
GroupTerminatingInstances正在终止的实例数
GroupStandbyInstances处于Standby(备用)状态的实例数
GroupTotalInstances组内实例总数

容量数量类指标(Capacity),以"实例份额"为单位描述组容量,适合存在按比例分配容量(如多个实例类型混合、备用容量)的组:

指标名含义
GroupInServiceCapacity处于InService状态的容量
GroupPendingCapacity挂起(启动中)的容量
GroupTerminatingCapacity正在终止的容量
GroupStandbyCapacity处于Standby状态的容量
GroupTotalCapacity组内总容量

需要特别指出的是:示例文档输出的 13 个指标并非当前模型定义中的完整集合。在仓库的 Auto Scaling API 模型 service-2.json(MetricCollectionType结构)中,实际列出了20 个合法指标,除上述 13 个外,还包含 Warm Pool(预热池)相关指标:

指标名含义
WarmPoolDesiredCapacity预热池的期望容量
WarmPoolWarmedCapacity预热池中已预热实例的容量
WarmPoolPendingCapacity预热池中挂起(初始化中)的容量
WarmPoolTerminatingCapacity预热池中正在终止的容量
WarmPoolTotalCapacity预热池总容量
GroupAndWarmPoolDesiredCapacity组 + 预热池的期望容量总和
GroupAndWarmPoolTotalCapacity组 + 预热池的总容量总和

同一个合法指标列表同时被EnableMetricsCollectionQueryDisableMetricsCollectionQueryEnabledMetric三个模型结构复用(见 service-2.json 与 service-2.json),因此上述 20 个名称也是enable-metrics-collectiondisable-metrics-collection命令--metrics参数的合法取值。示例文档生成的年代早于 Warm Pool 功能,输出中未包含这些新指标属于正常现象;在实际运行当前版本 CLI 时,返回的Metrics列表应以线上服务返回为准。

Granularities:唯一合法的采集粒度

Granularities数组仅有一个元素:

"Granularities": [ { "Granularity": "1Minute" } ]

模型定义 service-2.json(MetricGranularityType)明确说明:当前唯一合法值是1Minute,即 Auto Scaling 组每分钟向 CloudWatch 上报一次聚合数据。这一约束同样体现在EnableMetricsCollectionQueryGranularity字段文档中(service-2.json)。因此启用指标采集时,--granularity参数固定传"1Minute"即可,无需自行猜测其他频率值。

底层原理:从 CLI 命令到 API 模型

describe-metric-collection-types不是 CLI 客户端本地实现的逻辑,而是对 Amazon EC2 Auto Scaling 服务端 API 的透传调用。在仓库的 botocore 服务模型中(service-2.json),该操作定义如下:

  • 协议:POST /(AWS Query 协议,请求体经表单编码);
  • 无输入参数,仅定义输出结构DescribeMetricCollectionTypesAnswer
  • 输出结构包含MetricsMetricCollectionTypes列表)与GranularitiesMetricGranularityTypes列表)两个成员(service-2.json);
  • 唯一可能返回的错误为ResourceContentionFault——当服务端因资源争用而暂时无法处理请求时抛出,属于可重试的瞬时错误;
  • 响应外层使用DescribeMetricCollectionTypesResult包装(resultWrapper),这也是 CLI 默认输出 JSON 中两个顶级键名MetricsGranularities的直接来源。

该操作在 AWS CLI 官方示例集 examples-1.json 中注册为autoscaling-describe-metric-collection-types-1,其展示的 8 个Metrics输出与 .rst 文档同源,可交叉验证命令与示例的一致性。由于模型中没有为该操作声明分页令牌(无 NextToken),一次调用即可获得完整清单,无需循环翻页。

实战联动:查询之后如何启用与停用指标采集

查询指标清单的最终目的是配合采集开关使用。仓库中提供了两个配套示例文档:

启用全部指标采集(enable-metrics-collection.rst):

aws autoscaling enable-metrics-collection \ --auto-scaling-group-name my-asg \ --granularity "1Minute"

该命令不产生任何输出。按照模型定义(service-2.json),--auto-scaling-group-name--granularity均为必填项;当只指定Granularity而不指定--metrics时,全部指标都会被启用

只采集指定指标

aws autoscaling enable-metrics-collection \ --auto-scaling-group-name my-asg \ --metrics GroupDesiredCapacity --granularity "1Minute"

--metrics可传多个指标名(以空格分隔),取值必须落在上文 20 个合法名称之内。

停用指定指标(disable-metrics-collection.rst):

aws autoscaling disable-metrics-collection \ --auto-scaling-group-name my-asg \ --metrics GroupDesiredCapacity

注意:disable-metrics-collection--auto-scaling-group-name为必填;若省略--metrics,则停用该组全部指标采集(见 service-2.json)。日常运维中应谨慎使用"省略--metrics"的写法,以免误关监控。

常见疑问与使用建议

  • 为什么Metrics里没有实例级指标?describe-metric-collection-types返回的是组级(group-level)指标。实例级指标(如 CPUUtilization、NetworkIn)由 EC2 实例的 CloudWatch 监控独立提供,不在 Auto Scaling 组指标采集范畴内,属于正常现象。
  • 1Minute粒度是否意味着实时?每分钟上报的是聚合数据,CloudWatch 控制台与GetMetricStatistics查询时存在一定的数据延迟窗口,做告警阈值设计时应预留缓冲。
  • 输出中的指标顺序没有规律,脚本解析时应按指标名匹配,而不是依赖数组下标。
  • 示例输出与最新服务返回可能不一致:示例文档是历史快照(不含 Warm Pool 指标),生产脚本应以命令实时输出为准,可将其作为"合法指标白名单"动态校验--metrics参数,避免拼写错误导致ValidationError
  • 写自动化脚本时,建议将本命令作为enable-metrics-collection的前置校验步骤:先查询合法清单,再构造--metrics参数,从而在 Auto Scaling 服务增加新指标(如 Warm Pool 指标)时自动获得兼容性。

至此,从"有哪些指标可采集"到"如何精确开关采集",已形成完整的操作闭环:describe-metric-collection-types负责提供权威清单,enable-metrics-collection/disable-metrics-collection负责按清单实施,三者共用同一套指标命名空间(见 service-2.json 中MetricCollectionTypeEnabledMetric等结构),保证了命令间参数的一致性。

【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询