在springboot4中使用ADOT的agent注入集成cwagent发送数据和追踪

news/2026/1/20 14:49:53/文章来源:https://www.cnblogs.com/peacemaple/p/19506698

参考资料

  • https://github.com/aws-observability/aws-otel-java-instrumentation
  • https://github.com/danvega/ot/blob/master/README.md
  • 使用 OpenTelemetry 收集指标和跟踪
  • https://github.com/aws-samples/java-on-aws/blob/main/apps/java21/dockerfiles/Dockerfile_03_otel
  • https://catalog.workshops.aws/java-on-aws/en-US/observability/build-otel-image#activating-observation-instrumentation

本次使用的示例项目为OpenTelemetry with Spring Boot 4.0 Demo

启动cwagent并开启otel收集功能

cloudwatch agent本质上是一个定制的otel collector,在启动时会将cwagent的配置文件转换为otel collector的配置。我们在本地启动使用以下cloudwatch agent配置开启otel的收集能力

  • metrics_collected,开启通过otel收集指标
  • traces_collected,开启通过otel收集追踪
{"agent": {"metrics_collection_interval": 60,"run_as_user": "root"},"metrics": {"metrics_collected": {"otlp": {"grpc_endpoint": "0.0.0.0:4317","http_endpoint": "0.0.0.0:4318"}},"append_dimensions": {"InstanceId": "${aws:InstanceId}"}},"traces": {"traces_collected": {"otlp": {"grpc_endpoint": "0.0.0.0:4317","http_endpoint": "0.0.0.0:4318"}}}
}

使用compose挂载配置文件并启动cwagent

services:cloudwatch-agent:image: 'amazon/cloudwatch-agent:latest'ports:- '4317:4317'- '4318:4318'volumes:- ./cw-agent-config.json:/etc/cwagentconfig/config.json:roenvironment:- AWS_REGION=cn-north-1

启动日志如下,可见已经成功监听4318端口。应用程序将遥测数据发送到此端点,CloudWatch 代理则将其转发到 X-Ray 和 CloudWatch。

image-20260111235703279

在springboot中开启OpenTelemetry

在springboot中集成OpenTelemetry 的方式有如下三种

  • OpenTelemetry Java Agent - Zero code changes but can have version compatibility issues
  • Third-party OpenTelemetry Starter - From the OTel project, but pulls in alpha dependencies
  • Spring Boot Starter (this demo)— - Official Spring support, stable, well-integrated

为了集成cwagent,我们需要关闭Spring Boot 的 OpenTelemetry 自动配置,转而通过 ADOT 代理的方式注入

spring:application:name: ot# 禁用 Spring Boot 的 OpenTelemetry 自动配置,避免与 Java Agent 冲突
management:opentelemetry:enabled: falsetracing:sampling:probability: 1.0

为什么选择 ADOT 代理而不是社区的 OTel 代理?如下是两者的比较

Feature Community Agent ADOT Agent
X-Ray trace ID format
AWS resource detection Basic Enhanced
Application Signals

下载agent jar文件

wget https://github.com/aws-observability/aws-otel-java-instrumentation/releases/latest/download/aws-opentelemetry-agent.jar

使用如下命令启动应用

export AWS_ADOT_JAVA_INSTRUMENTATION_PATH="aws-opentelemetry-agent.jar"JAVA_TOOL_OPTIONS="-javaagent:$AWS_ADOT_JAVA_INSTRUMENTATION_PATH" \
OTEL_METRICS_EXPORTER="none" \
OTEL_LOGS_EXPORTER="none" \
OTEL_TRACES_EXPORTER="otlp" \
OTEL_TRACES_SAMPLER="always_on" \
OTEL_PROPAGATORS="tracecontext,baggage,xray" \
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="http://localhost:4318/v1/traces" \
OTEL_EXPORTER_OTLP_PROTOCOL="http/protobuf" \
java -jar /home/ec2-user/ot/target/ot-0.0.1.jar

启动后尝试访问应用,观察trace控制台可以捕获

image-20260120144613626

但是cwagent报错如下

  • 警告:某些单位无法转换
  • 错误:某些分布指标(distribution metrics)没有条目,如 http.server.requests

image-20260112002241336

检查应用日志发现如下内容。这是由于spring-boot-starter-opentelemetry会引入Micrometer OTLP Registry - Micrometer 的 OTLP 导出器,会自动创建OtlpMeterRegistry并自动导出指标到http://localhost:4318/v1/metrics

2026-01-20T06:11:11.030Z  INFO 32635 --- [ot] [main] [] i.m.c.instrument.push.PushMeterRegistry  : Publishing metrics for OtlpMeterRegistry every 1m to http://localhost:4318/v1/metrics with resource attributes {service.name=ot}

因此,我们在application.yaml中禁用 Micrometer OTLP meter registry,使用 Java Agent 采集所有可观测性数据,避免干扰

  otlp:metrics:export:enabled: false

将OTEL_METRICS_EXPORTER修改为OTLP,即使用 OTLP 协议将指标数据发送到配置的后端端点

export AWS_ADOT_JAVA_INSTRUMENTATION_PATH="/home/ec2-user/ot/aws-opentelemetry-agent.jar"JAVA_TOOL_OPTIONS="-javaagent:$AWS_ADOT_JAVA_INSTRUMENTATION_PATH" \
OTEL_METRICS_EXPORTER="otlp" \
OTEL_LOGS_EXPORTER="none" \
OTEL_TRACES_EXPORTER="otlp" \
OTEL_TRACES_SAMPLER="always_on" \
OTEL_PROPAGATORS="tracecontext,baggage,xray" \
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="http://localhost:4318/v1/traces" \
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT="http://localhost:4318/v1/metrics" \
OTEL_EXPORTER_OTLP_PROTOCOL="http/protobuf" \
java -jar /home/ec2-user/ot/target/ot-0.0.1.jar

指标也同样能够收集成功

image-20260120141916474

其他同类库的问题

那么什么时候选择OpenTelemetry Starter?

  • 实现供应商无关的可观测性(轻松切换后端)
  • 跨服务的分布式追踪是优先事项
  • 更倾向于基于推送的遥测

什么时候选择Actuator?

  • Actuator 用于健康/就绪检查
  • OTel 用于遥测

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1189420.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI英语写作APP的开发

开发一款AI英语写作APP已不再是简单的“语法纠错”,而是向“创作伙伴”与“个性化导师”的深度融合演进。以下是开发此类应用的核心技术路径与创新功能设计。1. 核心技术架构:从“规则驱动”到“语义驱动”不同于早期的规则匹配,现代AI写作AP…

杭州市英语雅思培训辅导机构推荐2026,权威出国雅思课程中心学校口碑排行榜 - 老周说教育

依托英国文化教育协会(BC雅思)2026年1月最新发布的《2024-2025中国大陆雅思考生成绩大数据报告》核心指标,经浙江省教育考试院教学资质联合核验,结合杭州市西湖区、上城区、滨江区、余杭区、钱塘区、萧山区12000份…

记一次va_list导致的段错误崩溃排查

记一次va_list导致的段错误崩溃排查 问题 为了适配GTest框架到鸿蒙,需要让GTest的日志输出使用 OH_LOG_Print 函数,因此写出了类似下面的代码: #include <cstdarg> #include <cstdio>const char *Rende…

新疆新东方烹饪学校学费多少,详细地址为你揭晓 - 工业品牌热点

在西域美食文化蓬勃发展的今天,一所有实力的烹饪学校是青年学子掌握技艺、实现职业梦想的关键桥梁。面对新疆本地众多烹饪教育机构,如何找到教学扎实、就业有保障的选择?以下依据不同学习需求,为你推荐乌鲁木齐及周…

2026最新特殊月子餐/贵阳月子中心推荐!贵阳南明区/贵阳市中心/花果园专业母婴护理机构权威指南 - 品牌推荐2026

引言 随着现代母婴护理需求的精细化升级,月子中心已成为产后家庭的重要选择,其中特殊月子餐的科学配置与个性化服务尤为关键。据中国妇幼保健协会最新行业报告显示,国内具备专业膳食研发能力的月子中心不足40%,而能…

裁纸机厂家哪个好?一文为你揭秘! - 星辉数控

裁纸机厂家哪个好?一文为你揭秘! 在家具制造行业,裁纸机是不可或缺的关键设备。它的性能优劣直接影响产品质量与生产效率,可市场上裁纸机厂家众多,到底裁纸机厂家哪个好呢?别着急,看完这些干货,你就能找到方向…

【软考每日一练006】文件索引节点(i-node)解构:从物理底层到多级寻址计算

【软考每日一练006】文件索引节点&#xff08;i-node&#xff09;解构&#xff1a;从物理底层到多级寻址计算 在计算机世界中&#xff0c;数据持久化是一切应用的基础。而文件系统如何管理这些动辄数 GB 甚至 TB 的数据&#xff0c;并实现微秒级的定位&#xff1f;其核心秘密就…

测试工程师都在用的Linux命令清单(建议收藏)

作为一名工程师&#xff0c;熟练掌握Linux命令是基本功中的基本功。无论是日常工作中的系统维护&#xff0c;还是面试时的技术考核&#xff0c;Linux命令都是绕不开的核心技能。本文将从实战角度出发&#xff0c;系统梳理工程师必须掌握的Linux命令&#xff0c;并结合实际场景解…

【开题答辩全过程】以 茉莉园小区物业快速维修服务系统为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

(8-2)UENUM(..)

&#xff08;20&#xff09; &#xff08;21&#xff09; 谢谢

RPA直播间自动抢福袋神器 - 高级品牌推荐官

行业背景:2026年直播间风控与RPA抢福袋的技术博弈跨入2026年,全球及国内主流直播平台对“直播间福袋”与“互动奖励”的风控审计已达到生物特征级水平。传统的点击器或模拟器在具备AI深度学习能力的防作弊系统面前,…

(8-1)UENUM(..)

&#xff08;19&#xff09;&#xff08;20&#xff09; 谢谢

直播间自动抢福袋软件 - 高级品牌推荐官

行业背景:2026年直播间福袋风控的“全息审计”趋势步入2026年,全球及国内主流直播平台(如TikTok、抖音、快手等)对直播间互动奖励(福袋、红包)的风控审计已全面进入“全息身份识别”时代。传统的点击器或简单的模…

【软考每日一练007】位图计算与内存管理深度全解

【软考每日一练007】位图计算与内存管理深度全解 在操作系统的内存管理演进中&#xff0c;如何高效地记录和分配物理资源是系统性能的基石。本文将通过一道经典的笔试题&#xff0c;由浅入深地带你拆解页式存储管理、位图机制及其背后的跨模块设计逻辑。一、 经典例题 题目&…

浏览器RPA - 高级品牌推荐官

行业背景:2026年浏览器RPA从“模拟点击”向“AI Agent”的跨越步入2026年,全球数字营销与跨境电商行业已全面进入“超自动化”时代。传统的RPA(机器人流程自动化)软件如果仅停留在坐标模拟或简单的元素点击,在面对…

UE5 C++(37-3):

&#xff08;202&#xff09; &#xff08;203&#xff09; 谢谢

杭州市英语雅思培训辅导机构推荐,权威出国雅思课程中心学校口碑排行榜2026 - 老周说教育

依托英国文化教育协会(BC雅思)2026年1月最新发布的《2024-2025中国大陆雅思考生成绩大数据报告》核心指标,经浙江省教育考试院教学资质联合核验,结合杭州市西湖区、上城区、滨江区、余杭区、钱塘区、萧山区12000份…

推荐的工业AI大模型在制造业中的应用案例

工业AI大模型正逐渐成为现代制造业数字化转型的核心驱动力。与通用型AI模型不同&#xff0c;工业AI大模型深度融合行业知识、工艺流程与多模态数据&#xff0c;为制造企业提供从研发、生产到运营的全链路智能化解决方案。一、工业AI大模型的发展现状与特点工业AI大模型的发展并…

【改进差分优化算法L-SHADE-SPACMA】差分进化算法(DE)及其变体L-SHADE-SPACMA在CEC2005函数寻优的对比研究附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码及仿真咨询…

Prometheus-4·监控mariadb数据库Grafana展示数据

一、监控mariadb数据库流程&#xff1a;在节点上安装数据库在节点安装mysql exporter配置监控端prometheus监控mysql导入展示模板查看mysql exporter数据二、环境准备&#xff1a;实验拓扑.pngPrometheus版本&#xff1a;prometheus-2.17.2.linux-386Grafana版本&#xff1a;gr…