本文档介绍了如何将 OpenTelemetry Collector 与 otlphttp 导出器和实现了 OpenTelemetry OTLP 协议的 Telemetry (OTLP) API telemetry.googleapis.com 搭配使用。通过将 otlphttp 导出器与 Telemetry API 相结合,您可以将 OTLP 指标注入到 Cloud Monitoring。
OTLP 端点支持所有 OTLP 协议,包括 http/protobuf、http/json 和 grpc。如需了解详情,请参阅协议支持。
您还可以从使用 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 脚本从指标范围内删除所有INT64型target_info指标。在查询指数直方图时保留
le标签可能会返回意外结果。预计更常见的histogram_quantile(.99, sum by (le) (metric))查询可以正常运行。在某些情况下(例如增量非常稀疏),增量指标可能无法正确查询。
协议支持
OTLP 端点支持所有 OTLP 协议,包括 http/protobuf、http/json 和 grpc。从 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 万个样本。您可以申请增加配额。
后续步骤
- 如需查看有关如何使用 Telemetry API 部署和使用 OpenTelemetry 收集器的分步说明,请参阅部署和使用收集器
- 如需了解如何从使用 SDK 的应用向 Telemetry API 发送指标,请参阅使用 SDK 从应用发送指标。
- 如需了解如何将 OpenTelemetry 收集器和 Telemetry API 与 OpenTelemetry 零代码插桩搭配使用,请参阅将 OpenTelemetry 零代码插桩用于 Java。
- 如需了解如何从其他导出器迁移到
otlphttp导出器,请参阅迁移到 OTLP 导出器。 - 如需详细了解 Telemetry API,请参阅 Telemetry (OTLP) API 概览。