docs/contributing/onboarding.md
This guide explains how to add new data sources to the SigNoz onboarding flow. The onboarding configuration controls the "New Source" / "Get Started" experience in SigNoz Cloud.
The configuration is located at:
frontend/src/container/OnboardingV2Container/onboarding-configs/onboarding-config-with-links.ts
The configuration file exports a TypeScript array (onboardingConfigWithLinks) containing data source objects. Each object represents a selectable option in the onboarding flow. SVG logos are imported as ES modules at the top of the file.
| Key | Type | Description |
|---|---|---|
dataSource | string | Unique identifier for the data source (kebab-case, e.g., "aws-ec2") |
label | string | Display name shown to users (e.g., "AWS EC2") |
tags | string[] | Array of category tags for grouping (e.g., ["AWS"], ["database"]) |
module | string | Destination module after onboarding completion |
imgUrl | string | Imported SVG URL (SVG required) (e.g., import ec2Url from '@/assets/Logos/ec2.svg', then use ec2Url) |
| Key | Type | Description |
|---|---|---|
link | string | Docs link to redirect to (e.g., "/docs/aws-monitoring/ec2/") |
relatedSearchKeywords | string[] | Array of keywords for search functionality |
question | object | Nested question object for multi-step flows |
internalRedirect | boolean | When true, navigates within the app instead of showing docs |
The module key determines where users are redirected after completing onboarding:
| Value | Destination |
|---|---|
apm | APM / Traces |
logs | Logs Explorer |
metrics | Metrics Explorer |
dashboards | Dashboards |
infra-monitoring-hosts | Infrastructure Monitoring - Hosts |
infra-monitoring-k8s | Infrastructure Monitoring - Kubernetes |
messaging-queues-kafka | Messaging Queues - Kafka |
messaging-queues-celery | Messaging Queues - Celery |
integrations | Integrations page |
home | Home page |
api-monitoring | API Monitoring |
The question object enables multi-step selection flows:
question: {
desc: 'What would you like to monitor?',
type: 'select',
helpText: 'Choose the telemetry type you want to collect.',
helpLink: '/docs/azure-monitoring/overview/',
helpLinkText: 'Read the guide →',
options: [
{
key: 'logging',
label: 'Logs',
imgUrl: azureVmUrl,
link: '/docs/azure-monitoring/app-service/logging/',
},
{
key: 'metrics',
label: 'Metrics',
imgUrl: azureVmUrl,
link: '/docs/azure-monitoring/app-service/metrics/',
},
{
key: 'tracing',
label: 'Traces',
imgUrl: azureVmUrl,
link: '/docs/azure-monitoring/app-service/tracing/',
},
],
},
| Key | Type | Description |
|---|---|---|
desc | string | Question text displayed to the user |
type | string | Currently only "select" is supported |
helpText | string | (Optional) Additional help text below the question |
helpLink | string | (Optional) Docs link for the help section |
helpLinkText | string | (Optional) Text for the help link (default: "Learn more →") |
options | array | Array of option objects |
Options can be simple (direct link) or nested (with another question):
{
key: 'aws-ec2-logs',
label: 'Logs',
imgUrl: ec2Url,
link: '/docs/userguide/collect_logs_from_file/',
},
{
key: 'aws-ec2-metrics-one-click',
label: 'One Click AWS',
imgUrl: ec2Url,
link: '/integrations?integration=aws-integration&service=ec2',
internalRedirect: true,
},
Important: Set
internalRedirect: trueonly for internal app routes (like/integrations?...). Docs links should NOT have this flag.
{
key: 'aws-ec2-metrics',
label: 'Metrics',
imgUrl: ec2Url,
question: {
desc: 'How would you like to set up monitoring?',
helpText: 'Choose your setup method.',
options: [...],
},
},
import elbUrl from '@/assets/Logos/elb.svg';
// inside the onboardingConfigWithLinks array:
{
dataSource: 'aws-elb',
label: 'AWS ELB',
tags: ['AWS'],
module: 'logs',
relatedSearchKeywords: [
'aws',
'aws elb',
'elb logs',
'elastic load balancer',
],
imgUrl: elbUrl,
link: '/docs/aws-monitoring/elb/',
},
import azureVmUrl from '@/assets/Logos/azure-vm.svg';
// inside the onboardingConfigWithLinks array:
{
dataSource: 'app-service',
label: 'App Service',
imgUrl: azureVmUrl,
tags: ['Azure'],
module: 'apm',
relatedSearchKeywords: ['azure', 'app service'],
question: {
desc: 'What telemetry data do you want to visualise?',
type: 'select',
options: [
{
key: 'logging',
label: 'Logs',
imgUrl: azureVmUrl,
link: '/docs/azure-monitoring/app-service/logging/',
},
{
key: 'metrics',
label: 'Metrics',
imgUrl: azureVmUrl,
link: '/docs/azure-monitoring/app-service/metrics/',
},
{
key: 'tracing',
label: 'Traces',
imgUrl: azureVmUrl,
link: '/docs/azure-monitoring/app-service/tracing/',
},
],
},
},
import ec2Url from '@/assets/Logos/ec2.svg';
// inside the onboardingConfigWithLinks array:
{
dataSource: 'aws-ec2',
label: 'AWS EC2',
tags: ['AWS'],
module: 'logs',
relatedSearchKeywords: ['aws', 'aws ec2', 'ec2 logs', 'ec2 metrics'],
imgUrl: ec2Url,
question: {
desc: 'What would you like to monitor for AWS EC2?',
type: 'select',
helpText: 'Choose the type of telemetry data you want to collect.',
options: [
{
key: 'aws-ec2-logs',
label: 'Logs',
imgUrl: ec2Url,
link: '/docs/userguide/collect_logs_from_file/',
},
{
key: 'aws-ec2-metrics',
label: 'Metrics',
imgUrl: ec2Url,
question: {
desc: 'How would you like to set up EC2 Metrics monitoring?',
helpText: 'One Click uses AWS CloudWatch integration. Manual setup uses OpenTelemetry.',
helpLink: '/docs/aws-monitoring/one-click-vs-manual/',
helpLinkText: 'Read the comparison guide →',
options: [
{
key: 'aws-ec2-metrics-one-click',
label: 'One Click AWS',
imgUrl: ec2Url,
link: '/integrations?integration=aws-integration&service=ec2',
internalRedirect: true,
},
{
key: 'aws-ec2-metrics-manual',
label: 'Manual Setup',
imgUrl: ec2Url,
link: '/docs/tutorial/opentelemetry-binary-usage-in-virtual-machine/',
},
],
},
},
],
},
},
AWS, Azure, GCP, database, logs, apm/traces, infrastructure monitoring, LLM Monitoring"aws ec2", "ec2", "ec2 logs")src/assets/Logos/import myServiceUrl from '@/assets/Logos/my-service.svg';
// then in the config object:
imgUrl: myServiceUrl,
https://openbrand.sh/?url=<TARGET_URL>, where <TARGET_URL> is the URL-encoded link to the service's website. For example, to get Render's logo, use https://openbrand.sh/?url=https%3A%2F%2Frender.com.npx svgo src/assets/Logos/your-logo.svg to minimise their size before committing./docs/ (will be prefixed with DOCS_BASE_URL)/integrations, /services, etc.internalRedirect: true for internal app routesdataSource and option key values{service}-{subtype}-{action} (e.g., aws-ec2-metrics-one-click)src/assets/Logos/ and add a top-level import in the config file (e.g., import myServiceUrl from '@/assets/Logos/my-service.svg')onboardingConfigWithLinks array, referencing the imported variable for imgUrlyarn dev