1
1
'use strict' ;
2
2
3
3
const opentelemetry = require ( '@opentelemetry/core' ) ;
4
- const { BasicTracer } = require ( '@opentelemetry/basic-tracer' ) ;
4
+ const { BasicTracer, SimpleSpanProcessor } = require ( '@opentelemetry/basic-tracer' ) ;
5
+ const { JaegerExporter } = require ( '@opentelemetry/exporter-jaeger' ) ;
5
6
7
+ const options = {
8
+ serviceName : 'my-service'
9
+ }
10
+ const exporter = new JaegerExporter ( options ) ;
11
+
12
+ const tracer = new BasicTracer ( ) ;
13
+ tracer . addSpanProcessor ( new SimpleSpanProcessor ( exporter ) ) ;
6
14
// Initialize the OpenTelemetry APIs to use the BasicTracer bindings
7
- opentelemetry . initGlobalTracer ( new BasicTracer ( ) ) ;
15
+ opentelemetry . initGlobalTracer ( tracer ) ;
8
16
9
17
// Create a span. A span must be closed.
10
18
const span = opentelemetry . getTracer ( ) . startSpan ( 'main' ) ;
@@ -14,14 +22,18 @@ for (let i = 0; i < 10; i++) {
14
22
// Be sure to end the span.
15
23
span . end ( ) ;
16
24
25
+ // flush and close the connection.
26
+ exporter . shutdown ( ) ;
27
+
17
28
function doWork ( parent ) {
18
29
// Start another span. In this example, the main method already started a
19
30
// span, so that'll be the parent span, and this will be a child span.
20
31
const span = opentelemetry . getTracer ( ) . startSpan ( 'doWork' , {
21
32
parent : parent
22
33
} ) ;
23
34
24
- for ( let i = 0 ; i <= 40000000 ; i ++ ) { } // short delay
35
+ // simulate some random work.
36
+ for ( let i = 0 ; i <= Math . floor ( Math . random ( ) * 40000000 ) ; i ++ ) { }
25
37
26
38
// Set attributes to the span.
27
39
span . setAttribute ( 'key' , 'value' ) ;
0 commit comments