分析、优化和降低 CloudWatch 成本 - Amazon CloudWatch

分析、优化和降低 CloudWatch 成本

本部分介绍了 Amazon CloudWatch 功能如何产生成本。它还提供了可以帮助您分析、优化和降低 CloudWatch 成本的方法。在本部分中,我们在描述 CloudWatch 功能时有时会提及定价。有关定价的信息,请参阅 Amazon CloudWatch 定价

使用 Cost Explorer 分析 CloudWatch 成本和使用数据

使用 AWS Cost Explorer,您可以可视化和分析 AWS 服务 一段时间内的成本和使用数据,包括 CloudWatch。有关更多信息,请参阅 AWS Cost Explorer 入门

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

可视化和分析 CloudWatch 成本和使用数据

  1. https://console.aws.amazon.com/cost-management/home#/custom 中登录 Cost Explorer 控制台。

  2. FILTERS(筛选条件)下,对于Service(服务),选择 CloudWatch

  3. 对于 Group by(分组依据),选择 Usage Type(使用类型)。您还可以按其他类别对结果进行分组,例如以下类别:

    • API Operation (API 操作)– 查看哪些 API 操作产生的成本最高。

    • Region (区域)– 查看哪些地区产生的成本最高。

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

AWS Cost Explorer 界面的屏幕截图,以条形图格式显示使用类型成本。

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

注意

UsageType 的字符串匹配特定的功能和区域。例如,EU-CW:GMD-MetricsEU)的第一部分匹配欧洲(爱尔兰)区域,EU-CW:GMD-MetricsGMD-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 的字符串。

CloudWatch 功能 CloudWatch 子功能

UsageType

CloudWatch metrics(CloudWatch 指标) 自定义指标

MetricMonitorUsage

详细监控

MetricMonitorUsage

嵌入式指标

MetricMonitorUsage

CloudWatch API 请求 API 请求

Requests

批量(获取)

GMD-Metrics

Contributor Insights

GIRR-Metrics

位图图像快照

GMWI-Metrics

CloudWatch metric streams(CloudWatch 指标流) 指标流

MetricStreamUsage

CloudWatch dashboards(CloudWatch 控制面板) 包含 50 个或更少指标的控制面板

DashboardsUsageHour-Basic

包含超过 50 个指标的控制面板

DashboardsUsageHour

CloudWatch alarms(CloudWatch 告警) 标准(指标告警)

AlarmMonitorUsage

高分辨率(指标告警)

HighResAlarmMonitorUsage

Metrics Insights 查询告警

MetricInsightAlarmUsage

复合(聚合告警)

CompositeAlarmMonitorUsage

CloudWatch Application Signals Application Signals

Application-Signals

CloudWatch custom logs(CloudWatch 自定义日志) 收集(标准日志类的数据摄取)

DataProcessing-Bytes

收集(不频繁访问日志类的数据摄取)

DataProcessingIA-Bytes

分析(查询)

DataScanned-Bytes

分析(Live Tail)

Logs-LiveTail

存储(存档)

TimedStorage-ByteHrs

检测和屏蔽(数据保护)

DataProtection-Bytes

CloudWatch 出售的日志 传送(Amazon CloudWatch Logs 标准日志类)

VendedLog-Bytes

传送(CloudWatch Logs 不频繁访问日志类)

VendedLogIA-Bytes

传输(Amazon S3)

S3-Egress-Bytes

以 Parquet 格式的传送(Amazon S3)

S3-Egress-InputBytes

传输(Amazon Data Firehose)

FH-Egress-Bytes

Contributor Insights CloudWatch Logs(规则)

ContributorInsightRules

CloudWatch Logs(事件)

ContributorInsightEvents

Amazon DynamoDB(规则)

ContributorRulesManaged

DynamoDB(事件)

ContributorEventsManaged

Canaries (Synthetics) Run

Canary-runs

Evidently 事件

Evidently-event

分析单位

Evidently-eau

RUM 事件

RUM-event

使用 AWS 成本和使用情况报告 和 Athena 分析 CloudWatch 成本和使用数据

分析 CloudWatch 成本和使用数据的另一种方法是使用 AWS 成本和使用情况报告 和 Amazon Athena。AWS 成本和使用情况报告 包含一组全面的成本和使用数据。您可以创建跟踪费用和使用量的报告,并将这些报告发布到您选择的 S3 存储桶。您还可以从 S3 存储桶中下载和删除报告。有关更多信息,请参阅《AWS 成本和使用情况报告 用户指南》中的 什么是 AWS 成本和使用情况报告?

注意

使用 AWS 成本和使用情况报告 无任何费用。您只需在将报告发布到 Amazon Simple Storage Service(Amazon S3)时支付存储费用。有关更多信息,请参阅《AWS 成本和使用情况报告 用户指南》中的 限额和限制

Athena 是一项查询服务,您可以将其与 AWS 成本和使用情况报告 结合使用来分析成本和使用数据。您可以在 S3 存储桶中查询报告,而无需先下载它们。有关更多信息,请参阅《Amazon Athena 用户指南》中的 什么是 Amazon Athena?。有关更多信息,请参阅《Amazon Athena 用户指南》中的什么是 Amazon Athena?。有关定价的信息,请参阅 Amazon Athena 定价

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

注意

您可以使用本文档中的任何示例查询。本文档中的所有示例查询都对应一个名为 costandusagereport 的数据库,并显示 2022 年 4 月和 2022 年的结果。您可以更改此信息。但是,在运行查询之前,请确保数据库的名称与查询中的数据库名称匹配。

使用 AWS 成本和使用情况报告 和 Athena 分析成本和使用数据

  1. 启用 AWS 成本和使用情况报告。有关更多信息,请参阅《AWS 成本和使用情况报告 用户指南》中的 创建成本和使用情况报告

    提示

    创建报告时,确保选择 Include resource IDs(包含资源 ID)。否则,您的报告将不会包含列 line_item_resource_id。此行可帮助您在分析成本和使用数据时进一步确定成本。

  2. 将 AWS 成本和使用情况报告 与 Athena 集成。有关更多信息,请参阅《AWS 成本和使用情况报告 用户指南》中的 使用 AWS CloudFormation 模板设置 Athena

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

例 :Athena 查询,显示每月 CloudWatch 成本

您可以使用以下查询显示在给定月份中哪些 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' -- 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)' -- 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-Bytes%%') THEN 'Vended Logs (Delivered to S3)' -- 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 '%%Evidently%%' THEN 'Evidently' 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='2022' 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;
例 :Athena 查询,显示 CloudWatch 功能如何产生成本

您可以使用以下查询显示 UsageTypeOperation 的结果。这向您展示了 CloudWatch 功能是如何产生成本的。结果还显示了 UsageQuantityTotalSpend 的值,以便您可以查看总使用成本。

提示

有关 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='2022' 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,y line_item_resource_id, line_item_operation

优化和降低 CloudWatch 指标的成本

许多 AWS 服务,例如 Amazon Elastic Compute Cloud(Amazon EC2)、Amazon S3 和 Amazon Data Firehose 等会自动向 CloudWatch 免费发送指标。但是,按以下类别分组的指标可能会产生额外费用:

  • Custom metrics, detailed monitoring, and embedded metrics(自定义指标、详细监控和嵌入式指标)

  • API 请求

  • 指标流

有关更多信息,请参阅使用 Amazon CloudWatch 指标

自定义指标

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

所有自定义指标均按小时按比例分配。它们只有在发送到 CloudWatch 时才会计量。有关指标定价的信息,请参阅 Amazon CloudWatch 定价

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

注意

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

CloudWatch 子功能

UsageType

Operation

用途

自定义指标

MetricMonitorUsage

MetricStorage

自定义指标

详细监控

MetricMonitorUsage

MetricStorage:AWS/{Service}

详细监控

嵌入式指标

MetricMonitorUsage

MetricStorage:AWS/Logs-EMF

日志嵌入式指标

日志筛选条件

MetricMonitorUsage

MetricStorage:AWS/CloudWatchLogs

日志组指标筛选条件

详细监控

CloudWatch 具有两种监控类型:

  • 基本监控

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

  • 详细监控

    详细监控会产生成本,并添加不同的增强功能,具体取决于 AWS 服务。对于支持详细监控的每个 AWS 服务,您可以选择是否为该服务启用它。有关更多信息,请参阅基本和详细监控

注意

其他 AWS 服务 支持详细监控,可能使用其他名称引用此功能。例如,对 Amazon S3 的详细监控称为request metrics(请求指标)。

与自定义指标类似,详细监控按小时按比例分配,并且仅在将数据发送到 CloudWatch 时计量。详细监控根据发送到 CloudWatch 的指标数量生成成本。为降低成本,请仅在必要时启用详细监控。有关详细监控定价方式的信息,请参阅 Amazon CloudWatch 定价

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='2022' 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

嵌入式指标

借助 CloudWatch 嵌入式指标格式,您可以将应用程序数据作为日志数据提取,以便生成可操作的指标。有关更多信息,请参阅采用 CloudWatch 嵌入式指标格式摄取高基数日志并生成指标

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

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

CloudWatch 子功能

UsageType

Operation

用途

自定义指标

MetricMonitorUsage

MetricStorage:AWS/Logs-EMF

日志嵌入式指标

日志摄取

DataProcessing-Bytes

PutLogEvents

将一批日志事件上传到指定的日志组或日志流

日志存档

TimedStorage-ByteHrs

HourlyStorageMetering

在 CloudWatch Logs 中存储每小时日志和每字节日志

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

要充分利用 CloudWatch 嵌入式指标格式产生的成本,请避免基于高基数维度创建指标。这样,CloudWatch 就不会为每个唯一的维度组合创建自定义指标。有关更多信息,请参阅维度

如果您正在使用 CloudWatch Container Insights 来利用嵌入式指标格式,则可以使用 AWS Distro for Open Telemetry 作为最大限度地利用指标相关成本的替代方案。使用 Container Insights,您可以从容器化应用程序和微服务中收集、聚合和汇总指标与日志。启用 Container Insights 后,CloudWatch 代理会将您的日志发送到 CloudWatch,这样它就可以使用这些日志生成嵌入式指标。但是,CloudWatch 代理仅向 CloudWatch 发送固定数量的指标,并且您需要为所有可用指标(包括未使用的指标)付费。使用 AWS Distro for Open Telemetry,您可以配置和自定义将哪些指标和维度发送到 CloudWatch。这有助于您减少 Container Insights 生成的数据量和降低成本。有关更多信息,请参阅以下资源:

API 请求

CloudWatch 具有以下类型的 API 请求:

  • API requests(API 请求)

  • Bulk (Get)(批量(获取))

  • Contributor Insights

  • Bitmap image snapshot(位图图像快照)

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

下表列出了 API 请求的类型并包含 UsageTypeOperation 的字符串,它可以帮助您分析和确定与 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 请求的成本各不相同,当您的 API 调用次数超过根据 AWS 免费套餐限制提供给您的 API 调用次数时,会产生费用。

注意

GetMetricDataGetMetricWidgetImage 不包含在 AWS 免费套餐限制下。有关更多信息,请参阅《AWS Billing 用户指南》中的 使用 AWS 免费套餐

通常会增加成本的 API 请求是 PutGet 请求。

PutMetricData

PutMetricData 每次调用时都会产生成本,并且根据使用案例的不同,可能会产生巨额成本。有关更多信息,请参阅 Amazon CloudWatch API 参考中的 PutMetricData

要最大限度地利用 PutMetricData 产生的成本,将更多数据批量发送到您的 API 调用中。根据您的使用案例,考虑使用 CloudWatch Logs 或 CloudWatch 嵌入式指标格式来注入指标数据。有关更多信息,请参阅以下资源:

GetMetricData

GetMetricData 也可能会产生巨大的成本。提高成本的常见使用案例涉及第三方监控工具,这些工具会提取数据以生成见解。有关更多信息,请参阅 Amazon CloudWatch API 参考中的 GetMetricData

要降低 GetMetricData 产生的成本,请考虑只提取受监控和使用的数据,或者考虑减少提取数据的频率。根据您的使用案例,您可能会考虑使用指标流,而不是 GetMetricData,这样您就可以以更低的成本将数据近乎实时地推送给第三方。有关更多信息,请参阅以下资源:

GetMetricStatistics

根据您的使用案例,您可能会考虑使用 GetMetricStatistics 而不是 GetMetricData。使用 GetMetricData,您可以快速大规模地检索数据。但是,GetMetricStatistics 包含在 AWS 免费套餐限制下,最多一百万个 API 请求,如果您不需要在每次调用时检索那么多的指标和数据点,这可以帮助您降低成本。有关更多信息,请参阅以下资源:

注意

外部调用者进行 API 调用。对于 CloudTrail 数据事件支持的 API(例如 GetMetricDataGetMetricWidgetImage),您可以使用 CloudTrail 来识别排名靠前的 CloudWatch API 调用者,并有可能减少或识别意外调用。有关更多信息,请参阅如何使用 CloudTrail 分析您的 CloudWatch API 用量。对于 CloudTrail 不支持的其他 CloudWatch API,您可以向 CloudWatch 团队提出技术支持请求并询问有关这些 API 的信息。有关创建技术支持请求的信息,请参阅如何从 AWS 获得技术支持?

CloudWatch metric streams(CloudWatch 指标流)

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

指标流根据指标更新的数量产生成本。指标更新始终包括以下统计数据的值:

  • Minimum

  • Maximum

  • Sample Count

  • Sum

有关更多信息,请参阅可以流式传输的统计数据

要分析 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='2022' 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 警报的成本

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

注意

指标和复合告警的成本按小时按比例分配。只有当您的告警存在时,您才会产生告警成本。为了优化成本,请务必不要遗留配置错误的警报或低值警报。为此,您可以自动清理不再需要的 CloudWatch 警报。有关更多信息,请参阅 Automating Amazon CloudWatch Alarm Cleanup at Scale

指标警报

指标告警具有以下分辨率设置:

  • Standard(标准)(每 60 秒评估一次)

  • High resolution(高分辨率)(每 10 秒评估一次)

创建指标告警时,成本基于告警的分辨率设置和告警引用的指标数。例如,引用单项指标的指标告警,每小时产生一个告警指标成本。有关更多信息,请参阅使用 Amazon CloudWatch 告警

如果创建的指标告警包含引用多个指标的指标数学表达式,则在指标数学表达式中引用的每个告警指标都会产生成本。有关如何创建包含指标数学表达式的指标告警的信息,请参阅根据指标数学表达式创建 CloudWatch 告警

如果创建异常检测告警,其中告警会分析过去的指标数据以创建预期值模型,则告警中引用的每个警报指标加上两个额外的指标(分别用于异常检测模型创建的上下限指标)都会产生成本。有关如何创建异常检测告警的信息,请参阅根据异常检测创建 CloudWatch 告警

Metrics Insights 查询警报

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

创建 Metrics Insights 查询告警时,您的成本取决于告警引用的查询所分析的指标数量。例如,如果 Metrics Insights 查询告警引用了筛选条件匹配十个指标的查询,则每小时会产生十个指标的分析成本。有关更多信息,请参阅 Amazon CloudWatch 定价上的定价示例。

如果您创建的告警包含 Metrics Insights 查询和指标数学表达式,则该告警将作为 Metrics Insights 查询告警进行报告。如果您的告警包含一个指标数学表达式,该表达式除了引用 Metrics Insights 查询所分析的指标外还引用了其他指标,则该指标数学表达式中引用的每个告警指标都会产生额外的成本。有关如何创建包含指标数学表达式的指标告警的信息,请参阅根据指标数学表达式创建 CloudWatch 告警

复合警报

复合告警包含规则表达式,用于指定应如何评估其他告警的状态以确定其自身的状态。无论评估多少其他告警,复合告警每小时都会产生标准成本。在规则表达式中引用的复合告警会产生单独的成本。有关更多信息,请参阅创建复合告警

告警使用类型

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

CloudWatch 子功能

UsageType

标准指标告警

AlarmMonitorUsage

高分辨率指标告警

HighResAlarmMonitorUsage

Metrics Insights 查询告警

MetricInsightAlarmUsage

复合告警

CompositeAlarmMonitorUsage

复合告警包含规则表达式,用于指定应如何评估其他告警的状态以确定其自身的状态。无论评估多少其他告警,复合告警每小时都会产生标准成本。在规则表达式中引用的复合告警会产生单独的成本。有关更多信息,请参阅创建复合告警

告警使用类型

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

CloudWatch 子功能

UsageType

标准指标告警

AlarmMonitorUsage

高分辨率指标告警

HighResAlarmMonitorUsage

Metrics Insights 查询告警

MetricInsightAlarmUsage

复合告警

CompositeAlarmMonitorUsage

降低告警成本

要优化聚合了四个或更多指标的指标数学告警所产生的成本,您可以在将数据发送到 CloudWatch 之前聚合数据。这样,您可以创建单个指标的告警,而不是为多个指标聚合数据的告警。有关更多信息,请参阅发布自定义指标

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

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

例 :使用 DescribeAlarms 检查 INSUFFICIENT_DATA 状态下的警报

如果删除资源,但不删除该资源发出的指标告警,则告警仍然会存在,通常会进入 INSUFFICIENT_DATA 状态。要检查是否有处于 INSUFFICIENT_DATA 状态的告警,使用以下 AWS Command Line Interface(AWS CLI)命令。

aws cloudwatch describe-alarms –state-value INSUFFICIENT_DATA

有关更多信息,请参阅 大规模自动化 Amazon CloudWatch 警报清除

其他降低成本的方法如下:

  • 确保为正确的指标创建告警。

  • 确保在您不工作的区域中未启用任何告警。

  • 请记住,尽管复合告警降低了噪音,但也会产生额外的成本。

  • 在决定是创建标准告警还是高分辨率告警时,请考虑您的使用案例以及每种告警类型带来的价值。

优化和降低 CloudWatch Logs 的成本

Amazon CloudWatch Logs 具有以下日志类型:

  • Custom logs(自定义日志)(您为应用程序创建的日志)

  • Vended logs(已出售日志)(其他 AWS 服务,例如 Amazon Virtual Private Cloud(Amazon VPC)和 Amazon Route 53,代表您创建的日志)

有关已出售日志的更多信息,请参阅《Amazon CloudWatch Logs 用户指南》中的 启用特定 AWS 服务中的日志记录

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

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

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 成本和使用情况报告 和 Athena,以便您可以确定哪些日志正在产生成本,并确定成本是如何产生的。

示例:

例 :Athena 查询,跟踪生成成本的日志

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

SELECT bill_payer_account_id as Payer, line_item_usage_account_id as LinkedAccount, line_item_resource_id AS ResourceID, line_item_usage_type AS UsageType, SUM(CAST(line_item_unblended_cost AS decimal(16,8))) AS TotalSpend, SUM(CAST(line_item_usage_amount AS double)) AS UsageQuantity FROM costandusagereport WHERE product_product_name = 'AmazonCloudWatch' AND year='2022' 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 bill_payer_account_id, line_item_usage_account_id, line_item_usage_type, line_item_resource_id, line_item_operation ORDER BY TotalSpend DESC

要充分利用 CloudWatch Logs 产生的成本,请考虑以下几点:

要降低已出售日志的成本,请考虑您的使用案例,然后确定应将日志发送到 CloudWatch 还是 Amazon S3。有关的更多信息,请参阅《Amazon CloudWatch Logs 用户指南》中的 发送到 Amazon S3 的日志

提示

如果您想使用指标筛选条件、订阅筛选条件、CloudWatch Logs Insights 和 Contributor Insights,请将已出售日志发送到 CloudWatch。

或者,如果您正在使用 VPC 流日志并将其用于审计和合规性目的,请将已出售日志发送到 Amazon S3。

有关如何跟踪将 VPC 流日志发布到 S3 存储桶时产生的费用的信息,请参阅使用 AWS 成本和使用情况报告 和成本分配标签了解 Amazon S3 中的 VPC 流日志数据摄取

有关如何充分利用 CloudWatch Logs 产生的成本的更多信息,请参阅哪个日志组导致我的 CloudWatch Logs 账单突然增加?