当前位置: 首页 > 知识库问答 >
问题:

在X射线控制台AWS中未找到跟踪

饶谦
2023-03-14

我尝试了多种方法,但似乎没有任何效果

这就是我所做的,

  1. 创建Cloud9实例,启动maven应用程序,添加aws sdk java、x-ray core、x-ray instrumentor、x-ray sdk依赖项,创建DynamoDB客户端运行应用程序,插入数据,但未找到错误子段。手动添加段,错误消失,但没有跟踪
  2. 创建Spring Boot应用程序,添加了相同的依赖项,添加了Xray servlet过滤器,添加了begin segment,begin subsegment,没有错误但没有跟踪

我也有更多的方法,但这些方法似乎非常接近。此外,我还没有安装任何代理或守护程序。有人能告诉我哪里出错了吗?

我正在尝试创建一个简单的java应用程序,甚至是一个页面来在DynamoDB中插入数据并获取跟踪信息。

共有1个答案

方季同
2023-03-14

我没有在java共享方面工作的经验,这里是Node JS示例,希望会有所帮助。测试过:https://github.com/aws-samples/aws-xray-sdk-node-sample

const AWSXRay = require('aws-xray-sdk');
const XRayExpress = AWSXRay.express;
const express = require('express');

// Capture all AWS clients we create
const AWS = AWSXRay.captureAWS(require('aws-sdk'));
AWS.config.update({region: process.env.DEFAULT_AWS_REGION || 'us-west-2'});

// Capture all outgoing https requests
AWSXRay.captureHTTPsGlobal(require('https'));
const https = require('https');

// Capture MySQL queries
const mysql = AWSXRay.captureMySQL(require('mysql'));

const app = express();
const port = 3000;

app.use(XRayExpress.openSegment('SampleSite'));

app.get('/', (req, res) => {
  const seg = AWSXRay.getSegment();
  const sub = seg.addNewSubsegment('customSubsegment');
  setTimeout(() => {
    sub.close();
    res.sendFile(`${process.cwd()}/index.html`);
  }, 500);
});

app.get('/aws-sdk/', (req, res) => {
  const ddb = new AWS.DynamoDB();
  const ddbPromise = ddb.listTables().promise();

  ddbPromise.then(function(data) {
    res.send(`ListTables result:\n ${JSON.stringify(data)}`);
  }).catch(function(err) {
    res.send(`Encountered error while calling ListTables: ${err}`);
  });
});

app.get('/http-request/', (req, res) => {
  const endpoint = 'https://amazon.com/';
  https.get(endpoint, (response) => {
    response.on('data', () => {});

    response.on('error', (err) => {
      res.send(`Encountered error while making HTTPS request: ${err}`);
    });

    response.on('end', () => {
      res.send(`Successfully reached ${endpoint}.`);
    });
  });
});

app.get('/mysql/', (req, res) => {
  const mysqlConfig = require('./mysql-config.json');
  const config = mysqlConfig.config;
  const table = mysqlConfig.table;

  if (!config.user || !config.database || !config.password || !config.host || !table) {
    res.send('Please correctly populate mysql-config.json');
    return;
  }

  const connection = mysql.createConnection(config);
  connection.query(`SELECT * FROM ${table}`, (err, results, fields) => {
    if (err) {
      res.send(`Encountered error while querying ${table}: ${err}`);
      return;
    }
    res.send(`Retrieved the following results from ${table}:\n${results}`);
  });

  connection.end();
});

app.use(XRayExpress.closeSegment());

app.listen(port, () => console.log(`Example app listening on port ${port}!`));
 类似资料:
  • 在我的API网关日志条目上指示超时,我正在调查它的来源。日志条目有一个X-Ray跟踪ID,但当我使用X-Ray搜索它时,我得到“未找到数据”。 我预计至少有一个节点,APIG,会出现在X光片上。我错过了什么? API网关CloudWatch日志洞察我找不到跟踪 查询字符串: Api网关CloudWatch日志洞察我可以找到跟踪 查询字符串: X射线

  • 我有一些启用了跟踪的Python Lambda函数,它们是这样开始的: 有了这个跟踪,每个Lambda函数本身都可以工作,我可以看到通过boto3对DynamoDB或Kinesis的子服务调用。 但是如何在一个跟踪中将各种Lambda函数连接在一起呢?我正在考虑在第一个函数中生成一个唯一的字符串,并将其写入存储在Kinesis中的消息中。然后,另一个函数将从动觉信息中提取字符串并再次跟踪它。 如何

  • 我已经为我的REST API添加了一个主要的路由段,它是在Node中编写的。js并在Lambda函数上运行。我还为X射线启用了API网关跟踪。我想将sql查询计时作为X-Ray控制台的一个子段,所以我使用了AWSXRay。CaptureAyncFunc函数,并为所有sql查询添加了它,并且我能够打印跟踪日志。以下屏幕截图显示了GET请求的段和子段。 我想在AWS X-Ray管理控制台中看到亚节。在

  • 我有一个用NodeJS编写的AWS lambda函数,在这个函数上我启用了活动跟踪,现在每次调用它时都会看到X射线跟踪。但是-Lambda函数也会发布到SNS,并且SNS不会出现在X射线轨迹中。我是否需要添加代码才能查看SNS跟踪? (lambda和SNS都使用相同的角色,所以我认为这不是问题)。 谢谢

  • 这是我用AWS X-Ray编写的Python代码 没有错误,但它没有向X射线守护程序发送任何内容。 此代码中缺少什么?

  • 我正在尝试在我的SailsJS应用程序中使用AWS X-Ray。我注意到缺少子段-我通过AWSXRay添加了自定义跟踪。CaptureAyncFunc,但注意到它们丢失了。经过仔细检查,我认为他们实际上找到了不同的线索。假设我稍后调用登录API,然后调用另一个API。我注意到我的登录API跟踪很奇怪 请注意,在请求应该结束后,会有相当多的调用。 这些请求实际上应该在另一个部分中: 我认为它们应该出