OTLP 指标注入概览

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

OTLP 端点支持所有 OTLP 协议,包括 http/protobufhttp/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_:./-]* 的指标名称将被拒绝。指标名称中允许使用的特殊字符仅限于 _:./- 中的字符。
    • 包含不符合正则表达式 [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 脚本从指标范围内删除所有 INT64target_info 指标。

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

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

协议支持

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

结算

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

限制和配额

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

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

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

后续步骤