feat: opentelemetry integration (#2235)

Co-authored-by: Matti Nannt <mail@matthiasnannt.com>
This commit is contained in:
Shubham Palriwala
2024-03-14 19:29:49 +05:30
committed by GitHub
parent 907a9dc563
commit e4078a3307
12 changed files with 1392 additions and 29 deletions
+27
View File
@@ -0,0 +1,27 @@
import { getNodeAutoInstrumentations } from "@opentelemetry/auto-instrumentations-node";
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
import { Resource } from "@opentelemetry/resources";
import { NodeSDK } from "@opentelemetry/sdk-node";
import { SimpleSpanProcessor } from "@opentelemetry/sdk-trace-base";
import { SEMRESATTRS_SERVICE_NAME } from "@opentelemetry/semantic-conventions";
export function startInstrumentationForNode(url: string) {
try {
const exporter = new OTLPTraceExporter({
url,
});
const sdk = new NodeSDK({
resource: new Resource({
[SEMRESATTRS_SERVICE_NAME]: "Formbricks",
}),
traceExporter: exporter,
spanProcessor: new SimpleSpanProcessor(exporter),
instrumentations: [getNodeAutoInstrumentations()],
});
sdk.start();
} catch (err) {
console.error("Unable to setup Telemetry:", err);
}
}
+7
View File
@@ -0,0 +1,7 @@
export async function register() {
if (process.env.NEXT_RUNTIME === "nodejs" && process.env.OPENTELEMETRY_LISTENER_URL) {
const { startInstrumentationForNode } = await import("./instrumentation.node");
startInstrumentationForNode(process.env.OPENTELEMETRY_LISTENER_URL);
}
}
+1
View File
@@ -19,6 +19,7 @@ const nextConfig = {
output: "standalone",
experimental: {
serverComponentsExternalPackages: ["@aws-sdk"],
instrumentationHook: true,
},
transpilePackages: ["@formbricks/database", "@formbricks/ee", "@formbricks/ui", "@formbricks/lib"],
images: {
+5
View File
@@ -23,6 +23,11 @@
"@formbricks/ui": "workspace:*",
"@headlessui/react": "^1.7.18",
"@json2csv/node": "^7.0.6",
"@opentelemetry/auto-instrumentations-node": "^0.43.0",
"@opentelemetry/exporter-trace-otlp-http": "^0.49.1",
"@opentelemetry/resources": "^1.22.0",
"@opentelemetry/sdk-node": "^0.49.1",
"@opentelemetry/semantic-conventions": "^1.22.0",
"@paralleldrive/cuid2": "^2.2.2",
"@radix-ui/react-collapsible": "^1.0.3",
"@react-email/components": "^0.0.15",