@@ -27,6 +27,7 @@ import {
27
27
import { logger } from "~/services/logger.server" ;
28
28
import { trace , Tracer } from "@opentelemetry/api" ;
29
29
import { startSpan } from "./tracing.server" ;
30
+ import { enrichCreatableEvents } from "./utils/enrichCreatableEvents.server" ;
30
31
31
32
export type OTLPExporterConfig = {
32
33
batchSize : number ;
@@ -54,14 +55,16 @@ class OTLPExporter {
54
55
return convertSpansToCreateableEvents ( resourceSpan ) ;
55
56
} ) ;
56
57
57
- this . #logEventsVerbose ( events ) ;
58
+ const enrichedEvents = enrichCreatableEvents ( events ) ;
58
59
59
- span . setAttribute ( "event_count" , events . length ) ;
60
+ this . #logEventsVerbose( enrichedEvents ) ;
61
+
62
+ span . setAttribute ( "event_count" , enrichedEvents . length ) ;
60
63
61
64
if ( immediate ) {
62
- await this . _eventRepository . insertManyImmediate ( events ) ;
65
+ await this . _eventRepository . insertManyImmediate ( enrichedEvents ) ;
63
66
} else {
64
- await this . _eventRepository . insertMany ( events ) ;
67
+ await this . _eventRepository . insertMany ( enrichedEvents ) ;
65
68
}
66
69
67
70
return ExportTraceServiceResponse . create ( ) ;
@@ -79,14 +82,16 @@ class OTLPExporter {
79
82
return convertLogsToCreateableEvents ( resourceLog ) ;
80
83
} ) ;
81
84
82
- this . #logEventsVerbose( events ) ;
85
+ const enrichedEvents = enrichCreatableEvents ( events ) ;
86
+
87
+ this . #logEventsVerbose( enrichedEvents ) ;
83
88
84
- span . setAttribute ( "event_count" , events . length ) ;
89
+ span . setAttribute ( "event_count" , enrichedEvents . length ) ;
85
90
86
91
if ( immediate ) {
87
- await this . _eventRepository . insertManyImmediate ( events ) ;
92
+ await this . _eventRepository . insertManyImmediate ( enrichedEvents ) ;
88
93
} else {
89
- await this . _eventRepository . insertMany ( events ) ;
94
+ await this . _eventRepository . insertMany ( enrichedEvents ) ;
90
95
}
91
96
92
97
return ExportLogsServiceResponse . create ( ) ;
@@ -135,16 +140,28 @@ class OTLPExporter {
135
140
( attribute ) => attribute . key === SemanticInternalAttributes . TRIGGER
136
141
) ;
137
142
138
- if ( ! triggerAttribute ) {
143
+ const executionEnvironmentAttribute = resourceSpan . resource ?. attributes . find (
144
+ ( attribute ) => attribute . key === SemanticInternalAttributes . EXECUTION_ENVIRONMENT
145
+ ) ;
146
+
147
+ if ( ! triggerAttribute && ! executionEnvironmentAttribute ) {
139
148
logger . debug ( "Skipping resource span without trigger attribute" , {
140
149
attributes : resourceSpan . resource ?. attributes ,
141
150
spans : resourceSpan . scopeSpans . flatMap ( ( scopeSpan ) => scopeSpan . spans ) ,
142
151
} ) ;
143
152
144
- return ;
153
+ return true ; // go ahead and let this resource span through
154
+ }
155
+
156
+ const executionEnvironment = isStringValue ( executionEnvironmentAttribute ?. value )
157
+ ? executionEnvironmentAttribute . value . stringValue
158
+ : undefined ;
159
+
160
+ if ( executionEnvironment === "trigger" ) {
161
+ return true ; // go ahead and let this resource span through
145
162
}
146
163
147
- return isBoolValue ( triggerAttribute . value ) ? triggerAttribute . value . boolValue : false ;
164
+ return isBoolValue ( triggerAttribute ? .value ) ? triggerAttribute . value . boolValue : false ;
148
165
} ) ;
149
166
}
150
167
0 commit comments