技术之海一望无际, 记忆长流永无止境|

丿似锦

园龄:7年3个月粉丝:33关注:3 随笔 - 173  文章 - 0  评论 - 70  阅读 - 74万

🎀OpenTelemetry探针介绍及使用

💖简介

OpenTelemetry(简称 Otel)是由 CNCF 主导的云原生可观测性标准框架,用于统一采集、处理和导出分布式系统中的遥测数据(如追踪、指标、日志)。其核心目标是通过标准化协议和工具集,解决传统监控体系中数据碎片化的问题,提供跨语言、跨平台的无缝集。

📖官网

https://opentelemetry.io/zh/

👉核心功能

  • 追踪(Traces):记录应用程序内或跨多个服务的请求流。

  • 指标(Metrics):捕获关于应用程序性能和运行状况的数据点。

  • 日志(Logs):记录应用程序产生的日志信息。

⚡主要组件

  • API:定义了采集遥测数据的标准接口。

  • SDK:提供了实现 API 的具体逻辑,包括配置、处理数据等。

  • Exporters:将数据发送到外部系统,如 JaegerZipkinPrometheus 等。

  • Collector:可选组件,用来接收、处理和转发遥测数据。

🔥模式

  • 手动插桩:开发者需在代码中显式添加遥测逻辑,适用于高度定制化场景。

  • 自动插桩:通过探针自动注入遥测代码,无需修改应用代码,适用于快速集成,尤其支持 JavaGo 等主流语言。

⭐无侵入式接入

🌟下载并配置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 CollectorOTLP 接收端点

🌟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 将数据导出到 JaegerPrometheus 等后端

💥优势

  • 无侵入性:无需修改代码即可支持主流框架(如 Spring BootgRPC)的自动埋点。

  • 灵活性:支持多协议(OTLP/gRPC/HTTP)和多后端(如阿里云Jaeger)的数据导出。

  • 跨语言支持:除 Java 外,还提供 GoPython.NET 等语言的 AgentSDK


结束

本文作者:丿似锦

本文链接:https://www.cnblogs.com/zktww/p/18698920

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   丿似锦  阅读(21)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起