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 | 组 + 预热池的总容量总和 |
同一个合法指标列表同时被EnableMetricsCollectionQuery、DisableMetricsCollectionQuery和EnabledMetric三个模型结构复用(见 service-2.json 与 service-2.json),因此上述 20 个名称也是enable-metrics-collection、disable-metrics-collection命令--metrics参数的合法取值。示例文档生成的年代早于 Warm Pool 功能,输出中未包含这些新指标属于正常现象;在实际运行当前版本 CLI 时,返回的Metrics列表应以线上服务返回为准。
Granularities:唯一合法的采集粒度
Granularities数组仅有一个元素:
"Granularities": [ { "Granularity": "1Minute" } ]模型定义 service-2.json(MetricGranularityType)明确说明:当前唯一合法值是1Minute,即 Auto Scaling 组每分钟向 CloudWatch 上报一次聚合数据。这一约束同样体现在EnableMetricsCollectionQuery的Granularity字段文档中(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; - 输出结构包含
Metrics(MetricCollectionTypes列表)与Granularities(MetricGranularityTypes列表)两个成员(service-2.json); - 唯一可能返回的错误为
ResourceContentionFault——当服务端因资源争用而暂时无法处理请求时抛出,属于可重试的瞬时错误; - 响应外层使用
DescribeMetricCollectionTypesResult包装(resultWrapper),这也是 CLI 默认输出 JSON 中两个顶级键名Metrics、Granularities的直接来源。
该操作在 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 中MetricCollectionType、EnabledMetric等结构),保证了命令间参数的一致性。
【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考