summaryrefslogtreecommitdiff
path: root/src/frontend/utils/telemetry/Instrumentation.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/frontend/utils/telemetry/Instrumentation.js')
-rw-r--r--src/frontend/utils/telemetry/Instrumentation.js41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/frontend/utils/telemetry/Instrumentation.js b/src/frontend/utils/telemetry/Instrumentation.js
new file mode 100644
index 0000000..39b0b85
--- /dev/null
+++ b/src/frontend/utils/telemetry/Instrumentation.js
@@ -0,0 +1,41 @@
+// Copyright The OpenTelemetry Authors
+// SPDX-License-Identifier: Apache-2.0
+
+const opentelemetry = require('@opentelemetry/sdk-node');
+const {getNodeAutoInstrumentations} = require('@opentelemetry/auto-instrumentations-node');
+const {OTLPTraceExporter} = require('@opentelemetry/exporter-trace-otlp-grpc');
+const {OTLPMetricExporter} = require('@opentelemetry/exporter-metrics-otlp-grpc');
+const {PeriodicExportingMetricReader} = require('@opentelemetry/sdk-metrics');
+const {alibabaCloudEcsDetector} = require('@opentelemetry/resource-detector-alibaba-cloud');
+const {awsEc2Detector, awsEksDetector} = require('@opentelemetry/resource-detector-aws');
+const {containerDetector} = require('@opentelemetry/resource-detector-container');
+const {gcpDetector} = require('@opentelemetry/resource-detector-gcp');
+const {envDetector, hostDetector, osDetector, processDetector} = require('@opentelemetry/resources');
+
+const sdk = new opentelemetry.NodeSDK({
+ traceExporter: new OTLPTraceExporter(),
+ instrumentations: [
+ getNodeAutoInstrumentations({
+ // disable fs instrumentation to reduce noise
+ '@opentelemetry/instrumentation-fs': {
+ enabled: false,
+ },
+ })
+ ],
+ metricReader: new PeriodicExportingMetricReader({
+ exporter: new OTLPMetricExporter(),
+ }),
+ resourceDetectors: [
+ containerDetector,
+ envDetector,
+ hostDetector,
+ osDetector,
+ processDetector,
+ alibabaCloudEcsDetector,
+ awsEksDetector,
+ awsEc2Detector,
+ gcpDetector,
+ ],
+});
+
+sdk.start();