NestJS/弹性 apm : agent does not record database query spans

标签 nestjs typeorm elastic-apm

我正在使用 elastic apm 来分析我的 NestJS 应用程序,我的 apm 代理是 elastic-apm-node。 我的 ORM 是 typeOrm,我的数据库是 Oracle

我的问题是 apm 代理不记录数据库查询范围,并且我在 kibana ui 中看不到数据库查询范围。 谁能帮我吗?

最佳答案

不幸的是,弹性 apm 代理不支持 Oracle。您应该包装 oracleQueryRunner 以便手动启动和结束代理跨度。将此代码放入您的 main.ts 文件中:

import { OracleQueryRunner } from 'typeorm/driver/oracle/OracleQueryRunner';

const query = OracleQueryRunner.prototype.query;

OracleQueryRunner.prototype.query = async function (...args) {
  const span = apm.startSpan('query');
  if (span) {
    span.type = 'db';
    span.action = args[0];
  }
  const result = await query.bind(this)(...args);
  if (span) { span.end(); }
  return result;
};

关于NestJS/弹性 apm : agent does not record database query spans,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61098374/

相关文章:

electron - 将许多事务 typeorm 启动到循环 javascript

elasticsearch - 通过 cURL/Postman 向 Elastic APM 发送手动 OTLP/HTTP (opentelemetry) 请求

.net - 在 .NET Core 上使用 Elastic APM 进行分布式跟踪,非 HTTP

dependency-injection - NestJs:动态创建类的实例

mysql - Typeorm 列类型依赖于数据库

typescript - 如何用Jest单元测试覆盖TypeORM @Column装饰器?

spring - 如何在Spring应用程序中附加Elastic APM

image - 如何使用 Nest.js 框架向客户端返回图像?

arrays - 类验证器不验证数组

node.js - gRPC错误: "address not available" on Docker with NestJS