🎀OpenTelemetry探针介绍及使用

💖简介
OpenTelemetry(简称 Otel)是由 CNCF 主导的云原生可观测性标准框架,用于统一采集、处理和导出分布式系统中的遥测数据(如追踪、指标、日志)。其核心目标是通过标准化协议和工具集,解决传统监控体系中数据碎片化的问题,提供跨语言、跨平台的无缝集。
📖官网
👉核心功能
-
追踪(
Traces):记录应用程序内或跨多个服务的请求流。 -
指标(
Metrics):捕获关于应用程序性能和运行状况的数据点。 -
日志(
Logs):记录应用程序产生的日志信息。
⚡主要组件
-
API:定义了采集遥测数据的标准接口。 -
SDK:提供了实现API的具体逻辑,包括配置、处理数据等。 -
Exporters:将数据发送到外部系统,如Jaeger、Zipkin、Prometheus等。 -
Collector:可选组件,用来接收、处理和转发遥测数据。
🔥模式
-
手动插桩:开发者需在代码中显式添加遥测逻辑,适用于高度定制化场景。
-
自动插桩:通过探针自动注入遥测代码,无需修改应用代码,适用于快速集成,尤其支持
Java、Go等主流语言。
⭐无侵入式接入
🌟下载并配置Java Agent
- 下载
Agent:从OpenTelemetry官方仓库获取最新版opentelemetry-javaagent.jar。 - 启动参数配置:在
Java应用的启动命令中添加Agent及相关参数:
java -javaagent:/path/to/opentelemetry-javaagent.jar \
-Dotel.service.name=my-java-app \
-Dotel.exporter.otlp.endpoint=http://otel-collector:4317 \
-jar my-app.jar
关键参数说明:
-javaagent:指定Agent路径。
otel.service.name:定义服务名称。
otel.exporter.otlp.endpoint:设置OpenTelemetry Collector的OTLP接收端点
🌟Kubernetes环境自动注入
应用部署在Kubernetes,可通过 OpenTelemetry Operator 自动注入探针:
- 安装
Operator:
kubectl apply -f https://github.com/open-telemetry/opentelemetry-operator/releases/latest/download/opentelemetry-operator.yaml
- 创建
Instrumentation CRD:定义探针的全局配置
apiVersion: opentelemetry.io/v1alpha1
kind: Instrumentation
metadata:
name: java-instrumentation
spec:
sampler:
type: parentbased_traceidratio
argument: "1"
java:
env:
- name: OTEL_EXPORTER_OTLP_ENDPOINT
value: "http://otel-collector:4317"
- 为
Pod添加注解
annotations:
instrumentation.opentelemetry.io/inject-java: "true"
Operator将自动注入初始化容器及环境变量,实现探针加载
🌈高级配置
- 环境变量扩展:支持配置采样率、资源属性等
-Dotel.traces.sampler=parentbased_traceidratio \
-Dotel.traces.sampler.arg=0.1 \
-Dotel.resource.attributes=deployment.environment=prod
- 集成后端系统:通过
OpenTelemetry Collector将数据导出到Jaeger、Prometheus等后端
💥优势
-
无侵入性:无需修改代码即可支持主流框架(如
Spring Boot、gRPC)的自动埋点。 -
灵活性:支持多协议(
OTLP/gRPC/HTTP)和多后端(如阿里云、Jaeger)的数据导出。 -
跨语言支持:除
Java外,还提供Go、Python、.NET等语言的Agent或SDK
结束

浙公网安备 33010602011771号