Skip to content

bug: OpenTelemetry Spans Not Displaying in Self-Hosted Instance Timeline #2821

@Aquesta

Description

@Aquesta

Provide environment information

Self-hosted Instance: │ │

  • Trigger.dev Version: main (Docker image from 2024-12-26) │ │
  • Deployment: Docker Compose (official hosting/docker/webapp setup)
  • Instance URL: trigger.devneurox.tech │ │
  • Docker Images: │ │
  • Webapp: ghcr.io/triggerdotdev/trigger.dev:main (c3af7f05c1da) │ │
  • Supervisor: ghcr.io/triggerdotdev/supervisor:main (d3d1d21ad176)

Describe the bug

Issue: OpenTelemetry Spans Not Displaying in Self-Hosted Instance Timeline

Environment:

  • Trigger.dev SDK: v4.3.1
  • Self-hosted instance: trigger.devneurox.tech
  • Cloud instance: cloud.trigger.dev

Problem Description:

OpenTelemetry spans created with logger.trace() are not visible in the timeline UI on our self-hosted Trigger.dev instance, but they work correctly on the official cloud instance (cloud.trigger.dev).

Configuration:

trigger.config.ts:

import { defineConfig } from "@trigger.dev/sdk";
import { HttpInstrumentation } from "@opentelemetry/instrumentation-http";
import { FetchInstrumentation } from "@opentelemetry/instrumentation-fetch";

export default defineConfig({
  project: "proj_iahascmunqsxfplmrepp",
  runtime: "node",
  logLevel: "log",
  telemetry: {
    instrumentations: [
      new HttpInstrumentation(),
      new FetchInstrumentation(),
    ],
  },
  // ...
});

Code Example:

const marketData = await logger.trace("bybit-api-calls", async (span) => {
  span.setAttribute("symbol", input.symbol);
  span.setAttribute("endpoints", "getTicker, getOpenInterest, getLongShortRatio, getFundingRate");
  return await bybitAPI.getMarketData(input.symbol);
});

Expected Behavior:

Timeline should show individual spans with hierarchy and timing.

Actual Behavior:

Self-Hosted: Timeline shows only one solid green bar - no spans visible
Cloud (cloud.trigger.dev): Timeline correctly shows all spans 
Steps to Reproduce:

Deploy same code with [logger.trace()](vscode-file://vscode-app/Applications/Visual%20Studio%20Code.app/Contents/Resources/app/out/vs/code/electron-browser/workbench/workbench.html) spans to both self-hosted and cloud
Trigger task execution
Compare timeline view in dashboard
Additional Info:

Tasks execute successfully on both instances. Console logs show correct timing. Issue appears UI-specific to self-hosted.

Question: What self-hosted dashboard version is required for span visualization?

### Reproduction repo

N/A - Private repository. Can provide minimal reproduction example if needed.

### To reproduce

**Steps to reproduce:**

1. Configure Trigger.dev with OpenTelemetry instrumentations:
```typescript
telemetry: {
  instrumentations: [
    new HttpInstrumentation(),
    new FetchInstrumentation(),
  ],
}
2. Add [logger.trace() spans in your task code:
const result = await logger.trace("operation-name", async (span) => {
  span.setAttribute("key", "value");
  return await someOperation();
});

3 Deploy to self-hosted instance (trigger.devneurox.tech)
4 Deploy same code to cloud instance (cloud.trigger.dev)
5 Execute task on both instances
6 Compare timeline view in dashboard
Expected: Timeline shows individual spans with hierarchy and timing

Actual on self-hosted: Timeline shows only one solid green bar - no span breakdown visible

Actual on cloud: Timeline correctly displays all spans with proper hierarchy 

Note: Tasks execute successfully on both - issue is UI-only on self-hosted.

### Additional information

<img width="751" height="345" alt="Image" src="https://github.com/user-attachments/assets/6eb7b2a4-6265-4c92-a2bd-d6d72e3eaa02" />

<img width="647" height="418" alt="Image" src="https://github.com/user-attachments/assets/d506c4ab-7812-4d50-ba20-73e56df4a86c" />

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions