本页介绍了如何优化和监控 Google Cloud Observability 费用。如需了解价格信息,请参阅 Google Cloud Observability 价格。
您可能还对以下文档感兴趣:
- 估算账单。
- 价格示例。
- 使用成本探索器优化费用。 成本探索器可提供费用数据和利用率指标的当前和历史可视化图表。因此,这些数据有助于您发现优化机会。
优化
本部分提供有关如何减少或优化与 Cloud Logging、Cloud Trace 和 Google Cloud Managed Service for Prometheus 相关的费用的指南。
减少日志存储空间
如需降低 Cloud Logging 存储费用,请在日志接收器上配置排除项过滤条件,以排除某些日志的路由。排除项过滤条件可以移除与过滤条件匹配的所有日志条目,也可以仅移除一部分日志。如果日志条目与接收器的排除项过滤条件匹配,则接收器不会将该日志条目路由到目标位置。排除的日志条目不计入您的存储空间配额。 如需了解如何设置排除项过滤条件,请参阅日志排除项。
降低 Cloud Logging 存储费用的另一种方法是将日志从 Cloud Logging 路由到受支持的目标位置。Cloud Logging 不会对将日志路由到支持的目标位置收费。不过,当目标位置收到日志时,您可能需要支付费用:
如需了解如何将日志路由到 Cloud Logging 之外,请参阅将日志路由到支持的目的地。
优化 Managed Service for Prometheus 的费用
Managed Service for Prometheus 的价格具有可控性。由于您是按样本付费,因此可以使用以下控制手段来控制费用:
采样周期:将指标爬取期从 15 秒更改为 60 秒可节省 75% 的费用,同时不影响基数。您可以按作业、每个目标或总体方式来配置采样周期。
过滤:您可以利用过滤功能来减少发送到服务的全局数据存储区的样本数量;如需了解详情,请参阅过滤导出的指标。 在 Prometheus 抓取配置中使用指标重新标记配置,根据标签匹配器在提取时删除指标。
将高基数、低价值数据保留在本地。您可以使用相同的抓取配置将标准 Prometheus 与代管式服务一起运行,并在本地保留不值得发送到该服务的全局数据存储区的数据。
Managed Service for Prometheus 的价格具有可预测性。
您不会因使用稀疏直方图而受到影响。样本数量的计算方式为,从第一个非零值开始,并且需要存储桶n 的值大于存储桶n-1 中的值。例如,值为
10 10 13 14 14 14
的直方图会计为第一个、第三个和第四个存储桶的三个样本。根据您使用的直方图数量以及用途,从价格中排除未更改的存储桶通常可以使结算中统计的样本数比直方图存储桶所指示的绝对数量少 20% 到 40%。
通过按样本收费,您不会由于快速扩容和缩容、抢占式或临时的容器(如 HPA 或 GKE Autopilot 创建的容器)而受到影响。
如果 Managed Service for Prometheus 按指标收费,那么每次启动新容器时,都需要一次性为整个月的基数付费。而如果采用基于样本的价格,则只需在容器运行时付费。
查询,包括提醒查询
用户发出的所有查询(包括运行 Prometheus 记录规则时发出的查询)都按照 Cloud Monitoring API 调用次数来计费。如需了解当前费率,请参阅 Managed Service for Prometheus 价格或 Monitoring 价格摘要表。
减少 Trace 用量
如需控制 Trace span 提取量,您可以管理跟踪采样率,以平衡性能分析所需的跟踪量与可接受的费用。
对于高流量系统,大多数客户能以 1:1000 甚至 1:10000 的比率对事务进行采样,而且仍然有足够的信息用于性能分析。
采样率通过 Cloud Trace 客户端库配置。
降低提醒费用
自 2026 年 5 月 1 日起(最早),Cloud Monitoring 将开始针对提醒政策的使用收取费用。如需了解价格模式,请参阅提醒的价格。本文档介绍了可用于降低提醒费用的策略。
整合提醒政策,以便监控更多资源
由于每个条件的费用为 0.10 美元,因此使用一个提醒政策监控多个资源比使用一个提醒政策监控每个资源更具成本效益。请参考以下示例:
示例 1
数据
- 100 个虚拟机
- 每个虚拟机会发出一个指标,即
metric_name
metric_name
有一个标签,该标签有 10 个值
- 一个提醒条件
- 条件汇总到虚拟机级别
- 30 秒执行期
- 条件费用: 1 个条件 * 每月 $0.10 = 每月 $0.10
- 时序费用: 每个周期返回 100 个时序 * 每月 86,400 个周期 = 每月返回 860 万个时序 * 每百万个时序 $0.35 = 每月 $3.02
- 总费用:每月$3.12
示例 2
数据
- 100 个虚拟机
- 每个虚拟机会发出一个指标,即
metric_name
metric_name
有一个标签,该标签有 10 个值
- 100 个条件
- 每个条件都经过过滤和汇总,最终得到一个虚拟机
- 30 秒执行期
- 条件费用:100 个条件 * 每月 $0.10 = 每月 $10
- 时序费用: 100 个条件 * 每个周期每个条件返回 1 个时序 * 每月 86,400 个周期 = 每月返回 860 万个时序 * 每百万个时序 $0.35 = 每月 $3.02
- 总费用:每月$13.02
在这两个示例中,您监控的资源数量相同。不过,示例 2 使用了 100 个提醒政策,而示例 1 仅使用了一个提醒政策。因此,示例 1 每月可节省近 10 美元。
仅汇总到需要发出提醒的级别
与汇总到较低细分程度相比,汇总到较高细分程度会产生更高的费用。例如,汇总到 Google Cloud 项目级的费用低于汇总到集群级的费用,而汇总到集群级的费用低于汇总到集群和命名空间级的费用。
请参考以下示例:
示例 1
数据
- 100 个虚拟机
- 每个虚拟机会发出一个指标,即
metric_name
metric_name
有一个标签,该标签有 10 个值
- 一个提醒条件
- 条件汇总到虚拟机级别
- 30 秒执行期
- 条件费用: 1 个条件 * 每月 $0.10 = 每月 $0.10
- 时序费用: 每个周期返回 100 个时序 * 每月 86,400 个周期 = 每月返回 860 万个时序 * 每百万个时序 $0.35 = 每月 $3.02
- 总费用:每月$3.12
示例 4
数据
- 100 个虚拟机,每个虚拟机都属于一项服务
- 总共 5 项服务
- 每个虚拟机会发出一个指标,即
metric_name
metric_name
有一个标签,该标签有 10 个值
- 一项条件
- 将条件汇总到服务级别
- 30 秒执行期
- 条件费用: 1 个条件 * 每月 $0.10 = 每月 $0.10
- 时序费用: 每个周期返回 5 个时序 * 每月 86,400 个周期 = 每月返回 432,000 个时序 * 每百万个时序 $0.35 = 每月 $0.14
- 总费用:每月$0.24
示例 5
数据
- 100 个虚拟机
- 每个虚拟机会发出一个指标,即
metric_name
metric_name
具有 100 个标签,每个标签有 1,000 个值
- 一项条件
- 条件汇总到虚拟机级别
- 30 秒执行期
- 条件费用: 1 个条件 * 每月 $0.10 = 每月 $0.10
- 时序费用: 每个周期返回 100 个时序 * 每月 86,400 个周期 = 每月返回 850 万个时序 * 每百万个时序 $0.35 = 每月 $3.02
- 总费用:每月$3.12
将示例 1 与示例 4 进行比较:这两个示例都基于相同的底层数据运行,并且都具有单个提醒政策。不过,由于示例 4 中的提醒政策会汇总到服务,因此与示例 1 中的提醒政策相比,其费用较低,因为示例 1 中的提醒政策会以更精细的方式汇总到虚拟机。
此外,请比较示例 1 和示例 5:在此示例中,示例 5 中的指标基数比示例 1 中的指标基数高 10,000 倍。不过,由于示例 1 和示例 5 中的提醒政策都汇总到虚拟机,并且这两个示例中的虚拟机数量相同,因此这两个示例在价格上是等效的。
配置提醒政策时,请选择最适合您的使用情形的汇总级别。例如,如果您希望在 CPU 利用率方面收到提醒,则可能需要汇总到虚拟机和 CPU 级别。如果您希望按端点发出延迟时间方面的提醒,则可能需要汇总到端点级别。
不针对原始的未汇总数据触发提醒
监控使用维度指标系统,其中任何指标的总基数都等于受监控的资源数量乘以相应指标的标签组合数量。例如,如果您有 100 个虚拟机在发出某个指标,并且该指标有 10 个标签,每个标签有 10 个值,那么您的总基数为 100 * 10 * 10 = 10,000。
由于基数缩放方式,对原始数据设置提醒的费用可能非常高。在上面的示例中,每个执行周期都会返回 10,000 个时序。不过,如果您汇总到虚拟机,则每个执行周期仅返回 100 个时序,无论底层数据的标签基数是多少。
如果根据原始数据设置提醒,当指标收到新标签时,时序可能会增加,从而导致风险增加。在前面的示例中,如果用户向您的指标添加新标签,则总基数会增加到 100 * 11 * 10 = 11,000 个时序。在这种情况下,即使提醒政策未发生变化,返回的时序数量也会在每个执行周期内增加 1,000。如果您改为汇总到虚拟机,那么尽管底层基数有所增加,但系统仍只会返回 100 个时序。
滤除不必要的回答
配置条件,以便仅评估满足您的提醒需求的数据。如果您不会采取措施来修正某些问题,请将其从提醒政策中排除。例如,您可能不需要针对实习生的开发虚拟机发出提醒。
为减少不必要的提醒和费用,您可以滤除不重要的时序。您可以使用 Google Cloud 元数据标签为资源添加类别,然后过滤掉不需要的元数据类别。
使用热门数据流运算符来减少返回的时序数量
如果您的条件使用 PromQL 或 MQL 查询,则可以使用 top-streams 运算符选择返回的具有最高值的部分时序:
例如,PromQL 查询中的 topk(metric, 5)
子句会将每个执行周期内返回的时序数量限制为 5 个。
将时序数量限制为某个上限可能会导致数据缺失和错误提醒,例如:
- 如果超过 N 个时序违反了您的阈值,那么您将错过前 N 个时序之外的数据。
- 如果违规时序出现在前 N 个时序之外,即使被排除的时序仍违反阈值,突发事件也可能会自动关闭。
- 您的条件查询可能不会显示重要背景信息,例如按预期运行的基准时序。
为降低此类风险,请为 N 选择较大的值,并且仅在评估许多时序的提醒政策中使用 top-streams 运算符,例如针对各个 Kubernetes 容器的提醒。
增加执行周期的时长(仅限 PromQL)
如果您的条件使用 PromQL 查询,则可以通过在条件中设置 evaluationInterval
字段来修改执行周期的时长。
评估间隔越长,每月返回的时序就越少;例如,间隔为 15 秒的条件查询的运行频率是间隔为 30 秒的查询的两倍,而间隔为 1 分钟的查询的运行频率是间隔为 30 秒的查询的一半。
监控
本部分介绍了如何通过创建提醒政策来监控费用。 提醒政策可以监控指标数据,并在该数据超出阈值时通知您。
监控每月提取的日志字节数
如需创建一项提醒政策,以在写入日志存储桶的日志字节数超过 Cloud Logging 的用户定义限制时触发,请使用如下设置。
新建条件 字段 |
值 |
---|---|
资源和指标 | 在资源菜单中,选择全球。 在指标类别菜单中,选择基于日志的指标。 在指标菜单中,选择每月注入的日志字节数。 |
过滤 | 无。 |
跨时间序列 时间序列聚合 |
sum |
滚动窗口 | 60 m |
滚动窗口函数 | max |
配置提醒触发器 字段 |
值 |
---|---|
条件类型 | Threshold |
提醒触发器 | Any time series violates |
阈值位置 | Above threshold |
阈值 | 可接受的值由您决定。 |
重新测试窗口 | 可接受的最小值是 30 分钟。 |
监控提取的指标总数
无法根据每月的指标提取量创建提醒。但是,您可以针对 Cloud Monitoring 费用创建提醒。如需了解详情,请参阅配置结算提醒。
监控每月提取的跟踪记录 span
如需创建一项提醒政策,并在您的月度 Cloud Trace span 提取量超过用户定义的限制时触发,请使用以下设置。
新建条件 字段 |
值 |
---|---|
资源和指标 | 在资源菜单中,选择全球。 在指标类别菜单中,选择结算。 在指标菜单中,选择每月注入的轨迹跨度数。 |
过滤 | |
跨时间序列 时间序列聚合 |
sum |
滚动窗口 | 60 m |
滚动窗口函数 | max |
配置提醒触发器 字段 |
值 |
---|---|
条件类型 | Threshold |
提醒触发器 | Any time series violates |
阈值位置 | Above threshold |
Threshold value |
可接受的值由您决定。 |
重新测试窗口 | 可接受的最小值是 30 分钟。 |
配置结算提醒
如需在可结算的费用或预测费用超过预算时收到通知,请使用 Google Cloud 控制台的预算和提醒页面创建提醒:
-
在 Google Cloud 控制台中,前往结算页面:
您也可以使用搜索栏查找此页面。
如果您有多个 Cloud Billing 账号,请执行以下任一操作:
- 如需管理当前项目的 Cloud Billing,请选择转至关联的结算账号。
- 如需查找其他 Cloud Billing 账号,请选择管理结算账号,然后选择要为其设置预算的账号。
- 在“结算”导航菜单中,选择预算和提醒。
- 点击 创建预算。
- 填写预算对话框。在此对话框中,选择 Google Cloud 项目和产品,然后为该组合创建预算。 默认情况下,当费用达到预算的 50%、90% 和 100% 时,您会收到通知。 如需查看完整文档,请参阅设置预算和预算提醒。