aws xray 使用xray集成java相关框架和sdk
创始人
2025-05-28 21:52:30
0

运行xray守护进程

在windows中的powershell中运行以下脚本即可,可执行文件解压在C:\Program Files\Amazon\XRay路径,xray daemon默认监听2000端口,可以使用配置文件指定

if ( Get-Service "AWSXRayDaemon" -ErrorAction SilentlyContinue ) {sc.exe stop AWSXRayDaemonsc.exe delete AWSXRayDaemon
}$targetLocation = "C:\Program Files\Amazon\XRay"
if ((Test-Path $targetLocation) -eq 0) {mkdir $targetLocation
}$zipFileName = "aws-xray-daemon-windows-service-3.x.zip"
$zipPath = "$targetLocation\$zipFileName"
$destPath = "$targetLocation\aws-xray-daemon"
if ((Test-Path $destPath) -eq 1) {Remove-Item -Recurse -Force $destPath
}$daemonPath = "$destPath\xray.exe"
$daemonLogPath = "$targetLocation\xray-daemon.log"
$url = "https://s3.dualstack.us-west-2.amazonaws.com/aws-xray-assets.us-west-2/xray-daemon/aws-xray-daemon-windows-service-3.x.zip"Invoke-WebRequest -Uri $url -OutFile $zipPath
Add-Type -Assembly "System.IO.Compression.Filesystem"
[io.compression.zipfile]::ExtractToDirectory($zipPath, $destPath)New-Service -Name "AWSXRayDaemon" -StartupType Automatic -BinaryPathName "`"$daemonPath`" -f `"$daemonLogPath`""
sc.exe start AWSXRayDaemon

默认的配置文件如下,具体的字段解释可参考官方文档

https://docs.aws.amazon.com/zh_cn/xray/latest/devguide/xray-daemon-configuration.html

# Maximum buffer size in MB (minimum 3). Choose 0 to use 1% of host memory.
TotalBufferSizeMB: 0
# Maximum number of concurrent calls to AWS X-Ray to upload segment documents.
Concurrency: 8
Region: "cn-north-1"
# Change the X-Ray service endpoint to which the daemon sends segment documents.
Endpoint: ""
Socket:UDPAddress: "127.0.0.1:2000"TCPAddress: "127.0.0.1:2000"
Logging:LogRotation: trueLogLevel: "debug"LogPath: ""
LocalMode: false
ResourceARN: ""
RoleARN: ""
NoVerifySSL: false
ProxyAddress: ""
Version: 2

启动之后查看日志C:\Program Files\Amazon\XRay\xray-daemon.log有如下信息

2023-xxxxxxxxx [Info] Initializing AWS X-Ray daemon 3.3.6
2023-xxxxxxxxx [Info] Using buffer memory limit of 154 MB
2023-xxxxxxxxx [Info] 2345 segment buffers allocated
2023-xxxxxxxxx [Info] Using region: cn-north-1
2023-xxxxxxxxx [Info] HTTP Proxy server using X-Ray Endpoint : https://xray.cn-north-1.amazonaws.com.cn
2023-xxxxxxxxx [Info] Starting proxy http server on 127.0.0.1:2000

为jvm配置代理插件

下载java代理的最新发行版

  • latest distribution of the agent

修改jvm参数

-javaagent:C:\xray-agent\disco\disco-java-agent.jar=pluginPath=C:\xray-agent\disco\disco-plugins

tomcat和servlet服务器配置

在windows上安装tomcat,启动之后默认监听8080端口

tomcat实现了jsp/servlet规范,是一个轻量级服务器,开源免费

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bqYrHc8h-1678877992979)(assets/image-20230314222014253.png)]

目录结构如下,在bin目录中启停服务器

在这里插入图片描述

常见问题

  • 启动失败没有错误,java环境变量没有配置
  • 端口被占用
  • 服务器启动但有异常,检查异常的web项目

idea集成tomca

  • 解决tomcat中文乱码的问题

在这里插入图片描述

tomcat应用的结构如下

myapp--------------应用名称index.htmlcss/index.cssjs/index.jsWEB-INF--------如果有web.xml或者.class文件时,该目录必须存在,且严格区分大小写。该目录下的资源客户端无法直接访问classes----------------web应用的class文件(加载顺序:class,lib目录中的jar包,tomcat的lib目录中的jar包。优先级依次降低)lib--------------------web应用所需的jar包(tomcat的lib目录下jar为所有应用共享)web.xml----------------web应用的主配置文件

创建javaee项目,2022版本的idea不能直接创建javaee项目,搜索add framework支持,选择web application即可。按照以下文章配置

https://blog.csdn.net/m0_64351669/article/details/127309413

之后直接在idea中启动tomcat,查看index.jsp是否显示

我们使用servlet 3.0,通过注解配置servlet类

@WebServlet("/student")
public class StudentServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {System.out.println("test list bucket");final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.CN_NORTH_1)// 对单个client进行追踪.withRequestHandlers(new TracingHandler(AWSXRay.getGlobalRecorder())).build();List buckets = s3.listBuckets();System.out.println("Your {S3} buckets are:");for (Bucket b : buckets) {System.out.println("* " + b.getName());}String str = "example string for test";ServletOutputStream sos = resp.getOutputStream();resp.setContentType("text/html;charset=UTF-8");sos.write(str.getBytes("UTF-8"));}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {doGet(req, resp);}
}

手动配置下过滤器,跟踪传入请求

https://docs.aws.amazon.com/zh_cn/xray/latest/devguide/xray-sdk-java-filters.html

 AWSXRayServletFiltercom.amazonaws.xray.javax.servlet.AWSXRayServletFilterfixedNameMyAppAWSXRayServletFilter*

springboot配置

有一个github仓库提供了简单的示例demo

https://github.com/anthunt/spring-boot-aws-xray-sample

application的配置和示例片段如下,controller开启了xray追踪注解

@RestController
@XRayEnabled
@RequestMapping("/api")
public class TestController {@Autowiredprivate TestService testService;@RequestMapping("index")public String index() {testService.test("test_bucket");return "HERE";}
}

查看application配置文件,xray

...
logging:file: ./log/appLog/${spring.application.name}.logpattern:file: "%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %X{AWS-XRAY-TRACE-ID} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"console: "%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %X{AWS-XRAY-TRACE-ID} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"level:com.amazonaws.xray: DEBUGcom.anthunt.aws.spring.boot.xray: DEBUGorg.springframework.cloud.openfeign: ERRORfeign.Logger: ERRORorg.apache.http: ERROR

手动发送分段

编写发送分段的逻辑

public class Main {public static void main(String[] args) {System.out.println("Hello world!");AWSXRayRecorder xrayRecorder = AWSXRayRecorderBuilder.defaultRecorder();xrayRecorder.beginSegment("testsegment");Subsegment subsegment = xrayRecorder.beginSubsegment("providedMovie");try {final AmazonS3 s3 = AmazonS3ClientBuilder.standard()// 对单个client开启追踪.withRequestHandlers(new TracingHandler(AWSXRay.getGlobalRecorder())).withRegion(Regions.CN_NORTH_1).build();List buckets = s3.listBuckets();System.out.println("Your {S3} buckets are:");for (Bucket b : buckets) {System.out.println("* " + b.getName());}} catch (RuntimeException e) {subsegment.addException(e);subsegment.setError(true);} finally {xrayRecorder.endSubsegment();}xrayRecorder.endSegment();}
}

对于aws sdk相关的追踪,需要额外进行配置

https://docs.amazonaws.cn/zh_cn/xray/latest/devguide/xray-sdk-java-awssdkclients.html

当在依赖中导入aws-sdkaws-sdk-instrumentor,会对当前项目中使用的所有aws客户端启动追踪。如果需要最单独的aws client进行追踪,需要去除aws-sdk-instrumentor子模块的依赖,然后配置具体的客户端。例如如下dynamodb客户端

private AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard().withRegion(Regions.fromName(System.getenv("AWS_REGION"))).withRequestHandlers(new TracingHandler(AWSXRay.getGlobalRecorder())).build();

此外还可以手动发送请求的时候创建追踪

https://docs.amazonaws.cn/zh_cn/xray/latest/devguide/xray-sdk-java-httpclients.html

相关内容

热门资讯

安卓系统的经典铃声,唤醒回忆的... 你有没有发现,手机里那些熟悉的铃声,有时候就像老朋友一样,陪伴着我们度过了无数个日日夜夜?今天,就让...
鸿蒙系统还是安卓系统号,系统之... 你有没有想过,手机里的操作系统就像是我们的大脑,它决定了我们手机能做什么,不能做什么。现在,就让我们...
安卓系统装贝达,安卓系统下的贝... 你有没有想过,你的安卓手机装上贝达系统后,会有怎样的奇妙体验呢?想象你的手机瞬间变身,变得流畅无比,...
安卓系统沃尔沃音响设置,轻松享... 你有没有发现,自从你的安卓手机和沃尔沃音响完美结合后,开车时的音乐体验简直就像是在音乐厅里一样?没错...
米10系统基于安卓,基于安卓的... 你知道吗?最近手机圈里可是热闹非凡呢!小米10这款手机,自从发布以来就吸引了无数人的目光。而它所搭载...
命令安卓系统怎么卸载,安卓系统... 手机里装了太多不用的应用,是不是感觉手机都快要爆炸了?别急,今天就来教你怎么轻松卸载安卓系统中的应用...
安卓系统安装小学教材,安卓系统... 你有没有想过,手机里的安卓系统竟然能装上小学教材呢?没错,你没听错!在这个信息爆炸的时代,科技的发展...
华为安卓系统锁住了,揭秘锁屏背... 最近是不是发现你的华为手机有点儿“顽皮”了?它突然间变得神秘起来,屏幕上那个熟悉的安卓系统仿佛被施了...
安卓电脑改苹果系统,跨越平台的... 你有没有想过,把你的安卓电脑改头换面,变成一个优雅的苹果系统使用者呢?想象那流畅的界面,那独特的触控...
安卓系统怎么按后台,并在任务完... 你有没有遇到过这种情况:手机屏幕一黑,安卓系统就自动进入后台了?是不是觉得有点小郁闷,想要手动切换回...
2021年安卓系统ui,202... 你有没有发现,手机界面最近好像换了个模样?没错,2021年的安卓系统UI可是来了一场大变身呢!今天,...
安卓系统程序编写软件,打造个性... 你有没有想过,手机里的那些神奇应用是怎么诞生的呢?没错,就是那些让你在闲暇时光刷刷视频、在通勤路上玩...
自动开机安卓系统,智能生活新篇... 你有没有想过,当你的安卓手机在清晨的第一缕阳光照耀下自动开机,那种轻松自在的感觉?想象不用再手动解锁...
真我平板x安卓系统,畅享智能生... 亲爱的读者们,你是否也在寻找一款既能满足你对平板电脑的期待,又能让你畅享安卓系统带来的无限乐趣的设备...
恒星安卓系统官网,引领未来智能... 亲爱的读者们,你是否曾好奇过那些闪耀在夜空中的星星,它们是如何在浩瀚的宇宙中熠熠生辉的呢?今天,我要...
u8安卓系统,功能与特色深度解... 你知道吗?在手机操作系统界,有一个小家伙可是相当受欢迎的,它就是U8安卓系统。今天,就让我带你来一探...
花椒安卓系统美颜功能,打造完美... 你有没有发现,现在拍照已经不仅仅是记录生活的工具了,它更是一种艺术创作呢!而在这其中,花椒安卓系统的...
戴尔平板升级安卓系统,畅享安卓... 你有没有发现,戴尔平板最近好像悄悄地来了一次大变身?没错,就是那个我们熟悉的戴尔平板,它现在竟然可以...
安卓助手怎么升级系统,畅享最新... 亲爱的安卓用户们,你是否也和我一样,对安卓系统的升级充满了期待和好奇呢?每次系统升级,都仿佛是给我们...
国产安卓系统的发展,国产安卓系... 你知道吗?在我国科技飞速发展的今天,国产安卓系统可是越来越受到大家的关注呢!它就像一颗冉冉升起的新星...