通过 Opentracing API 或 Elastic APM 的 API 在 Elsatic APM 中进行嵌套时。有些跨度从未被记录。
使用import * as apm from '@elastic/apm-rum';
:
const transaction = this.apm.startTransaction('transaction-scene-loaded', 'custom'); // recorded
const span = this.apm.startSpan('span-scene-loaded', 'custom'); // recorded
const span2 = this.apm.startSpan('span-loading-state-updated', 'custom'); // Not recorded
span2.end();
span.end();
transaction.end();
使用 Elastic 的 OpenTracing API:
const {
init: initApm,
createTracer
} = require('@elastic/apm-rum/dist/bundles/elastic-apm-opentracing.umd.js');
跨度的行为同样不一致。目前尚不清楚交易何时开始或结束。一些 span 被翻译成事务,嵌套 span 可能不会被记录。如果我声明一个页面范围的事务,AngularngOnInit
可以通过一个跨度记录,但其他事件挂钩永远不会记录。
onLoaded() {
const span = this.tracer.startSpan('span-scene-loaded'); // Not recorded
// ...
span.end();
}
我已经尝试过这种变化。在 span、childOf、app-level span、span 的各个实例中包装 span。