本文档介绍了可用于降低提醒费用的策略。 如需了解价格模式,请参阅 Google Cloud Observability 价格。
整合提醒政策以监控更多资源
提醒功能按条件计费。因此,请尽可能使用一个提醒政策来监控多个资源,而不是为每个资源创建一个提醒政策。
例如,假设您有 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 秒的查询的一半。