费用控制和归因

Google Cloud Managed Service for Prometheus 会对提取到 Cloud Monitoring 的样本数量和发送到 Monitoring API 的读取请求收费。注入的样本数量是造成费用的主要因素。

本文档介绍了如何控制与指标注入相关的成本以及如何识别大量注入的来源。

如需详细了解 Managed Service for Prometheus 的价格,请参阅 Managed Service for Prometheus 价格摘要

查看您的帐单

如需查看您的 Google Cloud 帐单,请执行以下操作:

  1. 在 Google Cloud Console 中,转到结算页面。

    转到“结算”

  2. 如果您有多个结算帐号,请选择转至关联的结算帐号以查看当前项目的结算帐号。如需查找不同的结算帐号,请选择管理结算帐号,然后选择想要获取其用量报告的帐号。

  3. 选择报告

  4. 服务菜单中,选择 Stackdriver Monitoring 选项。

  5. SKU 菜单中选择以下选项:

    • 注入的 Managed Service for Prometheus 样本
    • Monitoring API 请求

以下屏幕截图显示了来自一个项目的 Managed Service for Prometheus 的结算报告:

Managed Service for Prometheus 的结算报告会显示当前和预计的使用情况。

降低费用

如需降低与使用 Managed Service for Prometheus 相关的费用,您可以执行以下操作:

  • 通过过滤生成的指标数据,减少发送到代管式服务的时间序列的数量。
  • 通过更改抓取间隔来减少收集的样本数量。
  • 限制来自可能错误配置的高基数指标的样本数量。

减少时序的数量

开源 Prometheus 文档很少建议过滤指标量,当费用受机器费用限制时,这是合理的。但是,在按单元支付代管式服务提供商的费用时,发送无限制的数据可能会导致不必要的高昂账单。

kube-prometheus 项目(尤其是 kube-state-metrics 服务)中包含的导出器可以发出大量指标数据。例如,kube-state-metrics 服务会发出数百个指标,其中许多指标可能对您而言没有价值。使用 kube-prometheus 项目的全新三节点集群每秒向 Managed Service for Prometheus 发送大约 900 个样本。过滤这些不相关的指标本身可能足以让您将费用降低到可接受的水平。

要减少指标数量,您可以执行以下操作:

例如,如果您使用的是 kube-state-metrics 服务,则可能需要从抓取配置中的 keep 过滤条件开始,然后对其进行调整。例如,在新的三节点集群上使用以下过滤条件时,可将样本量减少大约每秒 125 个样本:

kube_(daemonset|deployment|pod|namespace|node|statefulset).+

有时,您可能会发现整个导出器并不重要。例如,kube-prometheus 软件包默认安装以下服务监控服务,其中许多在代管式环境中都是不必要的:

  • alertmanager
  • coredns
  • grafana
  • kube-apiserver
  • kube-controller-manager
  • kube-scheduler
  • kube-state-metrics
  • kubelet
  • node-exporter
  • prometheus
  • prometheus-adapter
  • prometheus-operator

要减少导出的指标数量,您可以删除、禁用或停止抓取不需要的服务监视器。例如,在新的三节点集群上停用 kube-apiserver 服务监控器可将样本量每秒减少大约 200 个样本。

减少收集的样本数量

Managed Service for Prometheus 按样本收费。您可以通过增加采样周期的长度来减少注入的样本数量。例如:

  • 将 10 秒采样周期更改为 30 秒采样周期可将采样量减少 66%,而不会丢失大量信息。
  • 将 10 秒采样周期更改为 60 秒采样周期可将采样量减少 83%。

如需了解样本的计算方式以及采样周期对样本数量的影响,请参阅基于注入的样本的价格示例

通常可以按作业或按目标设置注入间隔。

对于代管式收集,您可以使用 interval 字段在 PodMonitoring 资源中设置抓取间隔。对于自部署集合,通常通过设置 intervalscrape_interval 字段在抓取配置中设置采样间隔。

限制高基数指标的样本

您可以通过添加具有大量潜在值的标签(例如用户 ID 或 IP 地址)来创建高基数指标。此类指标可能会生成大量样本。使用具有大量值的标签通常是一种错误配置。通过在抓取配置中设置 sample_limit 值,您可以防止自部署收集器中的高基数指标。

如果您使用此限制,我们建议您将其设置为非常高的值,以便仅捕获明显配置错误的指标。任何超出限制的样本都会被丢弃,并且超出诊断的限制可能会导致很难诊断。

使用样本限制不能很好地管理样本注入,但该限制可以防止意外配置错误。如需了解详情,请参阅使用 sample_limit 以避免过载

确定和归因费用

您可以使用 Cloud Monitoring 来标识写入最多样本的 Prometheus 指标。这些指标对费用的影响最大。在确定费用最高的指标后,您可以修改抓取配置以适当过滤这些指标。

以下部分介绍了分析发送到 Managed Service for Prometheus 的样本数量以及将大量指标归因于特定指标、Kubernetes 命名空间和 Google Cloud 区域的方法。

标识大量指标

如需标识注入量最大的 Prometheus 指标,请执行以下操作:

  1. 在 Google Cloud Console 中,转到 Monitoring 页面。

    转至 Resources

  2. 在 Monitoring 导航窗格中,点击 Metrics Explorer
  3. 选择配置标签页,然后使用以下信息填写字段:
    1. 对于资源类型字段,输入或选择指标提取归因
    2. 对于指标字段,输入或选择由归因 ID 写入的样本
    3. 对于分组依据字段,选择 metric_type
    4. 对于聚合器字段,选择总和

    该图表现在会显示每种指标类型的注入量。

  4. 如需标识注入量最大的指标,请点击图表图例中的

生成的图表显示按平均值排序的 300 个热门指标,如以下屏幕截图所示:

已配置的图表显示每个指标的指标注入量。

标识大量命名空间

您还可以使用上述示例中的指标和资源类型将注入量归因于特定的 Kubernetes 命名空间,然后采取适当的措施。例如:

  • 如需将总体注入量与命名空间相关联,请为分组依据字段选择以下标签:

    • attribution_dimension
    • attribution_id
  • 如需将各个指标的注入量与命名空间相关联,请为分组依据字段选择以下标签:

    • attribution_dimension
    • attribution_id
    • metric_type
  • 如需标识负责特定大量指标的命名空间,请执行以下操作:

    1. 使用其他示例之一标识大量指标类型,以标识大量指标的指标类型。指标类型是图表图例中以 prometheus.googleapis.com/ 开头的字符串。
    2. 如需将图表数据限制为特定指标类型,请在过滤条件字段中添加指标类型的过滤条件。例如:

      metric_type=prometheus.googleapis.com/container_tasks_state/gauge

    3. 分组依据字段中选择以下标签:

      • attribution_dimension
      • attribution_id
  • 如需按 Google Cloud 区域查看注入的数据,请将位置标签添加到分组依据字段。

  • 如需按 Cloud 项目查看注入的数据,请将 resource_container 标签添加到分组依据字段。