2

我习惯于elastic apm分析我的NestJS应用程序,而我的 apm 代理是elastic-apm-node. 我的 ORM 是typeOrm,我的数据库是Oracle.

我的问题是 apm 代理没有记录数据库查询跨度,我在 kibana ui 中看不到数据库查询跨度。谁能帮我?

4

1 回答 1

2

不幸的是,弹性 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;
};
于 2020-04-08T13:15:18.823 回答