简介

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


结束

🎀OpenTelemetry探针介绍及使用的更多相关文章

  1. OpenTelemetry架构介绍

    OpenTelemetry: 经得起考验的工具 摘自:https://blog.newrelic.com/product-news/what-is-opentelemetry/ 目录 OpenTele ...

  2. 【七】Kubernetes 探针介绍 - 存活、就绪探针案例测试

    一.探针概述 探针是有 kubelet 对容器执行的定期诊断,并不是由 Master 节点发起的探测,而是由每一个 Node 所在的 kubelet 进行探测,这样可以减轻 Master 节点系统负载 ...

  3. 009.OpenShift管理及监控

    一 资源限制 1.1 pod资源限制 pod可以包括资源请求和资源限制: 资源请求 用于调度,并控制pod不能在计算资源少于指定数量的情况下运行.调度程序试图找到一个具有足够计算资源的节点来满足pod ...

  4. 记一次k8s pod频繁重启的优化之旅

    关键词:k8s.jvm.高可用 1.背景 最近有运维反馈某个微服务频繁重启,客户映像特别不好,需要我们尽快看一下. 听他说完我立马到监控平台去看这个服务的运行情况,确实重启了很多次.对于技术人员来说, ...

  5. 🏆【Java技术专区】「探针Agent专题」Java Agent探针的技术介绍(1)

    前提概要 Java调式.热部署.JVM背后的支持者Java Agent: 各个 Java IDE 的调试功能,例如 eclipse.IntelliJ : 热部署功能,例如 JRebel.XRebel. ...

  6. Java探针技术-retransformclasses的介绍

    retransformclasses void retransformclasses(class... classes) throws unmodifiableclassexception 重转换提供 ...

  7. .NET无侵入自动化探针原理和主流实现

    前言 最近,我在微信公众号和博客园分享了一篇关于.NET微服务系统迁移至.NET 6.0的故事的文章,引起了许多读者的关注.其中,许多人对基于 OpenTelemetry .NET 的观测指标和无侵入 ...

  8. 聊聊并发(八)——Fork/Join框架介绍

      作者 方腾飞 发布于 2013年12月23日 | 被首富的“一个亿”刷屏?不如定个小目标,先把握住QCon上海的优惠吧!2 讨论 分享到:微博微信FacebookTwitter有道云笔记邮件分享 ...

  9. 开源APM系统skywalking介绍与使用

    介绍 SkyWalking 创建与2015年,提供分布式追踪功能.从5.x开始,项目进化为一个完成功能的Application Performance Management系统.他被用于追踪.监控和诊 ...

  10. 深入浅出Java探针技术1--基于java agent的字节码增强案例

    Java agent又叫做Java 探针,本文将从以下四个问题出发来深入浅出了解下Java agent 一.什么是java agent? Java agent是在JDK1.5引入的,是一种可以动态修改 ...

随机推荐

  1. Kotlin基础语法

  2. sqlserver grouping函数和with rollup的使用

    --使用WITH ROLLUP 生成的结果集显示所选列中值的某一层次结构的聚合,GROUPING()函数判断是否根据当前字段进行了求和的行SELECT sjxm, (CASE WHEN GROUPIN ...

  3. 从拼积木到最长连续序列:一道别出心裁的数组题目|LeetCode 128 最长连续序列

    LeetCode 128 最长连续序列 点此看全部题解 LeetCode必刷100题:一份来自面试官的算法地图(题解持续更新中) 生活中的算法 你小时候一定玩过数字积木吧?一堆写着不同数字的积木块散落 ...

  4. shell 变量的运算、保存硬件信息脚本

    变量的数学运算 方法一:expr ##加减乘除 [root@localhost ~]# num1=10[root@localhost ~]# num2=16[root@localhost ~]# ex ...

  5. P6108 [Ynoi2009] rprsvq 积分题解

    给 EI 题解写注 qwq.. 化简方差: \[\frac{1}{n}\sum(a_i-\overline a)^2\\ =\frac{1}{n}(\sum a_i^2-2\overline {a}\ ...

  6. spring的事务管理有几种方式实现

    一.事务的4个特性:   原子性:一个事务中所有对数据库的操作是一个不可分割的操作序列,要么全做,要么全部做.   一致性:数据不会因为事务的执行而遭到破坏.   隔离性:一个事务的执行,不受其他事务 ...

  7. 一键部署+限免体验!盘点如何在华为云上体验DeepSeek

    本文分享自华为云社区<一键部署+限免体验!盘点如何在华为云上体验DeepSeek>,作者:华为云社区精选. 还在为DeepSeek深度思考出现"服务器繁忙"而头疼?华为 ...

  8. 解决微信小程序原生云开发退款报错“特约子商户商户号未授权服务商的产品权限”的问题

    背景:微信小程序云开发支付没问题,退款时就会报这个错. 现象: 解决方法流程: 1.打开微信小程序开发者工具上面的云开发界面: 2.进入设置: 3.其他设置: 需要授权退款API权限,我这里已经授权了 ...

  9. DeepSeek文本和编程测试

    2025年春节期间,能直面电影<哪吒2>锋芒的,也就只有号称"国运级"的大模型DeepSeek了. 在科技圈里,这句话也可以反过来说. DeepSeek为什么能爆火,自 ...

  10. donet 常用命令汇总......

    dotnet new: 用于创建新的.NET项目. 示例:创建一个名为 "MyConsoleApp" 的控制台应用程序项目. dotnet new console -n MyCon ...