簡體   English   中英

如何在 nodejs 中的 typeorm 上附加 xray?

[英]How can I attach xray on typeorm in nodejs?

我在我的 nodejs 項目中使用https://typeorm.io/#/連接到 Postgresql。 我的應用程序在 AWS lambda 中運行,我想啟用 xray 進行性能分析。 使用 xray sdk,我可以執行以下代碼:

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

上面的代碼會將查詢跟蹤數據發送到 xray 以進行檢測。 但是,我不知道如何使它與typeorm一起使用,因為它從我的代碼中隱藏了pg客戶端。 有沒有辦法在typeorm中捕獲Postgres?

如果typeorm不支持從外部注入 Postgresql 客戶端,Xray sdk 將無法工作。

我使用 webpack 有一個非常順利的解決方法(項目中已經有了):

webpack.config.js

...
const bootstrapMysqlXray = new webpack.NormalModuleReplacementPlugin(/^mysql2$/, '/path/to/bootstrapMysql.ts');
...
plugins: [
        ...
        bootstrapMysqlXray
        ...
    ]

引導Mysql.ts

import { captureMySQL } from 'aws-xray-sdk';
import mysql from 'mysql';
// /!\ Do not import 'mysql2', it is replace by this module, creating a dependency loop
import mysql2 from '../../../node_modules/mysql2';

module.exports = captureMySQL(mysql2 as unknown as typeof mysql) as unknown as typeof mysql2;

我正在使用 TS 和 mysql,但它適用於 vanilla js 和其他 dbs(通過 require 替換導入)

我也在應用這個技巧在 http 調用(使用 axios)和 aws-sdk 上注入 xray

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM