本页介绍了如何优化和监控 Google Cloud Observability 费用。如需了解详情,请参阅 Google Cloud Observability 价格。
您可能还对以下文档感兴趣:
- 估算账单。
- 价格示例。
- 使用成本探索器优化费用。成本探索器可提供费用数据和利用率指标的当前和历史可视化图表。因此,这些数据有助于您发现优化机会。
优化
本部分提供有关如何减少或优化与 Cloud Logging、Cloud Trace 和 Google Cloud Managed Service for Prometheus 相关的费用的指南。
降低 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 调用次数来计费。
减少 Trace 用量
如需控制 Trace span 提取量,您可以管理跟踪采样率,以平衡性能分析所需的跟踪量与可接受的费用。
对于高流量系统,大多数客户能以 1:1000 甚至 1:10000 的比率对事务进行采样,而且仍然有足够的信息用于性能分析。
采样率通过 Cloud Trace 客户端库配置。
减少提醒账单
本部分介绍了可用于降低提醒费用的策略。
整合提醒政策以监控更多资源
提醒功能按条件计费。因此,请尽可能使用一个提醒政策来监控多个资源,而不是为每个资源创建一个提醒政策。
例如,假设您有 100 个虚拟机。每个虚拟机都会生成 my_metric 指标类型的一个时序。您可以采用以下两种不同的方式来监控时序:
您创建一个包含一个条件的提醒政策。该条件会监控
my_metric并将数据聚合到虚拟机级别。聚合后,每个虚拟机对应一个时序。因此,该条件会监控 100 个时序。您创建 100 个提醒政策,每个政策包含 1 个条件。每个条件监控其中一个虚拟机的
my_metric时序,并将数据聚合到虚拟机级别。因此,每个条件监控 1 个时序。
第二种方式创建了 100 个条件,比只创建 1 个条件的第一种方式更昂贵。这两种方式都监控 100 个时序。
仅汇总到需要发出提醒的级别
提醒政策监控的每个时序都会产生费用。与汇总到较低细分程度相比,汇总到较高细分程度会产生更高的费用。例如,汇总到 Google Cloud 项目级的费用低于汇总到集群级的费用,而汇总到集群级的费用低于汇总到集群和命名空间级的费用。
例如,假设您有 100 个虚拟机。每个虚拟机都会生成 my_metric 指标类型的一个时序。您的每个虚拟机都属于五项服务之一。您决定创建一个提醒政策,其中包含一个监控 my_metric 的条件。以下是两种不同的聚合方式:
您将数据聚合到服务。聚合后,每项服务对应一个时序。因此,该条件会监控 5 个时序。
您将数据聚合到虚拟机级别。聚合后,每个虚拟机对应一个时序。因此,该条件会监控 100 个时序。
第二种方式监控 100 个时序,比只监控 5 个时序的第一种方式更昂贵。
配置提醒政策时,请选择最适合您的使用情形的汇总级别。例如,如果您希望收到 CPU 利用率方面的提醒,则可能需要汇总到虚拟机和 CPU 级别。如果您希望收到各服务延迟时间方面的提醒,则可能需要聚合到服务级别。
不要发出未汇总的原始数据方面的提醒
Monitoring 使用维度指标系统,其中任何指标的总基数都等于受监控的资源数量乘以相应指标的标签组合数量。例如,如果您有 100 个虚拟机在发出某个指标,并且该指标有 10 个标签,每个标签有 10 个值,那么您的总基数为 100 * 10 * 10 = 10,000。
由于基数缩放的方式,发出原始数据方面的提醒的费用可能会非常高。在上面的示例中,每个执行期都会返回 10,000 个时序。不过,如果您汇总到虚拟机,则无论底层数据的标签基数是多少,每个执行期都仅返回 100 个时序。
如果发出原始数据方面的提醒,当指标收到新标签时,时序有可能会增加。在前面的示例中,如果用户向您的指标添加了一个新标签,则总基数会增加到 100 * 11 * 10 = 11,000 个时序。在这种情况下,即使提醒政策未发生变化,返回的时序数量也会在每个执行期增加 1,000。如果您改为汇总到虚拟机,那么尽管底层基数有所增加,但系统仍只会返回 100 个时序。
过滤掉不必要的响应
配置条件,以便仅评估满足您的提醒需求的数据。如果您不会采取措施来修正某些问题,请将其从提醒政策中排除。例如,您可能不需要发出实习生的开发虚拟机方面的提醒。
为减少不必要的费用和突发事件,您可以过滤掉不重要的时序。您可以使用 Google Cloud 元数据标签为资源添加类别标记,然后过滤掉不需要的元数据类别。
使用 top-stream 运算符来减少返回的时序数量
如果您的条件使用 PromQL 查询,则可以使用 top-stream 运算符选择返回的具有最高值的时序数:
- PromQL:
topk
例如,PromQL 查询中的 topk(metric, 5) 子句会将每个执行期内返回的时序数量限制为 5 个。
将时序限制为前 N 个可能会导致数据缺失或触发错误的突发事件,例如:
- 如果超过 N 个时序违反了您设定的阈值,那么您将错过前 N 个时序之外的数据。
- 如果违规时序出现在前 N 个时序之外,即使被排除的时序仍违反该阈值,突发事件也可能会自动关闭。
- 您的条件查询可能不会显示重要背景信息,例如按预期运行的基准时序。
为降低此类风险,请为 N 选择较大的值,并且仅在评估大量时序的提醒政策中使用 top-stream 运算符,例如针对各个 Kubernetes 容器的突发事件。
增加执行期的时长(仅限 PromQL)
如果您的条件使用 PromQL 查询,则可以通过在条件中设置 evaluationInterval 字段来修改执行期的时长。
评估间隔越长,每月返回的时序就越少;例如,间隔为 15 秒的条件查询的运行频率是间隔为 30 秒的查询的两倍,而间隔为 1 分钟的查询的运行频率是间隔为 30 秒的查询的一半。
监控
本部分介绍了如何通过创建提醒政策来监控费用。 提醒政策可以监控指标数据,并在该数据超出阈值时通知您。
监控每月提取的日志字节数
如需创建一项提醒政策,以在写入日志存储桶的日志字节数超过 Cloud Logging 的用户定义限制时触发,请使用如下设置。
| 新建条件 字段 |
值 |
|---|---|
| 资源和指标 | 在资源菜单中,选择全球。 在指标类别菜单中,选择基于日志的指标。 在指标菜单中,选择每月注入的日志字节数。 |
| 过滤 | 无。 |
| 跨时间序列 时间序列聚合 |
sum |
| 滚动窗口 | 60 m |
| 滚动窗口函数 | max |
| 配置提醒触发器 字段 |
值 |
|---|---|
| 条件类型 | Threshold |
| 提醒触发器 | Any time series violates |
| 阈值位置 | Above threshold |
| 阈值 | 可接受的值由您决定。 |
| 重新测试窗口 | 可接受的最小值是 30 分钟。 |
监控提取的指标总数
无法根据每月的指标提取量创建提醒。但是,您可以针对 Cloud Monitoring 费用创建提醒。如需了解相关信息,请参阅配置结算提醒。
监控每月提取的 Trace span
如需创建一项提醒政策,并在您的月度 Cloud Trace span 提取量超过用户定义的限制时触发,请使用以下设置。
| 新建条件 字段 |
值 |
|---|---|
| 资源和指标 | 在资源菜单中,选择全球。 在指标类别菜单中,选择结算。 在指标菜单中,选择每月提取的 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% 时,您会收到通知。 如需查看完整文档,请参阅设置预算和预算提醒。