(private readonly config: TracingSDKConfig)
| 98 | public readonly getTracer: TracerProvider["getTracer"]; |
| 99 | |
| 100 | constructor(private readonly config: TracingSDKConfig) { |
| 101 | setLogLevel(config.diagLogLevel ?? "none"); |
| 102 | |
| 103 | const envResourceAttributesSerialized = getEnvVar("OTEL_RESOURCE_ATTRIBUTES"); |
| 104 | const envResourceAttributes = envResourceAttributesSerialized |
| 105 | ? JSON.parse(envResourceAttributesSerialized) |
| 106 | : {}; |
| 107 | |
| 108 | const commonResources = detectResourcesSync({ |
| 109 | detectors: [this.asyncResourceDetector, processDetectorSync], |
| 110 | }) |
| 111 | .merge( |
| 112 | new Resource({ |
| 113 | [SemanticResourceAttributes.CLOUD_PROVIDER]: "trigger.dev", |
| 114 | [SemanticInternalAttributes.TRIGGER]: true, |
| 115 | [SemanticInternalAttributes.CLI_VERSION]: version, |
| 116 | }) |
| 117 | ) |
| 118 | .merge(config.resource ?? new Resource({})) |
| 119 | .merge(new Resource(envResourceAttributes)); |
| 120 | |
| 121 | const traceProvider = new NodeTracerProvider({ |
| 122 | forceFlushTimeoutMillis: config.forceFlushTimeoutMillis ?? 500, |
| 123 | resource: commonResources, |
| 124 | spanLimits: { |
| 125 | attributeCountLimit: OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT, |
| 126 | attributeValueLengthLimit: OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT, |
| 127 | eventCountLimit: OTEL_SPAN_EVENT_COUNT_LIMIT, |
| 128 | attributePerEventCountLimit: OTEL_ATTRIBUTE_PER_EVENT_COUNT_LIMIT, |
| 129 | linkCountLimit: OTEL_LINK_COUNT_LIMIT, |
| 130 | attributePerLinkCountLimit: OTEL_ATTRIBUTE_PER_LINK_COUNT_LIMIT, |
| 131 | }, |
| 132 | }); |
| 133 | |
| 134 | const spanExporter = new OTLPTraceExporter({ |
| 135 | url: `${config.url}/v1/traces`, |
| 136 | timeoutMillis: config.forceFlushTimeoutMillis ?? 1000, |
| 137 | }); |
| 138 | |
| 139 | traceProvider.addSpanProcessor( |
| 140 | new TaskContextSpanProcessor( |
| 141 | getEnvVar("OTEL_BATCH_PROCESSING_ENABLED") === "1" |
| 142 | ? new BatchSpanProcessor(spanExporter, { |
| 143 | maxExportBatchSize: parseInt(getEnvVar("OTEL_SPAN_MAX_EXPORT_BATCH_SIZE") ?? "64"), |
| 144 | scheduledDelayMillis: parseInt( |
| 145 | getEnvVar("OTEL_SPAN_SCHEDULED_DELAY_MILLIS") ?? "200" |
| 146 | ), |
| 147 | exportTimeoutMillis: parseInt( |
| 148 | getEnvVar("OTEL_SPAN_EXPORT_TIMEOUT_MILLIS") ?? "30000" |
| 149 | ), |
| 150 | maxQueueSize: parseInt(getEnvVar("OTEL_SPAN_MAX_QUEUE_SIZE") ?? "512"), |
| 151 | }) |
| 152 | : new SimpleSpanProcessor(spanExporter) |
| 153 | ) |
| 154 | ); |
| 155 | |
| 156 | traceProvider.register(); |
| 157 |
nothing calls this directly
no test coverage detected