Prerequisites
Please answer the following questions for yourself before submitting an issue.
Current Behavior
Trace spans from moleculer don't line up with spans from third-party modules or moleculer spans from remote services (different processes/brokers). For example, the red span in the image below should fully contain the green and purple spans under it.

Expected Behavior
Span times should be as consistent as possible across all modules.

Failure Information
This is caused by clock drift in moleculer's tracing/now.js implementation, which is used to set the startTime of spans. The following code and charts test this behavior and show how much a span could drift compared to Date.now().
Reproduce code snippet
const now = require("./src/tracing/now");
// Output CSV for analysis
console.log(`"Time elapsed (ms)","Drift (ms)"`);
const startTime = Date.now();
console.log(`0,${now() - startTime}`);
setInterval(() => {
const time = Date.now();
console.log(`${time - startTime},${now() - time}`);
}, 5e3);
Here are charts from two sample runs:
20 minutes, 25 ms drift

60 minutes, 42 ms max drift

Context
- Moleculer version: master
- NodeJS version: 12.21.0
- Operating System: macOS 10.15.7
Prerequisites
Please answer the following questions for yourself before submitting an issue.
Current Behavior
Trace spans from moleculer don't line up with spans from third-party modules or moleculer spans from remote services (different processes/brokers). For example, the red span in the image below should fully contain the green and purple spans under it.
Expected Behavior
Span times should be as consistent as possible across all modules.
Failure Information
This is caused by clock drift in moleculer's
tracing/now.jsimplementation, which is used to set thestartTimeof spans. The following code and charts test this behavior and show how much a span could drift compared toDate.now().Reproduce code snippet
Here are charts from two sample runs:
20 minutes, 25 ms drift

60 minutes, 42 ms max drift

Context