🎀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
结束
🎀OpenTelemetry探针介绍及使用的更多相关文章
- OpenTelemetry架构介绍
OpenTelemetry: 经得起考验的工具 摘自:https://blog.newrelic.com/product-news/what-is-opentelemetry/ 目录 OpenTele ...
- 【七】Kubernetes 探针介绍 - 存活、就绪探针案例测试
一.探针概述 探针是有 kubelet 对容器执行的定期诊断,并不是由 Master 节点发起的探测,而是由每一个 Node 所在的 kubelet 进行探测,这样可以减轻 Master 节点系统负载 ...
- 009.OpenShift管理及监控
一 资源限制 1.1 pod资源限制 pod可以包括资源请求和资源限制: 资源请求 用于调度,并控制pod不能在计算资源少于指定数量的情况下运行.调度程序试图找到一个具有足够计算资源的节点来满足pod ...
- 记一次k8s pod频繁重启的优化之旅
关键词:k8s.jvm.高可用 1.背景 最近有运维反馈某个微服务频繁重启,客户映像特别不好,需要我们尽快看一下. 听他说完我立马到监控平台去看这个服务的运行情况,确实重启了很多次.对于技术人员来说, ...
- 🏆【Java技术专区】「探针Agent专题」Java Agent探针的技术介绍(1)
前提概要 Java调式.热部署.JVM背后的支持者Java Agent: 各个 Java IDE 的调试功能,例如 eclipse.IntelliJ : 热部署功能,例如 JRebel.XRebel. ...
- Java探针技术-retransformclasses的介绍
retransformclasses void retransformclasses(class... classes) throws unmodifiableclassexception 重转换提供 ...
- .NET无侵入自动化探针原理和主流实现
前言 最近,我在微信公众号和博客园分享了一篇关于.NET微服务系统迁移至.NET 6.0的故事的文章,引起了许多读者的关注.其中,许多人对基于 OpenTelemetry .NET 的观测指标和无侵入 ...
- 聊聊并发(八)——Fork/Join框架介绍
作者 方腾飞 发布于 2013年12月23日 | 被首富的“一个亿”刷屏?不如定个小目标,先把握住QCon上海的优惠吧!2 讨论 分享到:微博微信FacebookTwitter有道云笔记邮件分享 ...
- 开源APM系统skywalking介绍与使用
介绍 SkyWalking 创建与2015年,提供分布式追踪功能.从5.x开始,项目进化为一个完成功能的Application Performance Management系统.他被用于追踪.监控和诊 ...
- 深入浅出Java探针技术1--基于java agent的字节码增强案例
Java agent又叫做Java 探针,本文将从以下四个问题出发来深入浅出了解下Java agent 一.什么是java agent? Java agent是在JDK1.5引入的,是一种可以动态修改 ...
随机推荐
- mysql数据库主从同步I/O问题修复
mysql数据库主从同步I/O问题,下面介绍比较靠谱的修复方法. 主节点IP:10.99.202.25,从节点IP:10.99.202.26,修复步骤如下: 1,查看主库repl账号访问权限 mysq ...
- Java中的值类型
在打算了解Java的时候,根据C#的经验,了解一下Java中有哪一些值类型,如何判断某个类型为值类型还是引用类型是一件值得做的事情. 在C#中,值类型存放在栈中,不需要垃圾回收,引用类型存放在堆中,需 ...
- oracle 根据排序去重取第一条
原文转自 https://www.jianshu.com/p/d5c0a355890b,感谢作者styone分享. SELECT t.* FROM (SELECT a.*, row_number ( ...
- [译] WinForms:分析一下(我用 Visual Basic 写的)
原文 | Klaus Loeffelmann 翻译 | 郑子铭 如果您从未看过电影<分析这一点>,下面是简短的介绍:假设一个纽约家族的成员有可疑的习惯,他决定认真考虑接受治疗以改善他的精神 ...
- Q: USB无线网卡搜不到路由器WiFi,但也能搜索到少部分信号。
原因分析:一般在路由器的配置的无线信道是自动,路由器的2.4G频段有13个左右交叠的信道.由于USB无线网卡的设置信道区间可能不在无线信道范围内,导致无线网卡搜索不到对应wifi. 解决问题:鼠标右键 ...
- Q:bash: fork: 无法分配内存,ssh无法连接新会话
老版本系统的内核pid参数比较小(默认设置的是32768) 原因分析,– 内存不足或进程数超出限制– 系统内部的总进程数达到pid_max的上限,创建新进程看到以上提示 查看最大进程数 sysctl ...
- changeServer.sh一键切换服务器脚本
直接看改进版2.0 切换服务器,免密登录vi changeServer.sh #!/bin/bash #authe by wangxp export IFCFG=/etc/sysconfig/netw ...
- yum repo和rpm,添加阿里repos
RPMRPM(Red-hat Package Manager),是一个由红帽最早开发出来的包管理器,目前已经是大多数Linux发行的默认包管理器.RPM管理的包都是以.rpm结尾,其中存储了该软件的安 ...
- github上文件过大无法推送问题
GitHub 对文件大小有限制,超过 100 MB 的文件无法直接推送到仓库中. 解决思路: 使用 Git Large File Storage (Git LFS) 来管理大文件 不上传对应的大文件 ...
- Johnson 全源负权最短路径算法详解
Floyd-Warshall算法可以求解出图内任意两点的最短路径,适用于稠密图,但时间复杂度为 \(O(n³)\):Dijkstra算法求解单源最短路径的时间复杂度为 \(O(m + n log n) ...