Flow Studio
OpenTelemetry Trace ID
Every NodeLogEmitted event carries a traceId from the OpenTelemetry span active when the log was emitted. This trace ID links the log entry to the full distributed trace visible in Jaeger, Zipkin, or Grafana Tempo.
Trace ID in the UI
In the Logs tab list view, the trace ID is not shown inline (to keep rows compact). It appears in two places:
- Log Detail tab — the full 32-character hex trace ID with a copy button
- Text search — searching by trace ID finds all log entries from the same trace, even across different nodes
How the Trace ID Is Set
The Process Engine creates an OpenTelemetry activity (span) for each node execution. All log statements within that execution share the same trace ID:
// Backend — simplified Process Engine node runner
using var activity = ActivitySource.StartActivity("NodeExecution");
activity?.SetTag("nodeId", nodeId);
activity?.SetTag("executionId", executionId);
// ctx.Logger.LogInformation() inside the executor will inherit this traceId
// and it will be included in the NodeLogEmitted event payload
Navigating to the Trace
If a Jaeger or Grafana Tempo URL template is configured in the environment, the Log Detail tab renders the trace ID as a clickable link:
// Configuration (environment variable or app config)
VITE_TRACE_URL_TEMPLATE=https://tempo.internal/trace/{traceId}
// In Log Detail tab
const traceUrl = traceUrlTemplate?.replace('{traceId}', log.traceId);
// Renders: <a href={traceUrl} target="_blank">View Trace</a>
Using Trace ID for Correlation
| Scenario | How to Use the Trace ID |
|---|---|
| Find all logs from one node execution | Search by traceId in the Logs tab text search |
| Correlate frontend log with backend exception | Copy traceId from Log Detail, search in your APM backend (Loki, Splunk, etc.) |
| Time a specific HTTP call | Open the trace in Tempo/Jaeger to see the full span waterfall |
Same TraceId Across All Node Logs
All log entries emitted during a single node execution share the same
traceId. If a node makes multiple HTTP calls, all related logs (including each HTTP call's latency) will have the same trace ID, linking them all in the distributed trace.