当嵌套通过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');
跨度的行为也不一致。目前尚不清楚交易何时开始或结束。某些跨度将转换为事务,并且可能不会记录嵌套的跨度。如果我声明一个页面范围的事务,可以按范围记录Angular的ngOnInit
,但是永远不会记录其他事件挂钩。
onLoaded() {
const span = this.tracer.startSpan('span-scene-loaded'); // Not recorded
// ...
span.end();
}
我尝试了这种变化。在范围,childOf,应用程序级别范围,范围的各个实例中包装范围。
答案 0 :(得分:0)
要将跨度包括在交易中,您应该从交易对象开始跨度
...
var span = transaction.startSpan('My custom span')
...
并结束父交易对象的所有嵌套范围也将以层叠方式结束
https://www.elastic.co/guide/en/apm/agent/js-base/4.x/transaction-api.html#transaction-start-span