Compare commits

...

12 Commits

Author SHA1 Message Date
ShubhamPalriwala
0f450dfaff fix: use t3-env 2024-03-14 20:36:49 +05:30
ShubhamPalriwala
6f4a84992f fix: move to server side var 2024-03-14 17:15:32 +05:30
ShubhamPalriwala
a5d236532f Merge branch 'shubham/for-2023-self-host-signoz-for-trying-out-their-monitoring' of https://github.com/formbricks/formbricks into shubham/for-2023-self-host-signoz-for-trying-out-their-monitoring 2024-03-14 16:30:48 +05:30
ShubhamPalriwala
ae8c10944b chore: cleanup service name 2024-03-14 16:30:21 +05:30
Matti Nannt
5f12ebe54b Merge branch 'main' into shubham/for-2023-self-host-signoz-for-trying-out-their-monitoring 2024-03-14 11:55:03 +01:00
ShubhamPalriwala
4362c95581 chore: clenaup + add env var to kamal 2024-03-14 16:22:49 +05:30
ShubhamPalriwala
4c496bace4 fix: generalise opentelemetry 2024-03-14 12:18:39 +05:30
ShubhamPalriwala
da61b37d2d fix: telemetry exports 2024-03-14 12:11:52 +05:30
ShubhamPalriwala
d31802a2fe fix: resolve lockfile 2024-03-14 11:37:16 +05:30
ShubhamPalriwala
95fa4092ee Merge branch 'main' of https://github.com/formbricks/formbricks into shubham/for-2023-self-host-signoz-for-trying-out-their-monitoring 2024-03-14 11:36:25 +05:30
ShubhamPalriwala
b6d7ae1af5 feat: opentelemetry with signoz client-side it is 2024-03-14 11:33:14 +05:30
ShubhamPalriwala
b0bbd4a131 feat: opentelemetry with signoz 2024-03-13 19:52:48 +05:30
11 changed files with 1389 additions and 23 deletions

View File

@@ -165,3 +165,6 @@ ENTERPRISE_LICENSE_KEY=
# Ignore Rate Limiting across the Formbricks app
# RATE_LIMITING_DISABLED=1
# OpenTelemetry URL for tracing
# OPENTELEMETRY_LISTENER_URL=http://localhost:4318/v1/traces

View File

@@ -68,6 +68,7 @@ jobs:
S3_SECRET_KEY: ${{ secrets.S3_SECRET_KEY }}
S3_REGION: ${{ vars.S3_REGION }}
S3_BUCKET_NAME: ${{ vars.S3_BUCKET_NAME }}
OPENTELEMETRY_LISTENER_URL: ${{ vars.OPENTELEMETRY_LISTENER_URL }}
KAMAL_REGISTRY_PASSWORD: ${{ secrets.KAMAL_REGISTRY_PASSWORD }}
steps:

View File

@@ -183,6 +183,7 @@ These variables can be provided at the runtime i.e. in your docker-compose file.
| OIDC_CLIENT_SECRET | Secret for Custom OpenID Connect Provider | optional (required if OIDC auth is enabled) | |
| OIDC_ISSUER | Issuer URL for Custom OpenID Connect Provider (should have `.well-known` configured at this) | optional (required if OIDC auth is enabled) | |
| OIDC_SIGNING_ALGORITHM | Signing Algorithm for Custom OpenID Connect Provider | optional | `RS256` |
| OPENTELEMETRY_LISTENER_URL | URL for OpenTelemetry listener inside Formbricks. | optional | | |
## Build-time Variables

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);
}
}

View File

@@ -0,0 +1,9 @@
import { env } from "@formbricks/lib/env";
export async function register() {
if (process.env.NEXT_RUNTIME === "nodejs" && env.OPENTELEMETRY_LISTENER_URL) {
const { startInstrumentationForNode } = await import("./instrumentation.node");
startInstrumentationForNode(env.OPENTELEMETRY_LISTENER_URL);
}
}

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: {

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",

View File

@@ -76,6 +76,7 @@ env:
- NEXT_PUBLIC_FORMBRICKS_API_HOST
- NEXT_PUBLIC_FORMBRICKS_ENVIRONMENT_ID
- NEXT_PUBLIC_FORMBRICKS_ONBOARDING_SURVEY_ID
- OPENTELEMETRY_LISTENER_URL
- NEXT_PUBLIC_SENTRY_DSN
- CLOUDFLARE_EMAIL
- CLOUDFLARE_DNS_API_TOKEN

View File

@@ -50,6 +50,7 @@ export const env = createEnv({
OIDC_DISPLAY_NAME: z.string().optional(),
OIDC_ISSUER: z.string().optional(),
OIDC_SIGNING_ALGORITHM: z.string().optional(),
OPENTELEMETRY_LISTENER_URL: z.string().optional(),
ONBOARDING_DISABLED: z.string().optional(),
PASSWORD_RESET_DISABLED: z.enum(["1", "0"]).optional(),
PRIVACY_URL: z
@@ -145,6 +146,7 @@ export const env = createEnv({
NEXT_PUBLIC_POSTHOG_API_HOST: process.env.NEXT_PUBLIC_POSTHOG_API_HOST,
NEXT_PUBLIC_POSTHOG_API_KEY: process.env.NEXT_PUBLIC_POSTHOG_API_KEY,
NEXT_PUBLIC_SENTRY_DSN: process.env.NEXT_PUBLIC_SENTRY_DSN,
OPENTELEMETRY_LISTENER_URL: process.env.OPENTELEMETRY_LISTENER_URL,
NOTION_OAUTH_CLIENT_ID: process.env.NOTION_OAUTH_CLIENT_ID,
NOTION_OAUTH_CLIENT_SECRET: process.env.NOTION_OAUTH_CLIENT_SECRET,
OIDC_CLIENT_ID: process.env.OIDC_CLIENT_ID,

1360
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -104,6 +104,8 @@
"NEXT_PUBLIC_FORMBRICKS_COM_API_HOST",
"NEXT_PUBLIC_FORMBRICKS_COM_ENVIRONMENT_ID",
"NEXT_PUBLIC_FORMBRICKS_COM_DOCS_FEEDBACK_SURVEY_ID",
"OPENTELEMETRY_LISTENER_URL",
"NEXT_RUNTIME",
"NEXTAUTH_SECRET",
"NEXTAUTH_URL",
"NODE_ENV",