

# 分析、优化和降低 CloudWatch 成本
<a name="cloudwatch_billing"></a>

本部分介绍了 Amazon CloudWatch 功能如何产生成本。它还提供了可以帮助您分析、优化和降低 CloudWatch 成本的方法。在本部分中，我们在描述 CloudWatch 功能时有时会提及定价。有关定价的信息，请参阅 [Amazon CloudWatch 定价](https://aws.amazon.com/cloudwatch/pricing/?nc1=h_ls)。

**Topics**
+ [使用 Cost Explorer 分析 CloudWatch 成本和使用数据](#cloudwatch_billing_costs)
+ [使用 AWS 成本和使用情况报告 和 Athena 分析 CloudWatch 成本和使用数据](#cloudwatch_billing_billing_info)
+ [优化和降低 CloudWatch 指标的成本](#cloudwatch_billing_billing_metric)
+ [优化和降低 CloudWatch 警报的成本](#cloudwatch_billing_billing_alarms)
+ [优化和降低 CloudWatch Container Insights 的成本](#cloudwatch_billing_container-insights)
+ [优化和降低 CloudWatch 数据库洞察服务的成本](#cloudwatch_billing_database-insights)
+ [优化和降低 CloudWatch Logs 的成本](#cloudwatch_billing_billing_logs)

## 使用 Cost Explorer 分析 CloudWatch 成本和使用数据
<a name="cloudwatch_billing_costs"></a>

使用 AWS Cost Explorer，您可以可视化和分析 AWS 服务 一段时间内的成本和使用数据，包括 CloudWatch。有关更多信息，请参阅[开始使用 AWS Cost Explorer](https://aws.amazon.com/aws-cost-management/aws-cost-explorer/getting-started/)。

以下程序介绍如何使用 Cost Explorer 可视化和分析 CloudWatch 成本和使用数据。

### 可视化和分析 CloudWatch 成本和使用数据
<a name="visualize_cost_usage_data"></a>

1. 在 [https://console.aws.amazon.com/cost-management/home\$1/custom](https://console.aws.amazon.com/cost-management/home#/custom) 中登录 Cost Explorer 控制台。

1. 在 **FILTERS**（筛选条件）下，对于**Service**（服务），选择 **CloudWatch**。

1. 对于 **Group by**（分组依据），选择 **Usage Type**（使用类型）。您还可以按其他类别对结果进行分组，例如以下类别：
   +  ** API Operation **（API 操作）– 查看哪些 API 操作产生的成本最高。
   +  ** Region **（区域）– 查看哪些地区产生的成本最高。

下图显示了 CloudWatch 功能在六个月内产生的成本示例。

![\[AWS Cost Explorer 界面的屏幕截图，以条形图格式显示使用类型成本。\]](http://docs.aws.amazon.com/zh_cn/AmazonCloudWatch/latest/monitoring/images/ce.png)


要了解哪些 CloudWatch 功能产生的费用最高，请查看 `UsageType` 的值。例如，`EU-CW:GMD-Metrics` 表示 CloudWatch 批量 API 请求产生的成本。

**注意**  
`UsageType` 的字符串匹配特定的功能和区域。例如，`EU-CW:GMD-Metrics`（`EU`）的第一部分匹配欧洲（爱尔兰）区域，`EU-CW:GMD-Metrics`（`GMD-Metrics`）的第二部分匹配 CloudWatch 批量 API 请求。  
`UsageType` 的整个字符串可以格式化如下：`<Region>-CW:<Feature>` 或 `<Region>-<Feature>`。  
一些 CloudWatch 功能（例如日志和警报）也使用`Global`区域来识别免费套餐的用量。例如，`Global-DataScanned-Bytes` 表示免费的 CloudWatch Logs 数据摄取用量。  
为了增强可读性，本文档的表格中的 `UsageType` 字符串已缩短为字符串后缀。例如，`EU-CW:GMD-Metrics` 缩短为 `GMD-Metrics`。

下表包含每个 CloudWatch 功能的名称，列出了每个子功能的名称，并列出了 `UsageType` 的字符串。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonCloudWatch/latest/monitoring/cloudwatch_billing.html)

## 使用 AWS 成本和使用情况报告 和 Athena 分析 CloudWatch 成本和使用数据
<a name="cloudwatch_billing_billing_info"></a>

分析 CloudWatch 成本和使用数据的另一种方法是使用 AWS 成本和使用情况报告 和 Amazon Athena。AWS 成本和使用情况报告 包含一组全面的成本和使用数据。您可以创建跟踪费用和使用量的报告，并将这些报告发布到您选择的 S3 存储桶。您还可以从 S3 存储桶中下载和删除报告。有关更多信息，请参阅《AWS 成本和使用情况报告 用户指南》中的 [什么是 AWS 成本和使用情况报告？](https://docs.aws.amazon.com/cur/latest/userguide/what-is-cur.html)**。

**注意**  
使用 AWS 成本和使用情况报告 无任何费用。您只需在将报告发布到 Amazon Simple Storage Service（Amazon S3）时支付存储费用。有关更多信息，请参阅《AWS 成本和使用情况报告 用户指南》中的 [限额和限制](https://docs.aws.amazon.com/cur/latest/userguide/billing-cur-limits.html)**。

Athena 是一项查询服务，您可以将其与 AWS 成本和使用情况报告 结合使用来分析成本和使用数据。您可以在 S3 存储桶中查询报告，而无需先下载它们。有关更多信息，请参阅《Amazon Athena 用户指南》中的 [什么是 Amazon Athena？](https://docs.aws.amazon.com/athena/latest/ug/what-is.html)**。有关更多信息，请参阅《Amazon Athena 用户指南》中的[什么是 Amazon Athena？](https://docs.aws.amazon.com/athena/latest/ug/what-is.html)。有关定价的信息，请参阅 [Amazon Athena 定价](https://aws.amazon.com/athena/pricing/)。

以下程序描述了启用 AWS 成本和使用情况报告 并将该服务与 Athena 集成的过程。该程序包含两个可用于分析 CloudWatch 成本和使用数据的示例查询。

**注意**  
您可以使用本文档中的任何示例查询。本文档中的所有示例查询均基于数据库 ***costandusagereport***，且查询结果限定为 2025 年 4 月的数据记录。您可以更改此信息。但是，在运行查询之前，请确保数据库的名称与查询中的数据库名称匹配。

### 使用 AWS 成本和使用情况报告 和 Athena 分析成本和使用数据
<a name="analyze-with-athena"></a>

1. 启用 AWS 成本和使用情况报告。有关更多信息，请参阅《AWS 成本和使用情况报告 用户指南》中的 [创建成本和使用情况报告](https://docs.aws.amazon.com/cur/latest/userguide/cur-create.html)**。
**提示**  
创建报告时，确保选择 **Include resource IDs**（包含资源 ID）。否则，您的报告将不会包含列 `line_item_resource_id`。此行可帮助您在分析成本和使用数据时进一步确定成本。

1. 将 AWS 成本和使用情况报告 与 Athena 集成。有关更多信息，请参阅《AWS 成本和使用情况报告 用户指南》中的 [使用 CloudFormation 模板设置 Athena](https://docs.aws.amazon.com/cur/latest/userguide/use-athena-cf.html)**。

1. 查询您的成本和使用情况报告。

**Example 显示每月 CloudWatch 成本的 Athena 查询示例**  
您可以使用以下查询显示在给定月份中哪些 CloudWatch 功能产生的成本最高。  

```
SELECT 
CASE 
-- Metrics 
WHEN line_item_usage_type LIKE '%%MetricMonitorUsage%%' THEN 'Metrics (Custom, Detailed monitoring management portal EMF)' 
WHEN line_item_usage_type LIKE '%%Requests%%' THEN 'Metrics (API Requests)' 
WHEN line_item_usage_type LIKE '%%GMD-Metrics%%' THEN 'Metrics (Bulk API Requests)' 
WHEN line_item_usage_type LIKE '%%MetricStreamUsage%%' THEN 'Metric Streams'
-- Contributor Insights
WHEN line_item_usage_type LIKE '%%Contributor%%' THEN 'Contributor Insights'
-- Dashboard 
WHEN line_item_usage_type LIKE '%%DashboardsUsageHour%%' THEN 'Dashboards' 
-- Alarms 
WHEN line_item_usage_type LIKE '%%AlarmMonitorUsage%%' THEN 'Alarms (Standard)' 
WHEN line_item_usage_type LIKE '%%HighResAlarmMonitorUsage%%' THEN 'Alarms (High Resolution)' 
WHEN line_item_usage_type LIKE '%%MetricInsightAlarmUsage%%' THEN 'Alarms (Metrics Insights)' 
WHEN line_item_usage_type LIKE '%%CompositeAlarmMonitorUsage%%' THEN 'Alarms (Composite)' 
-- Container Insights with enhanced observability 
WHEN (line_item_usage_type LIKE '%%MetricsUsage%%' OR line_item_usage_type LIKE '%%ObservationUsage%%') THEN 'Container Insights (Enhanced Observability)'
-- Database Insights 
WHEN line_item_usage_type LIKE '%%DatabaseInsights%%' THEN 'Database Insights'
-- Logs 
WHEN line_item_usage_type LIKE '%%DataProcessing-Bytes%%' THEN 'Logs (Collect - Data Ingestion)' 
WHEN line_item_usage_type LIKE '%%DataProcessingIA-Bytes%%' THEN 'Infrequent Access Logs (Collect - Data Ingestion)' 
WHEN line_item_usage_type LIKE '%%DataProtection-Bytes%%' THEN 'Logs (Data Protection - Detect and Mask)' 
WHEN line_item_usage_type LIKE '%%TimedStorage-ByteHrs%%' THEN 'Logs (Storage - Archival)'
WHEN line_item_usage_type LIKE '%%DataScanned-Bytes%%' THEN 'Logs (Analyze - Logs Insights queries)' 
WHEN line_item_usage_type LIKE '%%Logs-LiveTail%%' THEN 'Logs (Analyze - Logs Live Tail)' 
-- Vended Logs 
WHEN line_item_usage_type LIKE '%%VendedLog-Bytes%%' THEN 'Vended Logs (Delivered to CW)' 
WHEN line_item_usage_type LIKE '%%VendedLogIA-Bytes%%' THEN 'Vended Infrequent Access Logs (Delivered to CW)' 
WHEN line_item_usage_type LIKE '%%FH-Egress-Bytes%%' THEN 'Vended Logs (Delivered to Data Firehose)' 
WHEN (line_item_usage_type LIKE '%%S3-Egress%%') THEN 'Vended Logs (Delivered to S3)'
-- Network Monitoring
WHEN line_item_usage_type LIKE '%%CWNMHybrid-Paid%%' THEN 'Network Monitor'
WHEN line_item_usage_type LIKE '%%InternetMonitor%%' THEN 'Internet Monitor'
-- Other 
WHEN line_item_usage_type LIKE '%%Application-Signals%%' THEN 'Application Signals' 
WHEN line_item_usage_type LIKE '%%Canary-runs%%' THEN 'Synthetics' 
WHEN line_item_usage_type LIKE '%%RUM-event%%' THEN 'RUM' 
ELSE 'Others' 
END AS UsageType, 
-- REGEXP_EXTRACT(line_item_resource_id,'^(?:.+?:){5}(.+)$',1) as ResourceID, 
SUM(CAST(line_item_usage_amount AS double)) AS UsageQuantity, SUM(CAST(line_item_unblended_cost AS decimal(16,8))) AS TotalSpend 
FROM 
costandusagereport 
WHERE product_product_name = 'AmazonCloudWatch' 
AND year='2025'
AND month='4' 
AND line_item_line_item_type NOT IN ('Tax','Credit','Refund','EdpDiscount','Fee','RIFee') 
-- AND line_item_usage_account_id = '123456789012' – If you want to filter on a specific account, you can remove this comment at the beginning of the line and specify an AWS account. 
GROUP BY 
1 
ORDER BY TotalSpend DESC, 
UsageType;
```

**Example 显示 CloudWatch 各功能产生成本的 Athena 查询示例**  
您可以使用以下查询显示 `UsageType` 和 `Operation` 的结果。这向您展示了 CloudWatch 功能是如何产生成本的。结果还显示了 `UsageQuantity` 和 `TotalSpend` 的值，以便您可以查看总使用成本。  
有关 `UsageType` 的更多信息，将以下一行添加到此查询：  
 `line_item_line_item_description`   
此行创建一个名为 ***Description***（描述）的列。

```
SELECT
bill_payer_account_id as Payer,
line_item_usage_account_id as LinkedAccount,
line_item_usage_type AS UsageType,
line_item_operation AS Operation,
line_item_resource_id AS ResourceID,
SUM(CAST(line_item_usage_amount AS double)) AS UsageQuantity,
SUM(CAST(line_item_unblended_cost AS decimal(16,8))) AS TotalSpend
FROM
costandusagereport 
WHERE
product_product_name = 'AmazonCloudWatch'
AND year='2025' 
AND month='4' 
AND line_item_line_item_type NOT IN ('Tax','Credit','Refund','EdpDiscount','Fee','RIFee')
GROUP BY
bill_payer_account_id,
line_item_usage_account_id,
line_item_usage_type,
line_item_resource_id,
line_item_operation
```

## 优化和降低 CloudWatch 指标的成本
<a name="cloudwatch_billing_billing_metric"></a>

许多 AWS 服务，例如 Amazon Elastic Compute Cloud（Amazon EC2）、Amazon S3 和 Amazon Data Firehose 等会自动向 CloudWatch 免费发送指标。但是，按以下类别分组的指标可能会产生额外费用：
+ ***Custom metrics, detailed monitoring, and embedded metrics**（自定义指标、详细监控和嵌入式指标）*
+ ***API 请求***
+ ***指标流***

有关更多信息，请参阅[使用 Amazon CloudWatch 指标](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html)。

### 自定义指标
<a name="w2aac11c11b9"></a>

您可以创建自定义指标以按任何顺序和任何速率组织数据点。

所有自定义指标均按小时按比例分配。它们只有在发送到 CloudWatch 时才会计量。有关指标定价的信息，请参阅 [Amazon CloudWatch 定价](https://aws.amazon.com/cloudwatch/pricing/?nc1=h_ls)。

下表列出了 CloudWatch 指标的相关子功能的名称。该表包含 `UsageType` 和 `Operation` 的字符串，它可以帮助您分析和确定与指标相关的成本。

**注意**  
要在使用 Athena 查询成本和使用数据时获得下表中列出的指标的更多详细信息，请将 `Operation` 的字符串与为 `line_item_operation` 显示的结果匹配。


| *CloudWatch 子功能* | `UsageType` | `Operation` | 用途 | 
| --- | --- | --- | --- | 
|  *自定义指标*  |  `MetricMonitorUsage`  |  `MetricStorage`  |  自定义指标  | 
| *详细监控* | `MetricMonitorUsage` | `MetricStorage:AWS/{Service}` | 详细监控 | 
| *嵌入式指标* | `MetricMonitorUsage` | `MetricStorage:AWS/Logs-EMF` | 日志嵌入式指标 | 
| *日志筛选条件* | `MetricMonitorUsage` | `MetricStorage:AWS/CloudWatchLogs` | 日志组指标筛选条件 | 

### 详细监控
<a name="w2aac11c11c11"></a>

CloudWatch 具有两种监控类型：
+  ***基本监控*** 

  基本监控是免费的，并自动为支持该功能的所有 AWS 服务 启用。
+  ***详细监控*** 

  详细监控会产生成本，并添加不同的增强功能，具体取决于 AWS 服务。对于支持详细监控的每个 AWS 服务，您可以选择是否为该服务启用它。有关更多信息，请参阅[基本和详细监控](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch-metrics-basic-detailed.html)。

**注意**  
其他 AWS 服务 支持详细监控，可能使用其他名称引用此功能。例如，对 Amazon S3 的详细监控称为***request metrics***（请求指标）。

与自定义指标类似，详细监控按小时按比例分配，并且仅在将数据发送到 CloudWatch 时计量。详细监控根据发送到 CloudWatch 的指标数量生成成本。为降低成本，请仅在必要时启用详细监控。有关详细监控定价方式的信息，请参阅 [Amazon CloudWatch 定价](https://aws.amazon.com/cloudwatch/pricing/?nc1=h_ls)。

 ***Example: Athena query***（示例：Athena 查询） 

您可以使用以下查询显示哪些 EC2 实例已启用详细监控。

```
SELECT
bill_payer_account_id as Payer,
line_item_usage_account_id as LinkedAccount,
line_item_usage_type AS UsageType,
line_item_operation AS Operation,
line_item_resource_id AS ResourceID,
SUM(CAST(line_item_usage_amount AS double)) AS UsageQuantity,
SUM(CAST(line_item_unblended_cost AS decimal(16,8))) AS TotalSpend
FROM
costandusagereport 
WHERE
product_product_name = 'AmazonCloudWatch'
AND year='2025' 
AND month='4' 
AND line_item_operation='MetricStorage:AWS/EC2'
AND line_item_line_item_type NOT IN ('Tax','Credit','Refund','EdpDiscount','Fee','RIFee')
GROUP BY
bill_payer_account_id,
line_item_usage_account_id,
line_item_usage_type,
line_item_resource_id,
line_item_operation,
line_item_line_item_description
ORDER BY line_item_operation
```

### 嵌入式指标
<a name="w2aac11c11c13"></a>

借助 CloudWatch 嵌入式指标格式，您可以将应用程序数据作为日志数据提取，以便生成可操作的指标。有关更多信息，请参阅[采用 CloudWatch 嵌入式指标格式摄取高基数日志并生成指标](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Embedded_Metric_Format.html)。

嵌入式指标会根据摄取的日志数量、存档的日志数和生成的自定义指标的数量产生成本。

下表列出了 CloudWatch 嵌入式指标格式的相关子功能的名称。该表包含 `UsageType` 和 `Operation` 的字符串，它可以帮助您分析和确定成本。


| *CloudWatch 子功能* | `UsageType` | `Operation` | 用途 | 
| --- | --- | --- | --- | 
|  *自定义指标*  |  `MetricMonitorUsage`  |  `MetricStorage:AWS/Logs-EMF`  | 日志嵌入式指标 | 
|  *日志摄取*  |  `DataProcessing-Bytes`  |  `PutLogEvents`  | 将一批日志事件上传到指定的日志组或日志流 | 
|  *日志存档*  |  `TimedStorage-ByteHrs`  |  `HourlyStorageMetering`  | 在 CloudWatch Logs 中存储每小时日志和每字节日志 | 

要分析成本，请结合使用 AWS 成本和使用情况报告 和 Athena，以便您可以确定哪些指标正在产生成本，并确定成本是如何产生的。

要充分利用 CloudWatch 嵌入式指标格式产生的成本，请避免基于高基数维度创建指标。这样，CloudWatch 就不会为每个唯一的维度组合创建自定义指标。有关更多信息，请参阅[维度](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Dimension)。

### API 请求
<a name="w2aac11c11c15"></a>

CloudWatch 具有以下类型的 API 请求：
+  ***API requests***（API 请求） 
+  ***Bulk (Get)***（批量（获取）） 
+  ***Contributor Insights*** 
+  ***Bitmap image snapshot***（位图图像快照） 

API 请求会根据请求类型和请求的指标数量生成成本。

下表列出了 API 请求的类型并包含 `UsageType` 和 `Operation` 的字符串，它可以帮助您分析和确定与 API 相关的成本。


| *API 请求类型* | `UsageType` | `Operation` | 用途 | 
| --- | --- | --- | --- | 
| API 请求 | `Requests` | `GetMetricStatistics` | 检索指定指标的统计数据 | 
|  | `Requests` | `ListMetrics` | 列出指定的指标 | 
|  | `Requests` | `PutMetricData` | 将指标数据点发布到 CloudWatch | 
|  | `Requests` | `GetDashboard` | 显示指定控制面板的详细信息 | 
|  | `Requests` | `ListDashboards` | 列出您账户中的控制面板 | 
|  | `Requests` | `PutDashboard` | 创建或更新控制面板 | 
|  | `Requests` | `DeleteDashboards` | 删除所有指定的控制面板 | 
| 批量（获取） | `GMD-Metrics` | `GetMetricData` | 检索 CloudWatch 指标值 | 
| Contributor Insights | `GIRR-Metrics` | `GetInsightRuleReport` | 返回由 Contributor Insights 规则收集的时间序列数据  | 
| 位图图像快照 | `GMWI-Metrics` | `GetMetricWidgetImage` | 将一个或多个 CloudWatch 指标的图表快照作为位图图像检索  | 

要分析成本，请使用 Cost Explorer，并按 ***API Operation***（API 操作）对结果进行分组。

账单控制台将通用 API 请求归类在 UsageType *Requests* 项下。费用标准为*每 1,000 次请求 X.XX 美元 - [区域]*。该费率适用于超出免费套餐额度后，所有归类为 UsageType Requests 的请求，并采用聚合计费方式。

API 请求的成本各不相同，当您的 API 调用次数超过根据 AWS 免费套餐限制提供给您的 API 调用次数时，会产生费用。

**注意**  
只有 UsageType *Requests* 类的 API 请求会计入 AWS 免费套餐额度。任何其他 UsageType 的 API 请求都将从首次调用开始计费。有关更多信息，请参阅《AWS Billing 用户指南》中的 [使用 AWS 免费套餐](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/billing-free-tier.html)**。

通常会增加成本的 API 请求是 `Put` 和 `Get` 请求。

要监控 API 请求源并识别账户中的用户，请在 CloudTrail 中启用数据事件并使用以下任一方法分析记录的事件：
+ 配合 Log Insights 使用 Amazon CloudWatch Logs
+ 配合 Amazon Athena 使用 Amazon S3

**注意**  
跟踪和事件数据存储不会自动记录数据事件。记录数据事件会产生额外成本。有关更多信息，请参阅[AWS CloudTrail定价](https://aws.amazon.com/cloudtrail/pricing/)。

有关更多信息，请参阅 [Logging data events](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html) 和 [ Identifying resources driving CloudWatch GetMetricData charges using AWS CloudTrail](https://aws.amazon.com/blogs/mt/identifying-resources-driving-amazon-cloudwatch-getmetricdata-charges-using-aws-cloudtrail/)。

***`API calls not incurring charges`***

在 CloudWatch 中记录 CloudWatch 数据事件时，可能会看到比自己发起的调用更多的调用。这是因为在 CloudTrail 中记录 CloudWatch 数据事件会捕获来自内部组件的 API 操作。内部组件调用不会产生 CloudWatch 费用。但是，这些事件会计入 CloudTrail 事件记录总数，可能会影响 CloudTrail 费用。

 例如，。CloudTrail 会记录监控账户为从源账号获取数据而发起的 GetMetricData 调用，以及 CloudWatch 控制面板为刷新小部件数据而自动触发的 GetMetricData 调用。这些 API 调用不会产生 CloudWatch 费用。

***`PutMetricData`***

每个 CloudWatch `PutMetricData` API 调用都会产生费用。频繁调用会显著增加成本，在大规模监控场景下尤其如此。要降低成本，可以考虑在每次 API 调用中批量处理多个指标或调整监控频率。有关更多信息，请参阅 *Amazon CloudWatch API 参考*中的 [PutMetricData](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_PutMetricData.html)。

要最大限度地利用 `PutMetricData` 产生的成本，将更多数据批量发送到您的 API 调用中。根据您的使用案例，考虑使用 CloudWatch Logs 或 CloudWatch 嵌入式指标格式来注入指标数据。有关更多信息，请参阅以下资源：
+ 《Amazon CloudWatch Logs 用户指南》**中的 [What is Amazon CloudWatch Logs?](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html)
+ [采用 CloudWatch 嵌入式指标格式摄取高基数日志并生成指标](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Embedded_Metric_Format.html)
+ [利用 Amazon CloudWatch 嵌入式自定义指标降低成本并关注我们的客户](https://aws.amazon.com/blogs/mt/lowering-costs-and-focusing-on-our-customers-with-amazon-cloudwatch-embedded-custom-metrics/) 

***`GetMetricData`***

CloudWatch `GetMetricData` API 操作也会显著增加成本。第三方监控工具在频繁拉取数据生成洞察时，往往也会增加成本。要了解有关定价和 `GetMetricData` 最佳使用实践的更多信息，请参阅《Amazon CloudWatch API Reference》**中的 [GetMetricData](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html)。

要降低 `GetMetricData` 产生的成本，请考虑只提取受监控和使用的数据，或者考虑减少提取数据的频率。根据您的使用案例，您可能会考虑使用指标流，而不是 `GetMetricData`，这样您就可以以更低的成本将数据近乎实时地推送给第三方。有关更多信息，请参阅以下资源：
+ [使用指标流](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Metric-Streams.html)
+ [CloudWatch 指标流 - 将 AWS 指标实时发送给合作伙伴和您的应用程序](https://aws.amazon.com/blogs/aws/cloudwatch-metric-streams-send-aws-metrics-to-partners-and-to-your-apps-in-real-time/)

***`GetMetricStatistics`***

根据您的使用案例，您可能会考虑使用 `GetMetricStatistics` 而不是 `GetMetricData`。使用 `GetMetricData`，您可以快速大规模地检索数据。但是，`GetMetricStatistics` 包含在 AWS 免费套餐限制下，最多一百万个 API 请求，如果您不需要在每次调用时检索那么多的指标和数据点，这可以帮助您降低成本。有关更多信息，请参阅以下资源：
+  *Amazon CloudWatch API 参考*中的 [GetMetricStatistics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricStatistics.html) 
+  [我应该使用 GetMetricData 还是 GetMetricStatistics？](https://aws.amazon.com/premiumsupport/knowledge-center/cloudwatch-getmetricdata-api/) 

**注意**  
外部调用者进行 API 调用。对于 CloudTrail 数据事件支持的 API（例如 **GetMetricData** 和 **GetMetricWidgetImage**），您可以使用 CloudTrail 来识别排名靠前的 CloudWatch API 调用者，并有可能减少或识别意外调用。有关更多信息，请参阅[如何使用 CloudTrail 分析您的 CloudWatch API 用量](https://community.aws/content/2iyFpJMy6oRlAXFgAL1dbJLUXbh/how-to-use-cloudwatch-api-with-cloudtrail)。对于 CloudTrail 不支持的其他 CloudWatch API，您可以向 CloudWatch 团队提出技术支持请求并询问有关这些 API 的信息。有关创建技术支持请求的信息，请参阅[如何从 AWS 获得技术支持？](https://aws.amazon.com/de/premiumsupport/knowledge-center/get-aws-technical-support/) 

### CloudWatch metric streams（CloudWatch 指标流）
<a name="w2aac11c11c17"></a>

借助 CloudWatch 指标流，您可以将指标持续发送到 AWS 目标和第三方服务提供商目标。

指标流根据指标更新的数量产生成本。指标更新始终包括以下统计数据的值：
+ `Minimum`
+ `Maximum`
+ `Sample Count`
+  `Sum` 

有关更多信息，请参阅[可以流式传输的统计数据](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-metric-streams-statistics.html)。

要分析 CloudWatch 指标流产生的成本，请结合使用 AWS 成本和使用情况报告 与 Athena。通过此方式，您可以确定哪些指标正在产生成本，并确定成本是如何产生的。

 ***Example: Athena query***（示例：Athena 查询） 

您可以使用以下查询通过 Amazon 资源名称（ARN）跟踪哪些指标流产生成本。

```
SELECT
SPLIT_PART(line_item_resource_id,'/',2) AS "Stream Name",
line_item_resource_id as ARN,
SUM(CAST(line_item_unblended_cost AS decimal(16,2))) AS TotalSpend
FROM
costandusagereport 
WHERE
product_product_name = 'AmazonCloudWatch'
AND year='2025' 
AND month='4' 
AND line_item_line_item_type NOT IN ('Tax','Credit','Refund','EdpDiscount','Fee','RIFee')
-- AND line_item_usage_account_id = '123456789012' – If you want to filter on a specific account, you can
remove this comment at the beginning of the line and specify an AWS account.
AND line_item_usage_type LIKE '%%MetricStreamUsage%%'
GROUP BY line_item_resource_id
ORDER BY TotalSpend DESC
```

要降低 CloudWatch 指标流产生的成本，请仅流式传输能为您带来业务价值的指标。您还可以停止或暂停任何未使用的指标流。

## 优化和降低 CloudWatch 警报的成本
<a name="cloudwatch_billing_billing_alarms"></a>

通过 CloudWatch 告警，您可以创建基于单个指标的告警、基于 Metrics Insights 查询的告警以及监视其他告警的复合告警。

**注意**  
指标和复合告警的成本按小时按比例分配。只有当您的告警存在时，您才会产生告警成本。为了优化成本，请务必不要遗留配置错误的警报或低值警报。为此，您可以自动清理不再需要的 CloudWatch 警报。有关更多信息，请参阅 [Automating Amazon CloudWatch Alarm Cleanup at Scale](https://aws.amazon.com/blogs/mt/automating-amazon-cloudwatch-alarm-cleanup-at-scale/) 

### 指标警报
<a name="metric-alarms"></a>

指标告警具有以下分辨率设置：
+  **Standard**（标准）（每 60 秒评估一次） 
+  **High resolution**（高分辨率）（每 10 秒评估一次） 

创建指标告警时，成本基于告警的分辨率设置和告警引用的指标数。例如，引用单项指标的指标告警，每小时产生一个告警指标成本。有关更多信息，请参阅[使用 Amazon CloudWatch 告警](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Alarms.html)。

如果创建的指标告警包含引用多个指标的指标数学表达式，则在指标数学表达式中引用的每个告警指标都会产生成本。有关如何创建包含指标数学表达式的指标告警的信息，请参阅[根据指标数学表达式创建 CloudWatch 告警](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Create-alarm-on-metric-math-expression.html)。

如果创建异常检测告警，其中告警会分析过去的指标数据以创建预期值模型，则告警中引用的每个警报指标加上两个额外的指标（分别用于异常检测模型创建的上下限指标）都会产生成本。有关如何创建异常检测告警的信息，请参阅[根据异常检测创建 CloudWatch 告警](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Create_Anomaly_Detection_Alarm.html)。

### Metrics Insights 查询警报
<a name="metrics-insights-query-alarms"></a>

Metrics Insights 查询告警是一种特定类型的指标告警，仅在标准分辨率下可用（每 60 秒评估一次）。

创建 Metrics Insights 查询告警时，您的成本取决于告警引用的查询所分析的指标数量。例如，如果 Metrics Insights 查询告警引用了筛选条件匹配十个指标的查询，则每小时会产生十个指标的分析成本。有关更多信息，请参阅 [Amazon CloudWatch 定价](https://aws.amazon.com/cloudwatch/pricing/?nc1=h_ls)上的定价示例。

如果您创建的告警包含 Metrics Insights 查询和指标数学表达式，则该告警将作为 Metrics Insights 查询告警进行报告。如果您的告警包含一个指标数学表达式，该表达式除了引用 Metrics Insights 查询所分析的指标外还引用了其他指标，则该指标数学表达式中引用的每个告警指标都会产生额外的成本。有关如何创建包含指标数学表达式的指标告警的信息，请参阅[根据指标数学表达式创建 CloudWatch 告警](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Create-alarm-on-metric-math-expression.html)。

### 复合警报
<a name="composite-alarms"></a>

复合告警包含规则表达式，用于指定应如何评估其他告警的状态以确定其自身的状态。无论评估多少其他告警，复合告警每小时都会产生标准成本。在规则表达式中引用的复合告警会产生单独的成本。有关更多信息，请参阅[创建复合告警](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Create_Composite_Alarm.html)。

**告警使用类型**

下表列出了 CloudWatch 警报的相关子功能的名称。该表包含 `UsageType` 的字符串，它可以帮助您分析和确定与告警相关的成本。


| *CloudWatch 子功能* | `UsageType` | 
| --- | --- | 
| 标准指标告警 | `AlarmMonitorUsage` | 
| 高分辨率指标告警 | `HighResAlarmMonitorUsage` | 
| Metrics Insights 查询告警 | `MetricInsightAlarmUsage` | 
| 复合告警 | `CompositeAlarmMonitorUsage` | 

#### 降低告警成本
<a name="reducing-alarm-costs"></a>

要优化聚合了四个或更多指标的指标数学告警所产生的成本，您可以在将数据发送到 CloudWatch 之前聚合数据。这样，您可以创建单个指标的告警，而不是为多个指标聚合数据的告警。有关更多信息，请参阅[发布自定义指标](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/publishingMetrics.html#publishingDataPoints1)。

为了优化 Metrics Insights 查询告警产生的成本，您可以确保用于查询的筛选条件仅匹配您要监控的指标。

降低成本的最佳方法是删除所有不必要或未使用的告警。例如，您可以删除评估不再存在的 AWS 资源发出的指标的告警。

**Example 使用 `DescribeAlarms` 检查 `INSUFFICIENT_DATA` 状态警报的示例**  
如果删除资源，但不删除该资源发出的指标告警，则告警仍然会存在，通常会进入 `INSUFFICIENT_DATA` 状态。要检查是否有处于 `INSUFFICIENT_DATA` 状态的告警，使用以下 AWS Command Line Interface（AWS CLI）命令。  

```
aws cloudwatch describe-alarms –state-value INSUFFICIENT_DATA
```
有关更多信息，请参阅 [大规模自动化 Amazon CloudWatch 警报清除](https://aws.amazon.com/blogs/mt/automating-amazon-cloudwatch-alarm-cleanup-at-scale/)。

其他降低成本的方法如下：
+ 确保为正确的指标创建告警。
+ 确保在您不工作的区域中未启用任何告警。
+ 请记住，尽管复合告警降低了噪音，但也会产生额外的成本。
+ 在决定是创建标准告警还是高分辨率告警时，请考虑您的使用案例以及每种告警类型带来的价值。

## 优化和降低 CloudWatch Container Insights 的成本
<a name="cloudwatch_billing_container-insights"></a>

CloudWatch Container Insights 可提供标准和增强的可观测性功能，用于监控 Amazon ECS 和 Amazon EKS 中的容器化应用程序。CloudWatch Container Insights 利用嵌入式指标格式从您的容器环境中摄取遥测数据。

**具有标准可观测性的 Container Insights：**

标准 Container Insights 收集和可视化在集群和节点级别聚合的指标。您可以通过 CloudWatch 代理或适用于 Open Telemetry 的 AWS Distro（ADOT）开始使用 Container Insights 的标准模式。通过 ADOT，您可以自定义发送到 CloudWatch 的指标和维度。

Container Insights 中的指标被视为“嵌入式指标”。与这些指标相关的成本反映在使用类型 `MetricStorage:AWS/Logs-EMF` 和 `DataProcessing-Bytes` 中。有关详细的定价信息，请参阅 [Amazon CloudWatch 定价](https://aws.amazon.com/cloudwatch/pricing/?nc1=h_ls)中的“嵌入式指标”部分。

**具有增强型可观测性的 Container Insights：**

具有增强型可观测性的 Container Insights 提供了较高的可见性，可在应用程序中提供高达容器组（pod）和容器级别的精细遥测。与标准 Container Insights 类似，增强的可观测性也附带了一组标准的关键指标，您可以使用在 CloudWatch 代理上运行的 CloudWatch Observability 附加组件来开始使用这些指标。Container Insights 通过新的基于观察的定价提供了增强的可观测性，确保账单具有成本效益，证明其带来的益处合理正当。有关更多信息，请参阅 [Amazon CloudWatch 定价](https://aws.amazon.com/cloudwatch/pricing/?nc1=h_ls)。

以下是与具有增强型可观测性的 Container Inisghts 相关的使用类型和操作：


| *CloudWatch 子功能* | `UsageType` | `Operation` | 
| --- | --- | --- | 
| 针对 Amazon EKS 增强了可观测性的 Container Insights | `ObservationUsage` | `ObservationCount:CI-EKScode` | 
| 针对 Amazon ECS 增强了可观测性的 Container Insights | `MetricsUsage` | `MetricStorage:CI-ECS` | 

## 优化和降低 CloudWatch 数据库洞察服务的成本
<a name="cloudwatch_billing_database-insights"></a>

CloudWatch 数据库洞察服务提供标准版和增强版可观测性功能，可在实例级别和实例集级别监控 Amazon Aurora 数据库。CloudWatch 数据库洞察服务可将来自应用程序、数据库及运行所在操作系统的日志和指标整合到控制台的统一视图中。

**数据库洞察标准模式：**数据库洞察标准版是 AWS 免费套餐 的一部分，可为数据库负载指标提供 7 天的滚动性能数据历史记录。

**数据库洞察高级模式：**数据库洞察高级版将 Amazon Aurora 和 RDS 数据库的数据库指标、SQL 查询分析及日志整合成 CloudWatch 中的统一体验。定价基于受监控数据库所用计算资源的数量。

 有关数据库洞察服务的定价方式和定价示例的详细信息，请参阅 [Amazon CloudWatch 定价](https://aws.amazon.com/cloudwatch/pricing/?nc1=h_ls)。

以下是与数据库洞察服务相关的使用类型和操作：


| *UsageType* | `Operation` | `Instance Configuration Type` | `Database Engine Type` | 
| --- | --- | --- | --- | 
| DatabaseInsights-vCPU-Hours | `Aurora-MySQL:Provisioned` | `Provisioned` | `Aurora-MySQL` | 
| DatabaseInsights-ACU-Hours | `Aurora-MySQL:Serverless` | `Serverless` | `Aurora-MySQL` | 
| DatabaseInsights-vCPU-Hours | `Aurora-PostgreSQL:Provisioned` | `Provisioned` | `Aurora-PostgreSQL` | 
| DatabaseInsights-ACU-Hours | `Aurora-PostgreSQL:Serverless` | `Serverless` | `Aurora-PostgreSQL` | 
| DatabaseInsights-ACU-Hours | Aurora-PostgreSQL:Limitless |  `Limitless`  | Aurora-PostgreSQL | 

## 优化和降低 CloudWatch Logs 的成本
<a name="cloudwatch_billing_billing_logs"></a>

Amazon CloudWatch Logs 具有以下日志类型：
+  ***Custom logs**（自定义日志）（您为应用程序创建的日志）* 
+  ***Vended logs**（已出售日志）（其他 AWS 服务，例如 Amazon Virtual Private Cloud（Amazon VPC）和 Amazon Route 53，代表您创建的日志）* 

有关已出售日志的更多信息，请参阅《Amazon CloudWatch Logs 用户指南》中的 [启用特定 AWS 服务中的日志记录](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html)**。

自定义日志和已出售日志会根据*收集*、*存储*和*分析*的日志数量产生成本。另外，已出售日志会针对到 Amazon S3 和 Firehose 的传输产生成本。

下表列出了 CloudWatch Logs 功能的名称和相关子功能的名称。该表包含 `UsageType` 和 `Operation` 的字符串，它可以帮助您分析和确定与日志相关的成本。


| CloudWatch Logs 功能 | *CloudWatch Logs 子功能* | `UsageType` | `Operation` | 用途 | 
| --- | --- | --- | --- | --- | 
| Custom logs（自定义日志） | 收集（标准日志类的数据摄取） | `DataProcessing-Bytes` | `PutLogEvents` | 将一批日志上传到标准类日志组中的特定日志流。 | 
|  | 收集（不频繁访问日志类的数据摄取） | `DataProcessingIA-Bytes` | `PutLogEvents` | 将一批日志上传到不频繁访问日志组中的特定日志流。 | 
|  | 检测和屏蔽（数据保护） | `DataProtection-Bytes` | `PutLogEvents` | 检测和屏蔽日志事件中的受保护数据。 | 
|  | 存储（存档） | `TimedStorage-ByteHrs` | `HourlyStorageMetering` | 在 CloudWatch Logs 中存储每小时日志和每字节日志。 | 
|  | 分析（Logs Insights 查询） | `DataScanned-Bytes` | `StartQuery` | CloudWatch Logs Insights 查询所扫描的日志数据 | 
|  | 分析（Logs Live Tail） | `Logs-LiveTail` | `StartLiveTail` | 在 CloudWatch Logs Live Tail 会话期间分析的日志 | 
| Vended logs（已出售日志） | 交付（CloudWatch Logs 标准日志类） | `VendedLog-Bytes` | `PutLogEvents` | 将一批日志上传到标准日志类中的特定日志流。 | 
|  | 传送（CloudWatch Logs 不频繁访问日志类） | `VendedLogIA-Bytes` | `PutLogEvents` | 将一批日志上传到不频繁访问日志类中的特定日志流。 | 
|  |  *传输（Amazon S3）*  |  `S3-Egress-Bytes`  | `LogDelivery` | 将一批日志上传到特定的 S3 存储桶 | 
|  |  *以 Parquet 格式的传送（Amazon S3）*  |  `S3-Egress-InputBytes`  | `ParquetConversion` | 对交付到 Amazon S3 的日志执行 Parquet 转换 | 
|  | *传输（Firehose）* | `FH-Egress-Bytes` | `LogDelivery` | 将一批出售的日志上传到 Amazon Data Firehose | 

要分析成本，请将 AWS Cost Explorer Service或 AWS 成本和使用情况报告与 Athena 配合使用。使用任一方法，您都可以确定哪些日志正在产生成本，并确定成本是如何产生的。

**使用 AWS Cost Explorer Service**

选择 **CloudWatch** 作为**服务**筛选器并选择**资源**作为**维度**。在 Cost Explorer 服务中选择**资源**作为维度时，您只能看到过去 14 天的使用情况。

![\[AWS Cost Explorer Service界面的屏幕截图，其中“服务”字段选择了 CloudWatch，“维度”字段选择了“资源”。\]](http://docs.aws.amazon.com/zh_cn/AmazonCloudWatch/latest/monitoring/images/celogs.png)


**使用 Amazon Athena 查询跟踪产生成本的日志**

您可以使用以下查询按资源 ID 跟踪哪些日志会产生成本。

```
SELECT
line_item_resource_id AS ResourceID,
line_item_usage_type AS Operation,
SUM(CAST(line_item_unblended_cost AS decimal(16,8))) AS TotalSpend
FROM
costandusagereport 
WHERE
product_product_name = 'AmazonCloudWatch'
AND year='2025'
AND month='4'
AND line_item_operation IN ('PutLogEvents','HourlyStorageMetering','StartQuery','LogDelivery','StartLiveTail','ParquetConversion')
AND line_item_line_item_type NOT IN ('Tax','Credit','Refund','EdpDiscount','Fee','RIFee')
GROUP BY
line_item_resource_id,
line_item_usage_type
ORDER BY
TotalSpend DESC
```

要充分利用 CloudWatch Logs 产生的成本，请考虑以下几点：
+ 使用之前的查询，按每次操作的支出确定排名靠前的日志组。
+ 仅记录能为您带来业务价值的事件并选择高效的日志语法。详细的日志语法会增加日志数量，从而增加成本。这样做有助于您减少摄取成本。
+ 更改日志保留设置，以减少存储成本。有关更多信息，请参阅 *Amazon CloudWatch Logs 用户指南* 中的[更改 CloudWatch Logs 中的日志数据留存](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html#SettingLogRetention)。
+ 在适当的情况下，考虑使用不频繁访问日志类。与标准类相比，不频繁访问日志提供的功能较少。确定您是否需要标准日志类的其他功能，并了解这两个日志类之间的区别。有关更多信息，请参阅博客文章《[New CloudWatch Logs log class for infrequent access logs at a reduced price](https://aws.amazon.com/blogs/aws/new-amazon-cloudwatch-log-class-for-infrequent-access-logs-at-a-reduced-price/)》。虽然不频繁访问类支持的功能较少，但它适用于大多数用例。
+ 运行 CloudWatch Logs Insights 自动保存在历史记录中的查询。这样，您产生的分析成本就会降低。有关更多信息，请参阅《Amazon CloudWatch Logs 用户指南》中的 [查看正在运行的查询或查询历史记录](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatchLogs-Insights-Query-History.html)**。
+ 使用 CloudWatch 代理收集系统日志和应用程序日志并将其发送到 CloudWatch。这样，您就可以仅收集符合条件的日志事件。有关更多信息，请参阅 [Amazon CloudWatch 代理增加了对日志筛选表达式的支持](https://aws.amazon.com/about-aws/whats-new/2022/02/amazon-cloudwatch-agent-log-filter-expressions/)。

要降低已出售日志的成本，请考虑您的使用案例，然后确定应将日志发送到 CloudWatch 还是 Amazon S3。有关的更多信息，请参阅《Amazon CloudWatch Logs 用户指南》中的 [发送到 Amazon S3 的日志](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-S3)**。

**提示**  
如果您想使用指标筛选条件、订阅筛选条件、CloudWatch Logs Insights 和 Contributor Insights，请将已出售日志发送到 CloudWatch。  
或者，如果您正在使用 VPC 流日志并将其用于审计和合规性目的，请将已出售日志发送到 Amazon S3。  
有关如何跟踪将 VPC 流日志发布到 S3 存储桶时产生的费用的信息，请参阅[使用 AWS 成本和使用情况报告 和成本分配标签了解 Amazon S3 中的 VPC 流日志数据摄取](https://aws.amazon.com/blogs/mt/using-aws-cost-usage-reports-cost-allocation-tags-to-understand-vpc-flow-logs-data-ingestion-costs-in-amazon-s3/)。

有关如何充分利用 CloudWatch Logs 产生的成本的更多信息，请参阅[哪个日志组导致我的 CloudWatch Logs 账单突然增加？](https://aws.amazon.com/premiumsupport/knowledge-center/cloudwatch-logs-bill-increase/)。