本文档说明了如何使用 SDK 和 gRPC 导出器(建议与 SDK 搭配使用的导出器)直接从应用向 OTLP 端点发送指标。
OTLP 端点支持所有 OTLP 协议,包括 http/proto、http/json 和 grpc。如需了解详情,请参阅协议支持。
如果您将应用指标直接发送到 OTLP 端点,OpenTelemetry 收集器不会为您处理身份验证和丰富数据。使用 SDK 从应用发送指标时,您需要执行以下操作:
- 按照获取身份验证凭据中所述,为 OTLP gRPC 导出器配置凭据以使用 Google 应用默认凭证。
- 从应用中检测 Google Cloud 和 Kubernetes 资源。具体的操作方法取决于您运行的应用。
准备工作
如需运行示例,您必须启用必要的 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 文件。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 零代码插桩搭配使用,请参阅将 OpenTelemetry 零代码插桩用于 Java。
- 如需了解如何从其他导出器迁移到
otlphttp导出器,请参阅迁移到 OTLP 导出器。 - 如需详细了解 Telemetry API,请参阅 Telemetry (OTLP) API 概览。