NestJS / Elasti c apm: агент не записывает интервалы запросов к базе данных - PullRequest
2 голосов
/ 08 апреля 2020

Я использую elastic apm для профилирования моего NestJS приложения, и мой агент apm elastic-apm-node. Мой ORM typeOrm и моя база данных Oracle.

Моя проблема в том, что apm agent не записывает интервалы запросов к базе данных, и я не вижу интервалов запросов базы данных в пользовательском интерфейсе kibana. Кто-нибудь может мне помочь?

1 Ответ

2 голосов
/ 08 апреля 2020

к сожалению oracle не поддерживается агентом elasti c apm. Вы должны обернуть 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;
};
...