Browse Source

add otel preparation code in index.js

Syunsuke Komma 2 years ago
parent
commit
5cf2a9490a
1 changed files with 13 additions and 0 deletions
  1. 13 0
      apps/app/src/server/crowi/index.js

+ 13 - 0
apps/app/src/server/crowi/index.js

@@ -5,6 +5,10 @@ import path from 'path';
 import { createTerminus } from '@godaddy/terminus';
 import attachmentRoutes from '@growi/remark-attachment-refs/dist/server';
 import lsxRoutes from '@growi/remark-lsx/dist/server/index.cjs';
+import { Resource } from '@opentelemetry/resources';
+import { NodeSDK } from '@opentelemetry/sdk-node';
+import { SimpleSpanProcessor, ConsoleSpanExporter } from '@opentelemetry/sdk-trace-node';
+import { SEMRESATTRS_SERVICE_NAME } from '@opentelemetry/semantic-conventions';
 import mongoose from 'mongoose';
 import next from 'next';
 
@@ -458,6 +462,15 @@ Crowi.prototype.start = async function() {
   await this.init();
   await this.buildServer();
 
+  // setup instrumentation for OpenTelemetry
+  const sdk = new NodeSDK({
+    resource: new Resource({
+      [SEMRESATTRS_SERVICE_NAME]: 'next-app',
+    }),
+    spanProcessor: new SimpleSpanProcessor(new ConsoleSpanExporter()),
+  });
+  sdk.start();
+
   // setup Next.js
   this.nextApp = next({ dev });
   await this.nextApp.prepare();