@@ -17,18 +17,21 @@ import * as autoInstrumentationAPI from "@opentelemetry/auto-instrumentations-we
1717import * as api from "@opentelemetry/api" ;
1818import { BaseOpenTelemetryComponent } from '@opentelemetry/plugin-react-load' ;
1919import { SemanticResourceAttributes } from "@opentelemetry/semantic-conventions" ;
20+ import { getUnleash } from "./unleash" ;
21+ import { DiagConsoleLogger } from "@opentelemetry/api" ;
2022
2123
2224/* Set Global Propagator */
2325// support jaeger, W3C and W3C Baggage propagation
2426const propagator = new CompositePropagator ( { propagators : [ new JaegerPropagator ( ) , new W3CTraceContextPropagator ( ) , new W3CBaggagePropagator ( ) ] } )
2527api . propagation . setGlobalPropagator ( propagator ) ;
26- const traceProvider = new WebTracerProvider ( {
28+ export const traceProvider = new WebTracerProvider ( {
2729 resource : new Resource ( {
2830 // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/README.md#semantic-attributes-with-sdk-provided-default-value
2931 [ SemanticResourceAttributes . SERVICE_NAME ] : "snapshot" ,
3032 [ SemanticResourceAttributes . SERVICE_NAMESPACE ] : "example.meetup" ,
3133 [ SemanticResourceAttributes . SERVICE_VERSION ] : "0.1.0" ,
34+ [ SemanticResourceAttributes . PROCESS_OWNER ] : "1233"
3235 } ) ,
3336 // this is the same as directly using the AlwaysOnSampler, but this shows how to respect the parent.
3437 // https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-core#parentbased-sampler
@@ -47,21 +50,29 @@ const traceProvider = new WebTracerProvider({
4750// add processors
4851traceProvider . addSpanProcessor ( new SimpleSpanProcessor ( new ConsoleSpanExporter ( ) ) ) ;
4952
50- const exporter = new OTLPTraceExporter ( {
51- url : "http://collector.testing.com/v1/traces" , // url is optional and can be omitted - default is http://localhost:55681/v1/traces
52- headers : { } , // an optional object containing custom headers to be sent with each request
53- concurrencyLimit : 10 , // an optional limit on pending requests
54- } ) ;
55- traceProvider . addSpanProcessor ( new BatchSpanProcessor ( exporter , {
56- // The maximum queue size. After the size is reached spans are dropped.
57- maxQueueSize : 100 ,
58- // The maximum batch size of every export. It must be smaller or equal to maxQueueSize.
59- maxExportBatchSize : 10 ,
60- // The interval between two consecutive exports
61- scheduledDelayMillis : 500 ,
62- // How long the export can run before it is cancelled
63- exportTimeoutMillis : 30000 ,
64- } ) ) ;
53+ getUnleash ( ) . then ( value => {
54+ const exporter = new OTLPTraceExporter ( {
55+ url : "http://collector.testing.com/v1/traces" , // url is optional and can be omitted - default is http://localhost:55681/v1/traces
56+ headers : { } , // an optional object containing custom headers to be sent with each request
57+ concurrencyLimit : 10 , // an optional limit on pending requests
58+ } ) ;
59+
60+ const enabled = value . isEnabled ( "opentelemetry" )
61+ console . log ( `opentelemetry feature flag: ${ enabled } ` )
62+
63+ if ( enabled ) {
64+ traceProvider . addSpanProcessor ( new BatchSpanProcessor ( exporter , {
65+ // The maximum queue size. After the size is reached spans are dropped.
66+ maxQueueSize : 100 ,
67+ // The maximum batch size of every export. It must be smaller or equal to maxQueueSize.
68+ maxExportBatchSize : 20 ,
69+ // The interval between two consecutive exports
70+ scheduledDelayMillis : 500 ,
71+ // How long the export can run before it is cancelled
72+ exportTimeoutMillis : 30000 ,
73+ } ) ) ;
74+ }
75+ } ) . catch ( reason => console . log ( reason ) )
6576
6677
6778traceProvider . register ( {
@@ -83,9 +94,9 @@ registerInstrumentations({
8394 ] ,
8495
8596} ) ;
86- export let tracer = traceProvider . getTracer ( "snapshot" ) ;
97+
8798BaseOpenTelemetryComponent . setTracer ( "snapshot" ) // set global tracer for react
88- BaseOpenTelemetryComponent . setLogger ( traceProvider . logger )
99+ BaseOpenTelemetryComponent . setLogger ( new DiagConsoleLogger ( ) )
89100
90101
91102export default function TraceProvider ( { children} ) {
0 commit comments