Skip to content

Commit afb7e18

Browse files
authored
[demo] update frontend browser sdk code (open-telemetry#6437)
1 parent b0aa4cd commit afb7e18

File tree

1 file changed

+53
-54
lines changed

1 file changed

+53
-54
lines changed

content/en/docs/demo/services/frontend.md

+53-54
Original file line numberDiff line numberDiff line change
@@ -22,62 +22,61 @@ initialize the SDK and auto-instrumentation based on standard
2222
for OTLP export, resource attributes, and service name.
2323

2424
```javascript
25-
const opentelemetry = require('@opentelemetry/sdk-node');
26-
const {
27-
getNodeAutoInstrumentations,
28-
} = require('@opentelemetry/auto-instrumentations-node');
29-
const {
30-
OTLPTraceExporter,
31-
} = require('@opentelemetry/exporter-trace-otlp-grpc');
32-
const {
33-
OTLPMetricExporter,
34-
} = require('@opentelemetry/exporter-metrics-otlp-grpc');
35-
const { PeriodicExportingMetricReader } = require('@opentelemetry/sdk-metrics');
36-
const {
37-
alibabaCloudEcsDetector,
38-
} = require('@opentelemetry/resource-detector-alibaba-cloud');
39-
const {
40-
awsEc2Detector,
41-
awsEksDetector,
42-
} = require('@opentelemetry/resource-detector-aws');
43-
const {
44-
containerDetector,
45-
} = require('@opentelemetry/resource-detector-container');
46-
const { gcpDetector } = require('@opentelemetry/resource-detector-gcp');
47-
const {
48-
envDetector,
49-
hostDetector,
50-
osDetector,
51-
processDetector,
52-
} = require('@opentelemetry/resources');
53-
54-
const sdk = new opentelemetry.NodeSDK({
55-
traceExporter: new OTLPTraceExporter(),
56-
instrumentations: [
57-
getNodeAutoInstrumentations({
58-
// only instrument fs if it is part of another trace
59-
'@opentelemetry/instrumentation-fs': {
60-
requireParentSpan: true,
61-
},
25+
const FrontendTracer = async () => {
26+
const { ZoneContextManager } = await import('@opentelemetry/context-zone');
27+
28+
let resource = new Resource({
29+
[SEMRESATTRS_SERVICE_NAME]: NEXT_PUBLIC_OTEL_SERVICE_NAME,
30+
});
31+
const detectedResources = detectResourcesSync({
32+
detectors: [browserDetector],
33+
});
34+
resource = resource.merge(detectedResources);
35+
36+
const provider = new WebTracerProvider({
37+
resource,
38+
spanProcessors: [
39+
new SessionIdProcessor(),
40+
new BatchSpanProcessor(
41+
new OTLPTraceExporter({
42+
url:
43+
NEXT_PUBLIC_OTEL_EXPORTER_OTLP_TRACES_ENDPOINT ||
44+
'http://localhost:4318/v1/traces',
45+
}),
46+
{
47+
scheduledDelayMillis: 500,
48+
},
49+
),
50+
],
51+
});
52+
53+
const contextManager = new ZoneContextManager();
54+
55+
provider.register({
56+
contextManager,
57+
propagator: new CompositePropagator({
58+
propagators: [
59+
new W3CBaggagePropagator(),
60+
new W3CTraceContextPropagator(),
61+
],
6262
}),
63-
],
64-
metricReader: new PeriodicExportingMetricReader({
65-
exporter: new OTLPMetricExporter(),
66-
}),
67-
resourceDetectors: [
68-
containerDetector,
69-
envDetector,
70-
hostDetector,
71-
osDetector,
72-
processDetector,
73-
alibabaCloudEcsDetector,
74-
awsEksDetector,
75-
awsEc2Detector,
76-
gcpDetector,
77-
],
78-
});
63+
});
7964

80-
sdk.start();
65+
registerInstrumentations({
66+
tracerProvider: provider,
67+
instrumentations: [
68+
getWebAutoInstrumentations({
69+
'@opentelemetry/instrumentation-fetch': {
70+
propagateTraceHeaderCorsUrls: /.*/,
71+
clearTimingResources: true,
72+
applyCustomAttributesOnSpan(span) {
73+
span.setAttribute('app.synthetic_request', IS_SYNTHETIC_REQUEST);
74+
},
75+
},
76+
}),
77+
],
78+
});
79+
};
8180
```
8281

8382
Node required modules are loaded using the `--require` command line argument.

0 commit comments

Comments
 (0)