本文档介绍了如何使用 SDK 和 gRPC 导出器(建议与 SDK 搭配使用的导出器)将指标直接从应用发送到 OTLP 端点。OTLP 端点支持所有 OTLP 协议,包括 http/proto、http/json 和 grpc。如需了解详情,请参阅协议支持。
当您将应用指标直接发送到 OTLP 端点时,OpenTelemetry 收集器不会为您处理身份验证、资源检测或批处理。使用 SDK 从应用发送指标时,您需要执行以下操作:
- 如获取身份验证凭证中所述,将 OTLP gRPC 导出器的凭证配置为使用 Google 应用默认凭证。
- 从应用中检测 Google Cloud 和 Kubernetes 资源。具体的操作方法取决于您运行的应用。
- 将导出批次大小上限配置为 200 个指标数据点,以便请求不超过每个请求 200 个数据点的 Telemetry API 限制。
准备工作
如需运行示例,您必须启用必要的 API 并获取身份验证凭证。
启用 API
通过运行以下命令,在Google Cloud 项目中启用 Cloud Monitoring API 和 Telemetry API:
gcloud services enable monitoring.googleapis.com telemetry.googleapis.com
获取身份验证凭证
通过运行以下命令,将 OTLP gRPC 导出器的凭证配置为使用 Google 应用默认凭证:
gcloud auth application-default login
针对具体语言的示例
本部分提供了一些特定语言的示例,这些示例用于创建和写入计数器指标。选择一个标签页,了解如何运行示例并查看代码。
Go
如需了解如何配置和运行此示例,请参阅 Go 示例的 README 文件。
Java
如需了解如何配置和运行此示例,请参阅 Java 示例的 README 文件。
NodeJS
如需了解如何配置和运行此示例,请参阅 NodeJS 示例的 README 文件。
Python
如需了解如何运行此示例,请参阅 Python 示例的 README 文件。
对作为 Pod 运行的应用使用 Downward API
如果您在 Kubernetes 中以 Pod 形式运行应用,并且不通过 OpenTelemetry 收集器发送遥测数据,请务必使用向下 API 设置 Kubernetes 资源属性:
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: NAMESPACE_NAME
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: CONTAINER_NAME
value: my-container-name
- name: OTEL_RESOURCE_ATTRIBUTES
value: k8s.pod.name=$(POD_NAME),k8s.namespace.name=$(NAMESPACE_NAME),k8s.container.name=$(CONTAINER_NAME)
后续步骤
- 如需了解如何将 OpenTelemetry 收集器和 Telemetry API 与 OpenTelemetry 零代码插桩搭配使用,请参阅使用适用于 Java 的 OpenTelemetry 零代码插桩。
- 如需了解如何从其他导出器迁移到
otlphttp导出器,请参阅迁移到 OTLP 导出器。 - 如需详细了解 Telemetry API,请参阅 Telemetry (OTLP) API 概览。