本文档介绍了如何将 OpenTelemetry 收集器与 otlphttp 导出器和实现了 OpenTelemetry OTLP 协议的 Telemetry (OTLP) API 搭配使用,telemetry.googleapis.com。通过将 otlphttp 导出器与 Telemetry API 相结合,您可以将 OTLP 指标注入到 Cloud Monitoring。
OTLP 端点支持所有 OTLP 协议,包括 http/proto、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_:./]*的指标名称将被拒绝。 - 如果 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/proto、http/json 和 grpc。从 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 万个样本。您可以申请增加配额。
后续步骤
- 如需有关如何使用 Telemetry API 部署和使用 OpenTelemetry 收集器的分步说明,请参阅部署和使用收集器
- 如需了解如何从使用 SDK 的应用向 Telemetry API 发送指标,请参阅使用 SDK 从应用发送指标。
- 如需了解如何将 OpenTelemetry 收集器和 Telemetry API 与 OpenTelemetry 零代码插桩搭配使用,请参阅将 OpenTelemetry 零代码插桩用于 Java。
- 如需了解如何从其他导出器迁移到
otlphttp导出器,请参阅迁移到 OTLP 导出器。 - 如需详细了解 Telemetry API,请参阅 Telemetry (OTLP) API 概览。