Skip to content

Commit cbb5eb5

Browse files
committed
update browser sdk code
1 parent fe3598a commit cbb5eb5

File tree

1 file changed

+48
-54
lines changed

1 file changed

+48
-54
lines changed

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

+48-54
Original file line numberDiff line numberDiff line change
@@ -22,62 +22,56 @@ 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({ detectors: [browserDetector] });
32+
resource = resource.merge(detectedResources);
33+
34+
const provider = new WebTracerProvider({
35+
resource,
36+
spanProcessors: [
37+
new SessionIdProcessor(),
38+
new BatchSpanProcessor(
39+
new OTLPTraceExporter({
40+
url: NEXT_PUBLIC_OTEL_EXPORTER_OTLP_TRACES_ENDPOINT || 'http://localhost:4318/v1/traces',
41+
}),
42+
{
43+
scheduledDelayMillis: 500,
44+
}
45+
),
46+
],
47+
});
48+
49+
const contextManager = new ZoneContextManager();
50+
51+
provider.register({
52+
contextManager,
53+
propagator: new CompositePropagator({
54+
propagators: [
55+
new W3CBaggagePropagator(),
56+
new W3CTraceContextPropagator()],
6257
}),
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-
});
58+
});
7959

80-
sdk.start();
60+
registerInstrumentations({
61+
tracerProvider: provider,
62+
instrumentations: [
63+
getWebAutoInstrumentations({
64+
'@opentelemetry/instrumentation-fetch': {
65+
propagateTraceHeaderCorsUrls: /.*/,
66+
clearTimingResources: true,
67+
applyCustomAttributesOnSpan(span) {
68+
span.setAttribute('app.synthetic_request', IS_SYNTHETIC_REQUEST);
69+
},
70+
},
71+
}),
72+
],
73+
});
74+
};
8175
```
8276

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

0 commit comments

Comments
 (0)