OTLP 指标注入概览

本文档介绍了如何将 OpenTelemetry 收集器与 otlphttp 导出器和实现了 OpenTelemetry OTLP 协议Telemetry (OTLP) API 搭配使用,telemetry.googleapis.com。通过将 otlphttp 导出器与 Telemetry API 相结合,您可以将 OTLP 指标注入到 Cloud Monitoring。

OTLP 端点支持所有 OTLP 协议,包括 http/protohttp/jsongrpc。如需了解详情,请参阅协议支持

您还可以从使用 SDK 的应用直接向 Telemetry API 发送指标。如需了解详情,请参阅使用 SDK 从应用发送指标

如果您使用的是 Google Kubernetes Engine,则可以按照适用于 GKE 的受管 OpenTelemetry 中的说明操作,而无需手动部署和配置使用 Telemetry API 的 OpenTelemetry 收集器。

只有在使用 OpenTelemetry 收集器版本 0.140.0 或更高版本时,OTLP for Prometheus 指标才能正常运行。

Telemetry API 中的指标和标签名称

本部分介绍了使用 Telemetry API 将指标提取到 Cloud Monitoring 时所用的命名惯例和要求:

  • 指标名称和标签键不支持完整的 UTF-8。

    • 不符合正则表达式 [a-zA-Z][a-zA-Z0-9_:./]* 的指标名称将被拒绝。
    • 如果 DataPoint 包含不符合正则表达式 [a-zA-Z_][a-zA-Z0-9_.]* 的属性(即标签键),系统会拒绝该 DataPoint。

    为避免因这些原因而导致指标被拒,您可以使用 replace_pattern 函数设置处理器,以转换指标名称和属性。

  • 重要提示:如果指标名称和标签键包含冒号 (:) 和下划线 (_) 以外的特殊字符,则必须根据 PromQL 的 UTF-8 规范将它们用花括号 ({}) 和引号 (") 括起来。例如,以下查询是有效的:

    • {"my.metric.name"}
    • {"my.metric.name", "label.key.KEY"="value"}

Telemetry API 指标和 Cloud Monitoring

本部分介绍使用 Telemetry API 和 otlphttp 指标导出器注入的指标如何与 Cloud Monitoring 交互:

  • INT64 型指标和 DOUBLE 型指标之间可能会发生值类型冲突,尤其是当您之前发送过 target_info 指标时。如果您遇到此类冲突,请删除 INT64 指标描述符。您可以使用此 Golang 脚本从指标范围内删除所有 INT64 类型的 target_info 指标。

  • 在查询指数直方图时保留 le 标签可能会返回意外结果。预计更常见的 histogram_quantile(.99, sum by (le) (metric)) 查询可以正常运行。

  • 在某些情况下(例如增量非常稀疏),增量指标可能无法正确查询。

协议支持

OTLP 端点支持所有 OTLP 协议,包括 http/protohttp/jsongrpc。从 OpenTelemetry 收集器导出时,您可以使用任何协议。不过,由于大多数 SDK 导出器不支持动态令牌刷新,因此我们建议在直接从 SDK 导出时仅使用 gRPC OTLP 导出器,而不要使用 HTTP 导出器。如需了解详情,请参阅使用 SDK 从应用发送指标

结算

OTLP 指标的结算费用计入“Prometheus 样本注入”SKU 下,该 SKU 与 Google Cloud Managed Service for Prometheus 指标所用的 SKU 相同。如需了解详情,请参阅“结算”页面

限制和配额

使用 Telemetry API 提取指标时,需遵守 Telemetry API 指标限制

此外,所有标准 Cloud Monitoring 和 Google Cloud Managed Service for Prometheus 指标配额和限制均适用。例如,指标的标签数不能超过 200 个。

Telemetry API 提取的指标的默认配额为每分钟 60,000 个请求。如果每个请求的批次大小上限为 200 个点,则有效默认配额为每秒 20 万个样本。您可以申请增加配额。

后续步骤