Google Cloud Observability 的费用优化

Google Cloud Observability 由一组基于云的托管式服务组成,旨在让您能够深入了解应用和基础设施服务。Google Cloud 上的代管式服务的好处之一是服务基于用量,这意味着您只需按使用量付费。与标准软件许可相比,此价格模式可让您获享成本优势,但预测成本可能颇具挑战性。此解决方案介绍如何了解这些服务使用量及如何优化费用。

价格

由于 Google Cloud Observability 服务是托管式服务,因此您可以专注于它们提供的数据分析,而非使用这些服务所需的基础设施。使用这些服务时,您无需单独为虚拟机、软件许可、安全扫描、硬件维护或数据中心空间付费。这些服务仅按用量付费。

费用包括 Cloud LoggingCloud MonitoringCloud Trace 的费用。Error Reporting 日志记录产品仍处于 Beta 版阶段,没有单独的费用,并且您可以免费使用 Cloud Profiler。对于 Error Reporting,如果 Logging 提取了您应用中的错误,则可能会产生少许费用。

您还可以了解所有价格信息摘要

Logging 和 Error Reporting 费用

Logging 价格基于提取的收费日志量。此产品价格简单地按 GiB 数计算。每月有一定的免费配额,而且某些日志(例如 Cloud Audit Logs)是免费的。

通过额外日志量产生费用的产品使用示例包括使用:

  • Cloud Load Balancing
  • Compute Engine 上的 Logging 代理
  • Amazon Web Services (AWS) 上的 Logging 代理
  • Cloud Logging API 中的写入操作

Monitoring 费用

Monitoring 价格基于提取的收费指标量和收费 API 调用数量。例如,代理指标、自定义指标、外部指标和 AWS 指标等非 Google Cloud 指标是收费的。Cloud Monitoring API 中的 projects.timeSeries.list 方法按照 API 调用计费,而其余的 API 使用情况是免费的。每月有一定的免费指标量配额,而且许多指标(包括所有 Google Cloud 指标)是免费的。如需详细了解哪些指标是收费指标,请参阅 Monitoring 价格

通过指标量和 API 调用产生费用的产品使用示例包括使用:

  • Monitoring 自定义指标
  • Compute Engine 上的 Monitoring 代理
  • AWS 上的 Monitoring 代理
  • Monitoring API 中的读取操作s

Trace 费用

Trace 价格基于提取和最终扫描的 span 数量。某些 Google Cloud 服务(例如 App Engine 标准环境)会自动生成免费 span。Trace 每月有免费配额。

通过提取的 span 产生费用的产品使用示例包括为您的以下各项添加检测:

  • 默认 span 之外的 App Engine 应用的 span
  • Cloud Load Balancing
  • 自定义应用

用量

了解用量可帮助您深入了解哪些组件会产生费用。这有助于确定哪些方面可能适合优化。

Google Cloud 账单分析

要了解您的用量,第一步是查看您的 Google Cloud 账单,并了解您的费用。进行深入了解的一种方法是使用 Google Cloud 控制台中提供的结算报告

“报告”页面提供了一系列有用的过滤条件,可让您根据时间、项目、产品、SKU 和标签缩小结果范围。您可以使用“产品”过滤条件将结算数据的范围缩小为监控和日志记录费用。

日志

Logging 提供了每个项目的日志、当前日志量和预计每月日志量的详细列表。您可以在查看 Google Cloud 账单上的 Logging 费用时查看每个项目的这些详细信息。这样您可以很容易地查看哪些日志的量最大,也就获悉哪些日志的费用占比最大。

您可以在日志存储页面上找到项目中注入的日志量。日志存储页面列出了日志和上月日志量以及当月日志量,以及月末的预计日志量。

通过此分析,您可以深入了解具体项目中日志的使用情况,以及日志量随时间的变化情况。您可以使用此分析来确定应考虑优化的日志。

Monitoring

Monitoring 已整理到指标范围中,提供项目、上月指标量、当月指标量和本月预计指标量的详细列表。由于一个指标范围可能包含多个项目,因此每个项目的各个量是单独列出的,如下图所示。

具有多个项目的工作区

了解如何查找 Monitoring 使用详情

您可以在 Monitoring 的 Metrics Explorer 中查看每个项目的指标量指标的详细图表,深入了解随时间而提取的指标量。

通过此分析,您可以了解您在查看 Google Cloud 账单上的 Monitoring 费用时识别的每个项目的 Monitoring 指标量。然后,您可以查看具体的指标量,并了解哪些组件的指标量和费用最高。

Trace

Trace 可让您查看当月和上月提取的 span 详情。您可以在 Google Cloud 控制台中查看您在查看 Google Cloud 账单上的 Trace 费用时识别的每个项目的这些详细信息。

通过此分析,您可以了解您在查看 Google Cloud 账单上的 Trace 费用时识别的工作区中每个项目提取的 span 数量。然后,您可以查看提取的 span 的具体数量,了解哪些项目和服务的 span 数量和费用最高。

Logging 导出

Logging 提供日志记录接收器,用于将日志导出到 Cloud StorageBigQueryPub/Sub

例如,如果将所有 Logging 日志导出到 BigQuery,以进行长期存储和分析,则会产生 BigQuery 费用,包括每 GiB 存储费用、流式插入费用和任何查询费用。

要了解导出正在产生的费用,请考虑执行以下步骤:

  1. 找到您的日志记录接收器。 找出已启用的日志记录接收器(若有)。例如,您的项目可能已经有多个为不同目的(例如安全操作目的或为满足监管要求)创建的日志记录接收器。
  2. 查看您的使用详情。 查看导出目标的使用情况。例如,BigQuery 导出的 BigQuery 表大小或 Cloud Storage 导出的存储桶大小。

找到您的日志记录接收器

您的日志记录接收器可能处于项目级层(每个项目一个或多个接收器),也可能处于 Google Cloud 组织级层,此种情况下称为汇总导出。接收器可能包含同一 Google Cloud 组织中许多项目的日志。

您可以通过查看特定项目来查看日志记录接收器。 Google Cloud 控制台提供接收器和目标的列表。要查看您的组织的汇总导出,可以使用 gcloud logging sinks list --organization ORGANIZATION_ID 命令行。

查看您的使用详情

Monitoring 不仅为您的应用,还为您的 Google Cloud 产品使用情况提供了一系列丰富的指标。您可以通过在 Metrics Explorer 中查看使用情况指标,来获取 Cloud Storage、BigQuery 和 Pub/Sub 的详细使用情况指标。

Cloud Storage

通过使用 Monitoring 中的 Metrics Explorer,您可以查看 Cloud Storage 存储桶的存储空间大小。在 Metrics Explorer 中使用以下值来查看用于日志记录接收器的 Cloud Storage 存储桶的存储空间大小。

如需使用 Metrics Explorer 查看受监控资源的指标,请执行以下操作:

  1. 在 Google Cloud 控制台的导航面板中,选择 Monitoring,然后选择  Metrics Explorer

    进入 Metrics Explorer

  2. 指标元素中,展开选择指标菜单,在过滤栏中输入 Total bytes,然后使用子菜单选择一个特定资源类型和指标:
    1. 活跃资源菜单中,选择 GCS 存储桶
    2. 活跃指标类别菜单中,选择存储空间
    3. 活跃指标菜单中,选择总字节数
    4. 点击应用
    此指标的完全限定名称为 storage.googleapis.com/storage/total_bytes
  3. 配置数据的查看方式。
    • 过滤条件元素中,点击添加过滤条件,然后选择 project_id。对于该值,请选择您的 Google Cloud 项目 ID。
    • 过滤条件元素中,点击添加过滤条件,然后选择 bucket_name。对于该值,请选择 Cloud Storage 导出存储桶名称。
    • 汇总条目中,将第一个菜单设置为不汇总

    如需详细了解如何配置图表,请参阅使用 Metrics Explorer 时选择指标

Cloud Storage 存储桶的存储空间大小

上图显示了随时间而导出的数据的大小(以 TB 为单位),可让您深入了解 Logging 导出到 Cloud Storage 的使用情况。

BigQuery

通过使用 Monitoring 中的 Metrics Explorer,您可以查看 BigQuery 数据集的存储空间大小。在 Metrics Explorer 中使用以下值来查看用于日志记录接收器的 BigQuery 数据集的存储空间大小。

如需使用 Metrics Explorer 查看受监控资源的指标,请执行以下操作:

  1. 在 Google Cloud 控制台的导航面板中,选择 Monitoring,然后选择  Metrics Explorer

    进入 Metrics Explorer

  2. 指标元素中,展开选择指标菜单,在过滤栏中输入 Stored bytes,然后使用子菜单选择一个特定资源类型和指标:
    1. 活跃资源 (Active resources) 菜单中,选择 BigQuery 数据集 (BigQuery dataset)。
    2. 活跃指标类别 (Active metric categories) 菜单中,选择存储空间 (Storage)。
    3. 活跃指标 (Active metrics) 菜单中,选择存储的字节数 (Stored bytes)。
    4. 点击应用
    此指标的完全限定名称为 bigquery.googleapis.com/storage/stored_bytes
  3. 配置数据的查看方式。
    • 过滤条件元素中,点击添加过滤条件,然后选择 project_id。对于该值,请选择您的 Google Cloud 项目 ID。
    • 过滤条件元素中,点击添加过滤条件,然后选择 dataset_id。对于该值,请选择 BigQuery 导出数据集名称。
    • 汇总条目中,将第一个菜单设置为平均值,并将第二个菜单设置为 dataset_id
    • 显示窗格中,将微件类型设置为堆叠条形图
    • 将时间范围设置为至少一天。

    如需详细了解如何配置图表,请参阅使用 Metrics Explorer 时选择指标

BigQuery 数据集的存储空间大小。

上图显示了随时间而导出的数据集的大小(以 TB 为单位),可让您深入了解 Logging 导出到 BigQuery 的使用情况。

Pub/Sub

通过使用 Monitoring 中的 Metrics Explorer,您可以查看导出到 Pub/Sub 的消息的数量和大小。在 Metrics Explorer 中使用以下值来查看用于日志记录接收器的 Pub/Sub 主题的存储空间大小。

如需使用 Metrics Explorer 查看受监控资源的指标,请执行以下操作:

  1. 在 Google Cloud 控制台的导航面板中,选择 Monitoring,然后选择  Metrics Explorer

    进入 Metrics Explorer

  2. 指标元素中,展开选择指标菜单,在过滤栏中输入 Byte cost,然后使用子菜单选择一个特定资源类型和指标:
    1. 活跃资源菜单中,选择 Cloud Pub/Sub 主题 (Cloud Pub/Sub topic)。
    2. 活跃指标类别 (Active metric categories) 菜单中,选择主题 (Topic)。
    3. 活跃指标 (Active metrics) 菜单中,选择主题字节费用 (Topic byte cost)。
    4. 点击应用
    此指标的完全限定名称为 pubsub.googleapis.com/topic/byte_cost
  3. 配置数据的查看方式。
    • 过滤条件元素中,点击添加过滤条件,然后选择 project_id。对于该值,请选择您的 Google Cloud 项目 ID。
    • 过滤条件元素中,点击添加过滤条件,然后选择 topic_id。对于该值,请选择您的 Pub/Sub 导出主题名称。
    • 汇总条目中,将第一个菜单设置为不汇总

    如需详细了解如何配置图表,请参阅使用 Metrics Explorer 时选择指标

Pub/Sub 主题的存储空间大小 上图显示了随时间而导出的数据的大小(以 KB 为单位),可让您深入了解从 Logging 到 Pub/Sub 的导出的使用情况。

实施费用控制措施

以下选项介绍了有助于降低费用的方法。每个选项都以限制您更深入地了解应用和基础架构为代价。请选择能在可观测性和费用之间达成最佳权衡的选项。

Logging 费用控制

要优化 Logging 使用情况,您可以减少提取到 Logging 中的日志数量。您可以使用多种策略来帮助减少日志量,同时继续保留开发者和运营者所需的日志。

排除日志

您可以从 Logging 或 Error Reporting 中排除开发者和运营团队不需要的大多数日志。

排除日志意味着这些日志不会出现在 Logging 或 Error Reporting 界面中。您可以使用日志记录过滤条件来选择要排除的特定日志条目或整个日志。您还可以使用抽样排除规则来排除一定比例的日志条目。例如,您可以选择由于数量过多或缺乏实际价值来排除某些日志。

以下是几个常见的排除示例:

  • 排除来自 Cloud Load Balancing 的日志。负载均衡器会为高流量应用生成海量日志。例如,您可以使用日志记录过滤条件,排除 90% 来自 Cloud Load Balancing 的消息。
  • 排除 Virtual Private Cloud (VPC Service Controls) 流日志。流日志包括 VPC Service Controls 网络中虚拟机之间每次通信的日志,这样会生成海量日志。有两种方法可以减少日志量,这两种方法可以一起使用或单独使用。

    • 按日志条目内容排除。排除大多数 VPC 流日志,仅保留可能有用的特定日志消息。例如,如果您的专用 VPC 不应接收来自外部来源的入站流量,那么您可能只希望保留这样的流日志,它们包含来自外部 IP 地址的来源字段。
    • 按百分比排除。另一种方法是仅对一定比例按过滤条件识别的日志进行采样。例如,您可以排除 95% 的流日志,仅保留 5%。
  • 从请求日志中排除 HTTP 200 OK 响应。对于应用,HTTP 200 OK 消息可能不会提供太多的数据分析,但会为高流量应用生成大量日志。

要实施日志记录排除,请参阅日志排除

导出日志

您可以导出日志,同时不将日志提取到 Logging 中。这可让您将日志保留在 Cloud Storage 和 BigQuery 中,或使用 Pub/Sub 处理日志,同时将日志排除在 Logging 之外,这可能有助于降低费用。这意味着您可以导出日志,但这些日志不会出现在 Logging 中。

您可以使用此方法保留日志以进行长期分析,而不会产生将日志提取到 Logging 的费用。如需详细了解排除和导出如何相互作用,请参阅日志生命周期图,该图说明了如何在 Logging 中处理导出的日志条目。

减少 Logging 代理的使用

您可以不将 Logging 代理生成的额外日志发送到 Logging,从而减少日志量。Logging 代理会流式传输常见的第三方应用(例如 Apache、Mongodb 和 MySQL)的日志。

例如,您可以选择不将开发环境或者其他非必要环境中的虚拟机 Logging 代理添加到 Logging,从而减少日志量。您的虚拟机会继续将标准日志报告给 Logging,但不会报告来自第三方应用或 syslog 的日志。

Monitoring 费用控制

要优化 Monitoring 的使用,您可以减少提取到 Monitoring 的收费指标的量,减少对 Monitoring API 的读取调用的数量。您可以使用多种策略来减少指标量,同时继续保留开发者和运营者所需的指标。

优化指标和标签的使用

对 Monitoring 自定义指标使用标签的方式可能会影响生成的时序数量。

如果您拥有包含两个标签的自定义指标(例如 cost_centerenv 值),则可以通过将这两个标签的基数相乘来计算时序的最大数量。

total_num_time_series = cost_center_cardinality * env_cardinality

如果有 11 个 cost_center 值和 5 个 env 值,则意味着最多可以生成 55 个时序。这也解释了为何添加额外的指标标签可能会显著增加指标数量,并从而增加费用。如需详细了解指标基数,请参阅 Cloud Monitoring 提示和技巧:了解指标和构建图表博文。

为最大程度减少时序的数量,我们建议您:

  • 尽可能限制自定义指标标签的数量。
  • 仔细选择标签,以避免基数很大的标签值。例如,使用 user_id 作为标签将为每个用户至少生成一个时序,因此如果您有大量流量,则该数字可能很大。

减少 Monitoring 代理的使用

从 Monitoring 代理发送的指标是收费指标。 Monitoring 代理会流式传输常见的第三方应用(例如 Apache、MySQL 和 Nginx)的应用和系统指标以及额外的 Google Cloud 虚拟机级指标。如果对于某些虚拟机,您不需要详细系统指标或来自第三方应用的指标,则可以不发送这些指标,从而减少指标量。您还可以通过减少使用 Monitoring 代理的虚拟机的数量来减少指标量。

例如,您可以选择不将开发环境或其他非必要环境中的 Google Cloud 项目添加到 Monitoring,从而减少指标量。此外,您还可以选择不在开发环境或其他非必要环境的虚拟机中添加 Monitoring 代理。

减少自定义指标的使用

自定义指标是通过使用 Monitoring API 监控用户检测的任何指标而创建的收费指标。您可以使用 Monitoring API 或通过集成来创建这些指标。

其中一种集成是 OpenCensus。OpenCensus 是用于从应用收集指标和分布式跟踪记录的库的发行版。 使用 OpenCensus 检测的应用可以使用自定义指标向多个后端(包括 Monitoring)报告指标。这些指标显示在 Monitoring 中的 custom.googleapis.com/opencensus 前缀资源类型下。例如,OpenCensus 报告的客户端往返延迟显示在 Monitoring 中的 custom.googleapis.com/opencensus/grpc.io/client/roundtrip_latency 资源类型下。

为发送指标而检测的应用越多,生成的自定义监控指标就越多。如果要减少指标量,您可以减少应用发送的自定义监控指标的数量。

Trace 费用控制

要优化 Trace 的使用,您可以减少提取和扫描的 span 的数量。如果为向 Trace 报告 span 而检测应用,您可以使用采样来提取一部分流量。 采样是跟踪系统的重要部分,因为它可以让您深入了解应用组件(例如 RPC 调用)导致的延迟的明细。 这不仅是使用 Trace 的最佳做法,而且您还可能出于降低费用的原因而降低 span 量。

使用 OpenCensus 采样

如果使用 Trace 作为 OpenCensus 跟踪记录的导出目标,则可以使用 OpenCensus 中的采样功能来减少提取的跟踪记录量。

例如,如果您的热门网络应用每秒有 5000 次查询,则对应用流量的 5% 进行采样就可让您获得足够洞见,而不用对 20% 进行采样。这会将提取到 Trace 的 span 的数量减少到四分之一。

您可以针对 Trace 使用 OpenCensus Python 库,在 instrumentation 配置中指定采样。例如,OpenCensus Python 导出器提供了一个 ProbabilitySampler,可用于指定采样率。

from opencensus.trace.samplers import probability
from opencensus.trace import tracer as tracer_module

# Sampling the requests at the rate equals 0.05
sampler = probability.ProbabilitySampler(rate=0.05)
tracer = tracer_module.Tracer(sampler=sampler)

使用 Cloud Trace API span 配额

您可以使用配额来限制 Trace 的使用和费用。您可以使用 Google Cloud 控制台中的 API 特定配额页面来强制执行 span 配额。

设置一个低于默认产品配额的特定配额意味着您可以保证项目不会超过特定配额限制。 这是确保费用符合预期的一种方法。您可以在 API 特定配额页面中监控此配额,如下图所示。

监控 API 特定配额页面

如果您减少了 span 配额,则还应考虑监控 span 配额指标,并在 Monitoring 中设置提醒政策,以在使用量接近配额时发送提醒。此提醒会提示您查看使用情况,并确定可能正在生成大量 span 的应用和开发者。如果您设置了 span 配额,但超出配额,则在您调整配额之前 span 会被丢弃。

例如,如果您的 span 配额为 50M 提取的 span,那么您可以设置成只要使用了 80% 的 API 配额(即 40M span)就发送提醒。按照管理提醒政策中的说明使用以下详细信息来创建提醒政策。

  1. 在 Google Cloud 控制台中,前往 Monitoring 或使用下面的按钮:
    前往 Monitoring
  2. 在 Monitoring 导航窗格中,选择 提醒,然后选择创建政策
  3. 为提醒政策输入名称。
  4. 点击添加条件
    1. 目标窗格中的设置指定了要监控的资源和指标。 点击文本框以启用菜单,然后选择资源 global
    2. 点击文本框以启用菜单,然后选择 cloudtrace.googleapis.com/billing/monthly_spans_ingested
    3. 添加以下过滤条件值:
      • 点击 project_id,然后选择您的 Google Cloud 项目 ID。
      • 点击 chargeable,然后选择 true
    4. 提醒政策的 Configuration 窗格中的设置决定了何时会触发提醒。填写以下字段:
      • 对于条件触发的条件,选择任何违反时间序列的情况
      • 对于阈值,请输入 40000000
      • 对于对于,请选择最新值
    5. 点击保存
  5. 点击保存

    由提醒政策生成的提醒类似于以下提醒。 在提醒中,您可以看到有关项目、生成提醒的提醒政策和指标的当前值的详细信息。

提醒详情

优化第三方调用者

您的应用可能会被其他应用调用。如果您的应用报告 span,则您的应用报告的 span 的数量可能取决于您从第三方应用接收的传入流量。例如,如果您的前端微服务会调用结账微服务,并且这两项微服务都使用 OpenCensus 进行检测,则流量的采样率至少与前端采样率一样高。了解检测的应用如何相互作用让您可评估所提取 span 的数量的影响。

Logging 导出

如果您担心与 Logging 导出相关的费用过高,可以更新日志记录接收器,以使用日志记录过滤条件来减少导出的日志量。您可以将不需要的日志从导出中排除。

例如,如果您的环境中的应用在 Compute Engine 上运行,且使用 Cloud SQL、Cloud Storage 和 BigQuery,您可以将生成的日志限制为仅包含这些产品的信息。以下过滤条件将导出的日志限制为 Cloud Audit Logs、Compute Engine、Cloud Storage、Cloud SQL 和 BigQuery 的日志。您可以将此过滤条件用于日志记录接收器,从而仅包含所选日志。

logName:"/logs/cloudaudit.googleapis.com" AND
(resource.type:gce OR
resource.type=gcs_bucket OR
resource.type=cloudsql_database OR
resource.type=bigquery_resource)

总结

Google Cloud Observability 让您可以查看产品使用情况数据,便于您了解产品的使用详情。此使用情况数据让您可以配置产品,以便能适当地优化您的使用和费用。

后续步骤