dagger/dagger · error
export metrics: %w
Error message
export metrics: %w
What it means
During subscribeTelemetry, if Client.EngineMetrics is non-nil the client starts an OTel metrics exporter toward the engine. A failure from c.exportMetrics is wrapped as "export metrics: %w". It means the metrics export stream could not be established at connect time.
Source
Thrown at engine/client/client.go:556
slog := slog.With("client", c.ID)
slog.Debug("subscribing to telemetry", "remote", c.RunnerHost)
c.telemetry = new(errgroup.Group)
httpClient := c.newTelemetryHTTPClient()
if c.EngineTrace != nil {
if err := c.exportTraces(ctx, httpClient); err != nil {
return fmt.Errorf("export traces: %w", err)
}
}
if c.EngineLogs != nil {
if err := c.exportLogs(ctx, httpClient); err != nil {
return fmt.Errorf("export logs: %w", err)
}
}
if c.EngineMetrics != nil {
if err := c.exportMetrics(ctx, httpClient); err != nil {
return fmt.Errorf("export metrics: %w", err)
}
}
return nil
}
func (c *Client) startSession(ctx context.Context) (rerr error) {
ctx, sessionSpan := Tracer(ctx).Start(ctx, "starting session", telemetry.Encapsulate())
defer telemetry.EndWithCause(sessionSpan, &rerr)
clientMetadata := c.clientMetadata()
c.internalCtx = engine.ContextWithClientMetadata(c.internalCtx, &clientMetadata)
attachables := []SessionAttachable{
// sockets
SocketProvider{EnableHostNetworkAccess: true},
// secrets
secretprovider.NewSecretProvider(),
// registry authView on GitHub (pinned to 82ba2681db)
Solutions
- Inspect the wrapped cause for the transport-level error
- Confirm engine reachability and that no proxy/firewall blocks the telemetry connection
- Retry the connect
- Leave Client.EngineMetrics nil if metrics export is not needed
Example fix
null
Defensive patterns
Strategy: try-catch
Validate before calling
null
Type guard
null
Try / catch
_, err := dagger.Connect(ctx, dagger.WithEngineMetrics(true))
if err != nil && strings.Contains(err.Error(), "export metrics") {
// retry or skip metrics export
} Prevention
- Ensure the engine telemetry endpoint is reachable before enabling metrics
- Use generous connect timeouts in slow networks
- Check corporate proxy policy for OTLP/metrics traffic
- Leave EngineMetrics nil when metrics aren't required
When it happens
Trigger: dagger.Connect() or ConnectEngineToEngine with Client.EngineMetrics enabled, and exportMetrics fails — HTTP dial/write error to the engine telemetry endpoint or context cancellation.
Common situations: Engine unreachable or restarted mid-connect; corporate proxy blocking the telemetry channel; short-lived connect context expiring during exporter setup.
Related errors
- subscribe to telemetry: %w
- export traces: %w
- export logs: %w
- re-export metrics: %w
- failed to create cpuUsage metric: %w
AI-assisted analysis of dagger/dagger@82ba2681db (2026-09-05).
Data as JSON: /api/errors/15f76fe8fe346509.
Report an issue: GitHub.