使用适用于 Node.js 的 X-Ray 开发工具包跟踪 SQL 查询 - AWS X-Ray

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用适用于 Node.js 的 X-Ray 开发工具包跟踪 SQL 查询

注意

End-of-support 注意 — 2027 年 2 月 25 日, AWS X-Ray 将停止对 AWS X-Ray SDKs 和守护程序的支持。2027 年 2 月 25 日之后,您将不再收到更新或发布。有关支持时间表的更多信息,请参阅X-Ray SDK 和守护程序终止支持时间表。我们建议迁移到 OpenTelemetry。有关迁移到的更多信息 OpenTelemetry,请参阅从 X-Ray 仪器迁移到 OpenTelemetry 仪器

通过将 SQL 客户端包含在相应的适用于 Node.js 的 X-Ray 开发工具包客户端方法中来检测 SQL 数据库查询。

  • PostgreSQLAWSXRay.capturePostgres()

    var AWSXRay = require('aws-xray-sdk'); var pg = AWSXRay.capturePostgres(require('pg')); var client = new pg.Client();
  • MySQLAWSXRay.captureMySQL()

    var AWSXRay = require('aws-xray-sdk'); var mysql = AWSXRay.captureMySQL(require('mysql')); ... var connection = mysql.createConnection(config);

在使用检测的客户端发起 SQL 查询时,适用于 Node.js 的 X-Ray 开发工具包会在子分段中记录有关连接和查询的信息。

在 SQL 子段中包括其他数据

您可以向为 SQL 查询生成的子分段添加其他信息,前提是这些子分段已映射到允许列表的 SQL 字段。例如,要在子段中记录经过清理的 SQL 查询字符串,可以将其直接添加到子分段的 SQL 对象中。

例 将 SQL 分配给子分段
const queryString = 'SELECT * FROM MyTable'; connection.query(queryString, ...); // Retrieve the most recently created subsegment const subs = AWSXRay.getSegment().subsegments; if (subs & & subs.length > 0) { var sqlSub = subs[subs.length - 1]; sqlSub.sql.sanitized_query = queryString; }

请参阅 AWS X-Ray 开发人员指南中的 SQL 查询,查看加入允许列表的 SQL 字段的完整列表。