aws xray 使用ecs集成xray追踪请求
参考资料
- https://github.com/aws-samples/aws-xray-fargate
- https://aws.amazon.com/cn/blogs/mt/configure-aws-x-ray-tracing-aws-batch-jobs/
- https://docs.amazonaws.cn/xray/latest/devguide/xray-daemon-ecs.html
创建业务webserveer,文件结构如下
$ tree -L 1
├── Dockerfile
├── package.json
└── server.js
这里使用example中的代码
// server.js
var AWSXRay = require('aws-xray-sdk');
// xray将aws sdk包装
var AWS = AWSXRay.captureAWS(require('aws-sdk'));
// var AWS = require('aws-sdk');
AWS.config.update({ region: 'cn-north-1' });
// 指定xray守护进程监听地址
AWSXRay.setDaemonAddress('127.0.0.1:2000');
const express = require('express')
const app = express()
const port = 3000
app.use(AWSXRay.express.openSegment('MyApp'));
app.get('/', (req, res) => {
var document = AWSXRay.getSegment();
// 添加注释和元数据
document.addAnnotation("mykey", "my value");
document.addMetadata("my key", "my value", "my namespace");
res.send('Hello World!')
var s3 = new AWS.S3();
var params = {};
s3.listBuckets(params, function (err, data) {
if (err) console.log(err, err.stack);
else console.log(data);
});
})
app.use(AWSXRay.express.closeSegment());
app.listen(port, () => {
console.log(`Example app listening on port ${port}`)
})
node的依赖如下
// package.json
{
"name": "aws-xray",
"version": "1.0.0",
"description": "",
"main": "index.js",
"type": "commonjs",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "ssh://git-codecommit.cn-north-1.amazonaws.com.cn/v1/repos/aws-xray"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"aws-sdk": "^2.1255.0",
"aws-xray-sdk": "^3.4.0",
"express": "^4.18.2"
}
}
构建业务image
$ docker build -t demoserver:latest .
// Dockerfile
FROM public.ecr.aws/bitnami/node:16
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package.json /usr/src/app/
RUN npm install
COPY . /usr/src/app
EXPOSE 3000
CMD [ "node", "server.js" ]
创建任务定义,将xray守护进行作为sidecar加入,这里xray监听2000的udp端口
需要向xray守护进程授权
https://docs.amazonaws.cn/xray/latest/devguide/xray-daemon.html#xray-daemon-permissions

查看业务日志

查看xray日志

尝试访问webserver,继续查看xray日志

查看xray控制台,已经能收到结果


浙公网安备 33010602011771号