From bad69abcc2820269579cc54db772dce0024df475 Mon Sep 17 00:00:00 2001 From: Yunus M Date: Fri, 17 Nov 2023 20:08:04 +0530 Subject: [PATCH] Onboarding v2 (#3955) * feat: onboarding v2 * feat: module steps container component * feat: use onboarding context * feat: restructure folders for onboarding * feat: update data source utils and handle form value changes * feat: fix tsx issues * feat: remove stale code * feat: handle validate data source step and other ui fixes * feat: conditionally render steps inside modules * feat: update onboarding for ror * feat: refactoring * feat: generate file path to fetch md doc * feat: delete old module component files and move analytics utils to custom hook * feat: handle environment not selected state * feat: docs file structure for onboarding (#3975) * feat: replace analytics util with hooks * feat: delete apm flask kubernetes files and reference * feat: update analytics events * Onboarding docs v2 (#3988) * feat: added content to markdown files * feat: separate filepath constants for apm, logs , infra * feat: map key and filepath for logs * feat: mapped inframonitoring file paths * feat: minor updates * feat: remove console.log --------- Co-authored-by: Calm-Rock * feat: ignore file path fetch error --------- Co-authored-by: Calm-Rock --- frontend/public/Logos/fluent-bit.png | Bin 0 -> 49652 bytes frontend/public/Logos/fluentd.png | Bin 0 -> 20455 bytes frontend/public/Logos/logstash.svg | 1 + frontend/src/AppRoutes/index.tsx | 5 +- .../CodeCopyBtn/CodeCopyBtn.scss | 4 +- frontend/src/container/AppLayout/styles.ts | 2 +- .../BillingContainer/BillingContainer.tsx | 23 +- frontend/src/container/Header/index.tsx | 5 +- .../OnboardingContainer/APM/APM.styles.scss | 144 --- .../container/OnboardingContainer/APM/APM.tsx | 147 --- .../APM/GoLang/GoLang.styles.scss | 0 .../OnboardingContainer/APM/GoLang/GoLang.tsx | 68 - .../APM/Java/Java.styles.scss | 10 - .../OnboardingContainer/APM/Java/Java.tsx | 146 --- .../APM/Javascript/Javascript.styles.scss | 0 .../APM/Javascript/Javascript.tsx | 143 --- .../APM/Python/Python.styles.scss | 0 .../OnboardingContainer/APM/Python/Python.tsx | 152 --- .../APM/RubyOnRails/ROR.styles.scss | 0 .../APM/RubyOnRails/ROR.tsx | 68 - .../InfrastructureMonitoring.styles.scss | 45 - .../InfrastructureMonitoring.tsx | 154 --- .../md-docs/hostMetricsMonitoring.md | 10 - .../md-docs/kubernetesInfraMonitoring.md | 9 - .../md-docs/otherMetrics.md | 195 --- .../ApplicationLogs/ApplicationLogs.tsx | 53 - .../LogsManagement/Docker/Docker.tsx | 44 - .../ExistingCollectors/ExistingCollectors.tsx | 97 -- .../ExistingCollectors/md-docs/fluentBit.md | 58 - .../ExistingCollectors/md-docs/fluentD.md | 66 - .../ExistingCollectors/md-docs/logStash.md | 48 - .../LogsManagement/Kubernetes/Kubernetes.tsx | 44 - .../LogsManagement/LogsManagement.styles.scss | 152 --- .../LogsManagement/LogsManagement.tsx | 130 -- .../LogsManagement/Nodejs/Nodejs.tsx | 44 - .../LogsManagement/SysLogs/SysLogs.tsx | 44 - .../{ => Modules}/APM/GoLang/goLang.md | 0 .../golang-kubernetes-installOtelCollector.md | 21 + ...golang-kubernetes-instrumentApplication.md | 116 ++ .../golang-kubernetes-runApplication.md | 5 + ...xamd64-quickStart-instrumentApplication.md | 115 ++ ...ng-linuxamd64-quickStart-runApplication.md | 5 + ...xamd64-recommended-installOtelCollector.md | 93 ++ ...amd64-recommended-instrumentApplication.md | 116 ++ ...g-linuxamd64-recommended-runApplication.md | 21 + ...xarm64-quickStart-instrumentApplication.md | 115 ++ ...ng-linuxarm64-quickStart-runApplication.md | 5 + ...xarm64-recommended-installOtelCollector.md | 93 ++ ...arm64-recommended-instrumentApplication.md | 116 ++ ...g-linuxarm64-recommended-runApplication.md | 21 + ...samd64-quickStart-instrumentApplication.md | 115 ++ ...ng-macosamd64-quickStart-runApplication.md | 5 + ...samd64-recommended-installOtelCollector.md | 93 ++ ...amd64-recommended-instrumentApplication.md | 116 ++ ...g-macosamd64-recommended-runApplication.md | 21 + ...sarm64-quickStart-instrumentApplication.md | 115 ++ ...ng-macosarm64-quickStart-runApplication.md | 5 + ...sarm64-recommended-installOtelCollector.md | 92 ++ ...arm64-recommended-instrumentApplication.md | 116 ++ ...g-macosarm64-recommended-runApplication.md | 21 + .../jboss-kubernetes-installOtelCollector.md | 21 + .../jboss-kubernetes-instrumentApplication.md | 10 + .../jboss-kubernetes-runApplication.md | 14 + ...xamd64-quickStart-instrumentApplication.md | 8 + ...ss-linuxamd64-quickStart-runApplication.md | 23 + ...xamd64-recommended-installOtelCollector.md | 93 ++ ...amd64-recommended-instrumentApplication.md | 10 + ...s-linuxamd64-recommended-runApplication.md | 30 + ...xarm64-quickStart-instrumentApplication.md | 8 + ...ss-linuxarm64-quickStart-runApplication.md | 23 + ...xarm64-recommended-installOtelCollector.md | 93 ++ ...arm64-recommended-instrumentApplication.md | 10 + ...s-linuxarm64-recommended-runApplication.md | 30 + ...samd64-quickStart-instrumentApplication.md | 8 + ...ss-macosamd64-quickStart-runApplication.md | 23 + ...samd64-recommended-installOtelCollector.md | 93 ++ ...amd64-recommended-instrumentApplication.md | 10 + ...s-macosamd64-recommended-runApplication.md | 30 + ...sarm64-quickStart-instrumentApplication.md | 8 + ...ss-macosarm64-quickStart-runApplication.md | 23 + ...sarm64-recommended-installOtelCollector.md | 92 ++ ...arm64-recommended-instrumentApplication.md | 10 + ...s-macosarm64-recommended-runApplication.md | 30 + .../others-kubernetes-installOtelCollector.md | 21 + ...others-kubernetes-instrumentApplication.md | 10 + .../others-kubernetes-runApplication.md | 10 + ...xamd64-quickStart-instrumentApplication.md | 9 + ...rs-linuxamd64-quickStart-runApplication.md | 14 + ...xamd64-recommended-installOtelCollector.md | 93 ++ ...amd64-recommended-instrumentApplication.md | 10 + ...s-linuxamd64-recommended-runApplication.md | 24 + ...xarm64-quickStart-instrumentApplication.md | 9 + ...rs-linuxarm64-quickStart-runApplication.md | 14 + ...xarm64-recommended-installOtelCollector.md | 93 ++ ...arm64-recommended-instrumentApplication.md | 10 + ...s-linuxarm64-recommended-runApplication.md | 24 + ...samd64-quickStart-instrumentApplication.md | 9 + ...rs-macosamd64-quickStart-runApplication.md | 14 + ...samd64-recommended-installOtelCollector.md | 93 ++ ...amd64-recommended-instrumentApplication.md | 10 + ...s-macosamd64-recommended-runApplication.md | 24 + ...sarm64-quickStart-instrumentApplication.md | 9 + ...rs-macosarm64-quickStart-runApplication.md | 14 + ...sarm64-recommended-installOtelCollector.md | 92 ++ ...arm64-recommended-instrumentApplication.md | 10 + ...s-macosarm64-recommended-runApplication.md | 24 + ...ingBoot-kubernetes-installOtelCollector.md | 21 + ...ngBoot-kubernetes-instrumentApplication.md | 10 + .../springBoot-kubernetes-runApplication.md | 11 + ...xamd64-quickStart-instrumentApplication.md | 10 + ...ot-linuxamd64-quickStart-runApplication.md | 14 + ...xamd64-recommended-installOtelCollector.md | 93 ++ ...amd64-recommended-instrumentApplication.md | 10 + ...t-linuxamd64-recommended-runApplication.md | 26 + ...xarm64-quickStart-instrumentApplication.md | 10 + ...ot-linuxarm64-quickStart-runApplication.md | 14 + ...xarm64-recommended-installOtelCollector.md | 93 ++ ...arm64-recommended-instrumentApplication.md | 10 + ...t-linuxarm64-recommended-runApplication.md | 26 + ...samd64-quickStart-instrumentApplication.md | 10 + ...ot-macosamd64-quickStart-runApplication.md | 14 + ...samd64-recommended-installOtelCollector.md | 93 ++ ...amd64-recommended-instrumentApplication.md | 10 + ...t-macosamd64-recommended-runApplication.md | 25 + ...sarm64-quickStart-instrumentApplication.md | 10 + ...ot-macosarm64-quickStart-runApplication.md | 14 + ...sarm64-recommended-installOtelCollector.md | 92 ++ ...arm64-recommended-instrumentApplication.md | 10 + ...t-macosarm64-recommended-runApplication.md | 25 + .../tomcat-kubernetes-installOtelCollector.md | 21 + ...tomcat-kubernetes-instrumentApplication.md | 10 + .../tomcat-kubernetes-runApplication.md | 14 + ...xamd64-quickStart-instrumentApplication.md | 8 + ...at-linuxamd64-quickStart-runApplication.md | 14 + ...xamd64-recommended-installOtelCollector.md | 93 ++ ...amd64-recommended-instrumentApplication.md | 10 + ...t-linuxamd64-recommended-runApplication.md | 29 + ...xarm64-quickStart-instrumentApplication.md | 8 + ...at-linuxarm64-quickStart-runApplication.md | 14 + ...xarm64-recommended-installOtelCollector.md | 93 ++ ...arm64-recommended-instrumentApplication.md | 10 + ...t-linuxarm64-recommended-runApplication.md | 29 + ...samd64-quickStart-instrumentApplication.md | 8 + ...at-macosamd64-quickStart-runApplication.md | 14 + ...samd64-recommended-installOtelCollector.md | 93 ++ ...amd64-recommended-instrumentApplication.md | 10 + ...t-macosamd64-recommended-runApplication.md | 29 + ...sarm64-quickStart-instrumentApplication.md | 8 + ...at-macosarm64-quickStart-runApplication.md | 14 + ...sarm64-recommended-installOtelCollector.md | 92 ++ ...arm64-recommended-instrumentApplication.md | 10 + ...t-macosarm64-recommended-runApplication.md | 29 + .../{ => Modules}/APM/Java/md-docs/java.md | 0 .../{ => Modules}/APM/Java/md-docs/jboss.md | 0 .../APM/Java/md-docs/spring_boot.md | 0 .../{ => Modules}/APM/Java/md-docs/tomcat.md | 0 ...express-kubernetes-installOtelCollector.md | 21 + ...xpress-kubernetes-instrumentApplication.md | 51 + .../express-kubernetes-runApplication.md | 5 + ...xamd64-quickStart-instrumentApplication.md | 53 + ...ss-linuxamd64-quickStart-runApplication.md | 5 + ...xamd64-recommended-installOtelCollector.md | 93 ++ ...amd64-recommended-instrumentApplication.md | 51 + ...s-linuxamd64-recommended-runApplication.md | 23 + ...xarm64-quickStart-instrumentApplication.md | 53 + ...ss-linuxarm64-quickStart-runApplication.md | 5 + ...xarm64-recommended-installOtelCollector.md | 93 ++ ...arm64-recommended-instrumentApplication.md | 51 + ...s-linuxarm64-recommended-runApplication.md | 23 + ...samd64-quickStart-instrumentApplication.md | 53 + ...ss-macosamd64-quickStart-runApplication.md | 5 + ...samd64-recommended-installOtelCollector.md | 93 ++ ...amd64-recommended-instrumentApplication.md | 51 + ...s-macosamd64-recommended-runApplication.md | 23 + ...sarm64-quickStart-instrumentApplication.md | 53 + ...ss-macosarm64-quickStart-runApplication.md | 5 + ...sarm64-recommended-installOtelCollector.md | 92 ++ ...arm64-recommended-instrumentApplication.md | 51 + ...s-macosarm64-recommended-runApplication.md | 23 + .../nestjs-kubernetes-installOtelCollector.md | 21 + ...nestjs-kubernetes-instrumentApplication.md | 81 ++ .../nestjs-kubernetes-runApplication.md | 5 + ...xamd64-quickStart-instrumentApplication.md | 79 ++ ...js-linuxamd64-quickStart-runApplication.md | 5 + ...xamd64-recommended-installOtelCollector.md | 93 ++ ...amd64-recommended-instrumentApplication.md | 81 ++ ...s-linuxamd64-recommended-runApplication.md | 22 + ...xarm64-quickStart-instrumentApplication.md | 79 ++ ...js-linuxarm64-quickStart-runApplication.md | 5 + ...xarm64-recommended-installOtelCollector.md | 93 ++ ...arm64-recommended-instrumentApplication.md | 81 ++ ...s-linuxarm64-recommended-runApplication.md | 22 + ...samd64-quickStart-instrumentApplication.md | 79 ++ ...js-macosamd64-quickStart-runApplication.md | 5 + ...samd64-recommended-installOtelCollector.md | 93 ++ ...amd64-recommended-instrumentApplication.md | 81 ++ ...s-macosamd64-recommended-runApplication.md | 22 + ...sarm64-quickStart-instrumentApplication.md | 79 ++ ...js-macosarm64-quickStart-runApplication.md | 5 + ...sarm64-recommended-installOtelCollector.md | 92 ++ ...arm64-recommended-instrumentApplication.md | 81 ++ ...s-macosarm64-recommended-runApplication.md | 22 + .../nodejs-kubernetes-installOtelCollector.md | 21 + ...nodejs-kubernetes-instrumentApplication.md | 52 + .../nodejs-kubernetes-runApplication.md | 5 + ...xamd64-quickStart-instrumentApplication.md | 54 + ...js-linuxamd64-quickStart-runApplication.md | 5 + ...xamd64-recommended-installOtelCollector.md | 93 ++ ...amd64-recommended-instrumentApplication.md | 52 + ...s-linuxamd64-recommended-runApplication.md | 22 + ...xarm64-quickStart-instrumentApplication.md | 54 + ...js-linuxarm64-quickStart-runApplication.md | 5 + ...xarm64-recommended-installOtelCollector.md | 93 ++ ...arm64-recommended-instrumentApplication.md | 52 + ...s-linuxarm64-recommended-runApplication.md | 22 + ...samd64-quickStart-instrumentApplication.md | 54 + ...js-macosamd64-quickStart-runApplication.md | 5 + ...samd64-recommended-installOtelCollector.md | 93 ++ ...amd64-recommended-instrumentApplication.md | 52 + ...s-macosamd64-recommended-runApplication.md | 22 + ...sarm64-quickStart-instrumentApplication.md | 54 + ...js-macosarm64-quickStart-runApplication.md | 5 + ...sarm64-recommended-installOtelCollector.md | 92 ++ ...arm64-recommended-instrumentApplication.md | 52 + ...s-macosarm64-recommended-runApplication.md | 22 + .../APM/Javascript/md-docs/express.md | 0 .../APM/Javascript/md-docs/javascript.md | 0 .../APM/Javascript/md-docs/nestjs.md | 0 .../django-kubernetes-installOtelCollector.md | 21 + ...django-kubernetes-instrumentApplication.md | 31 + .../django-kubernetes-runApplication.md | 15 + ...xamd64-quickStart-instrumentApplication.md | 30 + ...go-linuxamd64-quickStart-runApplication.md | 14 + ...xamd64-recommended-installOtelCollector.md | 93 ++ ...amd64-recommended-instrumentApplication.md | 31 + ...o-linuxamd64-recommended-runApplication.md | 33 + ...xarm64-quickStart-instrumentApplication.md | 30 + ...go-linuxarm64-quickStart-runApplication.md | 14 + ...xarm64-recommended-installOtelCollector.md | 93 ++ ...arm64-recommended-instrumentApplication.md | 31 + ...o-linuxarm64-recommended-runApplication.md | 33 + ...samd64-quickStart-instrumentApplication.md | 30 + ...go-macosamd64-quickStart-runApplication.md | 14 + ...samd64-recommended-installOtelCollector.md | 93 ++ ...amd64-recommended-instrumentApplication.md | 31 + ...o-macosamd64-recommended-runApplication.md | 33 + ...sarm64-quickStart-instrumentApplication.md | 30 + ...go-macosarm64-quickStart-runApplication.md | 14 + ...sarm64-recommended-installOtelCollector.md | 92 ++ ...arm64-recommended-instrumentApplication.md | 31 + ...o-macosarm64-recommended-runApplication.md | 33 + .../falcon-kubernetes-installOtelCollector.md | 21 + ...falcon-kubernetes-instrumentApplication.md | 28 + .../falcon-kubernetes-runApplication.md | 15 + ...xamd64-quickStart-instrumentApplication.md | 26 + ...on-linuxamd64-quickStart-runApplication.md | 14 + ...xamd64-recommended-installOtelCollector.md | 93 ++ ...amd64-recommended-instrumentApplication.md | 28 + ...n-linuxamd64-recommended-runApplication.md | 32 + ...xarm64-quickStart-instrumentApplication.md | 26 + ...on-linuxarm64-quickStart-runApplication.md | 14 + ...xarm64-recommended-installOtelCollector.md | 93 ++ ...arm64-recommended-instrumentApplication.md | 28 + ...n-linuxarm64-recommended-runApplication.md | 32 + ...samd64-quickStart-instrumentApplication.md | 26 + ...on-macosamd64-quickStart-runApplication.md | 14 + ...samd64-recommended-installOtelCollector.md | 93 ++ ...amd64-recommended-instrumentApplication.md | 28 + ...n-macosamd64-recommended-runApplication.md | 32 + ...sarm64-quickStart-instrumentApplication.md | 26 + ...on-macosarm64-quickStart-runApplication.md | 14 + ...sarm64-recommended-installOtelCollector.md | 92 ++ ...arm64-recommended-instrumentApplication.md | 28 + ...n-macosarm64-recommended-runApplication.md | 32 + ...fastapi-kubernetes-installOtelCollector.md | 21 + ...astapi-kubernetes-instrumentApplication.md | 28 + .../fastapi-kubernetes-runApplication.md | 14 + ...xamd64-quickStart-instrumentApplication.md | 26 + ...pi-linuxamd64-quickStart-runApplication.md | 14 + ...xamd64-recommended-installOtelCollector.md | 93 ++ ...amd64-recommended-instrumentApplication.md | 26 + ...i-linuxamd64-recommended-runApplication.md | 32 + ...xarm64-quickStart-instrumentApplication.md | 26 + ...pi-linuxarm64-quickStart-runApplication.md | 14 + ...xarm64-recommended-installOtelCollector.md | 93 ++ ...arm64-recommended-instrumentApplication.md | 26 + ...i-linuxarm64-recommended-runApplication.md | 32 + ...samd64-quickStart-instrumentApplication.md | 26 + ...pi-macosamd64-quickStart-runApplication.md | 14 + ...samd64-recommended-installOtelCollector.md | 93 ++ ...amd64-recommended-instrumentApplication.md | 26 + ...i-macosamd64-recommended-runApplication.md | 32 + ...sarm64-quickStart-instrumentApplication.md | 26 + ...pi-macosarm64-quickStart-runApplication.md | 14 + ...sarm64-recommended-installOtelCollector.md | 92 ++ ...arm64-recommended-instrumentApplication.md | 26 + ...i-macosarm64-recommended-runApplication.md | 32 + .../flask-kubernetes-installOtelCollector.md | 21 + .../flask-kubernetes-instrumentApplication.md | 28 + .../flask-kubernetes-runApplication.md | 14 + ...xamd64-quickStart-instrumentApplication.md | 26 + ...sk-linuxamd64-quickStart-runApplication.md | 14 + ...xamd64-recommended-installOtelCollector.md | 93 ++ ...amd64-recommended-instrumentApplication.md | 26 + ...k-linuxamd64-recommended-runApplication.md | 31 + ...xarm64-quickStart-instrumentApplication.md | 26 + ...sk-linuxarm64-quickStart-runApplication.md | 14 + ...xarm64-recommended-installOtelCollector.md | 93 ++ ...arm64-recommended-instrumentApplication.md | 26 + ...k-linuxarm64-recommended-runApplication.md | 31 + ...samd64-quickStart-instrumentApplication.md | 26 + ...sk-macosamd64-quickStart-runApplication.md | 14 + ...samd64-recommended-installOtelCollector.md | 93 ++ ...amd64-recommended-instrumentApplication.md | 26 + ...k-macosamd64-recommended-runApplication.md | 31 + ...sarm64-quickStart-instrumentApplication.md | 26 + ...sk-macosarm64-quickStart-runApplication.md | 14 + ...sarm64-recommended-installOtelCollector.md | 92 ++ ...arm64-recommended-instrumentApplication.md | 26 + ...k-macosarm64-recommended-runApplication.md | 31 + .../others-kubernetes-installOtelCollector.md | 21 + ...others-kubernetes-instrumentApplication.md | 27 + .../others-kubernetes-runApplication.md | 14 + ...xamd64-quickStart-instrumentApplication.md | 27 + ...rs-linuxamd64-quickStart-runApplication.md | 14 + ...xamd64-recommended-installOtelCollector.md | 93 ++ ...amd64-recommended-instrumentApplication.md | 25 + ...s-linuxamd64-recommended-runApplication.md | 32 + ...xarm64-quickStart-instrumentApplication.md | 27 + ...rs-linuxarm64-quickStart-runApplication.md | 14 + ...xarm64-recommended-installOtelCollector.md | 93 ++ ...arm64-recommended-instrumentApplication.md | 27 + ...s-linuxarm64-recommended-runApplication.md | 32 + ...samd64-quickStart-instrumentApplication.md | 28 + ...rs-macosamd64-quickStart-runApplication.md | 14 + ...samd64-recommended-installOtelCollector.md | 93 ++ ...amd64-recommended-instrumentApplication.md | 27 + ...s-macosamd64-recommended-runApplication.md | 32 + ...sarm64-quickStart-instrumentApplication.md | 28 + ...rs-macosarm64-quickStart-runApplication.md | 14 + ...sarm64-recommended-installOtelCollector.md | 92 ++ ...arm64-recommended-instrumentApplication.md | 27 + ...s-macosarm64-recommended-runApplication.md | 32 + .../APM/Python/md-docs/django.md | 0 .../APM/Python/md-docs/falcon.md | 0 .../APM/Python/md-docs/fastAPI.md | 0 .../{ => Modules}/APM/Python/md-docs/flask.md | 0 .../APM/Python/md-docs/python.md | 0 .../APM/RubyOnRails/RubyOnRails.md | 0 .../ror-kubernetes-installOtelCollector.md | 21 + .../ror-kubernetes-instrumentApplication.md | 35 + .../ror-kubernetes-runApplication.md | 10 + ...xamd64-quickStart-instrumentApplication.md | 35 + ...or-linuxamd64-quickStart-runApplication.md | 11 + ...xamd64-recommended-installOtelCollector.md | 93 ++ ...amd64-recommended-instrumentApplication.md | 35 + ...r-linuxamd64-recommended-runApplication.md | 31 + ...xarm64-quickStart-instrumentApplication.md | 34 + ...or-linuxarm64-quickStart-runApplication.md | 11 + ...xarm64-recommended-installOtelCollector.md | 93 ++ ...arm64-recommended-instrumentApplication.md | 35 + ...r-linuxarm64-recommended-runApplication.md | 31 + ...samd64-quickStart-instrumentApplication.md | 34 + ...or-macosamd64-quickStart-runApplication.md | 11 + ...samd64-recommended-installOtelCollector.md | 93 ++ ...amd64-recommended-instrumentApplication.md | 35 + ...r-macosamd64-recommended-runApplication.md | 31 + ...sarm64-quickStart-instrumentApplication.md | 34 + ...or-macosarm64-quickStart-runApplication.md | 11 + ...sarm64-recommended-installOtelCollector.md | 92 ++ ...arm64-recommended-instrumentApplication.md | 35 + ...r-macosarm64-recommended-runApplication.md | 31 + .../hostmetrics-configureHostmetricsJson.md | 13 + .../hostmetrics-setupOtelCollector.md | 108 ++ .../hostmetrics-configureHostmetricsJson.md | 13 + .../hostmetrics-setupOtelCollector.md | 109 ++ .../hostmetrics-configureHostmetricsJson.md | 13 + .../hostmetrics-setupOtelCollector.md | 108 ++ .../hostmetrics-configureHostmetricsJson.md | 13 + .../hostmetrics-setupOtelCollector.md | 107 ++ .../md-docs/kubernetes-plotMetrics.md | 4 + .../md-docs/kubernetes-setupOtelCollector.md | 20 + .../otherMetrics-configureReceiver.md | 101 ++ .../otherMetrics-setupOtelCollector.md | 108 ++ .../otherMetrics-configureReceiver.md | 101 ++ .../otherMetrics-setupOtelCollector.md | 109 ++ .../otherMetrics-configureReceiver.md | 101 ++ .../otherMetrics-setupOtelCollector.md | 108 ++ .../otherMetrics-configureReceiver.md | 101 ++ .../otherMetrics-setupOtelCollector.md | 108 ++ .../applicationLogsFromLogFile.md | 0 .../applicationLogsUsingJavaOtelSDK.md | 0 .../applicationLogsUsingPythonOtelSDK.md | 0 ...cationLogs-linuxamd64-configureReceiver.md | 26 + ...ionLogs-linuxamd64-installOtelCollector.md | 108 ++ ...icationLogs-linuxamd64-runOtelCollector.md | 15 + ...cationLogs-linuxarm64-configureReceiver.md | 26 + ...ionLogs-linuxarm64-installOtelCollector.md | 109 ++ ...icationLogs-linuxarm64-runOtelCollector.md | 15 + ...cationLogs-macosamd64-configureReceiver.md | 26 + ...ionLogs-macosamd64-installOtelCollector.md | 108 ++ ...icationLogs-macosamd64-runOtelCollector.md | 15 + ...cationLogs-macosarm64-configureReceiver.md | 26 + ...ionLogs-macosarm64-installOtelCollector.md | 107 ++ ...icationLogs-macosarm64-runOtelCollector.md | 15 + .../LogsManagement/Docker/docker.md | 0 .../Docker/md-docs/docker-cloneRepository.md | 13 + .../Docker/md-docs/docker-startContainers.md | 6 + .../fluentbit-linuxamd64-configureReceiver.md | 37 + ...uentbit-linuxamd64-installOtelCollector.md | 108 ++ ...uentbit-linuxamd64-restartOtelCollector.md | 17 + .../fluentbit-linuxarm64-configureReceiver.md | 37 + ...uentbit-linuxarm64-installOtelCollector.md | 109 ++ ...uentbit-linuxarm64-restartOtelCollector.md | 17 + .../fluentbit-macosamd64-configureReceiver.md | 37 + ...uentbit-macosamd64-installOtelCollector.md | 108 ++ ...uentbit-macosamd64-restartOtelCollector.md | 17 + ...uentBit-macosarm64-restartOtelCollector.md | 17 + .../fluentbit-macosarm64-configureReceiver.md | 37 + ...uentbit-macosarm64-installOtelCollector.md | 107 ++ .../fluentd-linuxamd64-configureReceiver.md | 44 + ...fluentd-linuxamd64-installOtelCollector.md | 108 ++ ...fluentd-linuxamd64-restartOtelCollector.md | 17 + .../fluentd-linuxarm64-configureReceiver.md | 44 + ...fluentd-linuxarm64-installOtelCollector.md | 109 ++ ...fluentd-linuxarm64-restartOtelCollector.md | 17 + .../fluentd-macosamd64-configureReceiver.md | 44 + ...fluentd-macosamd64-installOtelCollector.md | 108 ++ ...fluentd-macosamd64-restartOtelCollector.md | 17 + .../fluentd-macosarm64-configureReceiver.md | 44 + ...fluentd-macosarm64-installOtelCollector.md | 107 ++ ...fluentd-macosarm64-restartOtelCollector.md | 17 + .../LogsManagement/Kubernetes/kubernetes.md | 0 .../kubernetes-installOtelCollector.md | 20 + .../logstash-linuxamd64-configureReceiver.md | 43 + ...ogstash-linuxamd64-installOtelCollector.md | 108 ++ ...ogstash-linuxamd64-restartOtelCollector.md | 17 + .../logstash-linuxarm64-configureReceiver.md | 43 + ...ogstash-linuxarm64-installOtelCollector.md | 109 ++ ...ogstash-linuxarm64-restartOtelCollector.md | 17 + .../logstash-macosamd64-configureReceiver.md | 43 + ...ogstash-macosamd64-installOtelCollector.md | 108 ++ ...ogstash-macosamd64-restartOtelCollector.md | 17 + .../logstash-macosarm64-configureReceiver.md | 43 + ...ogstash-macosarm64-installOtelCollector.md | 107 ++ ...ogstash-macosarm64-restartOtelCollector.md | 17 + .../LogsManagement/Nodejs/nodejs.md | 0 .../syslogs-linuxamd64-checkServiceStatus.md | 11 + .../syslogs-linuxamd64-configureReceiver.md | 65 + ...syslogs-linuxamd64-installOtelCollector.md | 108 ++ .../syslogs-linuxarm64-checkServiceStatus.md | 11 + .../syslogs-linuxarm64-configureReceiver.md | 65 + ...syslogs-linuxarm64-installOtelCollector.md | 109 ++ .../syslogs-macosamd64-checkServiceStatus.md | 11 + .../syslogs-macosamd64-configureReceiver.md | 65 + ...syslogs-macosamd64-installOtelCollector.md | 108 ++ .../syslogs-macosarm64-checkServiceStatus.md | 11 + .../syslogs-macosarm64-configureReceiver.md | 65 + ...syslogs-macosarm64-installOtelCollector.md | 107 ++ .../LogsManagement/SysLogs/syslogs.md | 0 .../Onboarding.styles.scss | 28 +- .../OnboardingContainer.tsx | 309 ++--- .../ConnectionStatus.styles.scss | 0 .../ConnectionStatus/ConnectionStatus.tsx | 27 +- .../Steps/DataSource/DataSource.styles.scss | 38 + .../Steps/DataSource/DataSource.tsx | 203 +++ .../EnvironmentDetails/EnvironmentDetails.tsx | 115 ++ .../LogsConnectionStatus.styles.scss | 0 .../LogsConnectionStatus.tsx | 14 +- .../Steps/MarkdownStep/MarkdownStep.tsx | 112 ++ .../Steps/SelectMethod/SelectMethod.tsx | 65 + .../ModuleStepsContainer.styles.scss | 155 +++ .../ModuleStepsContainer.tsx | 266 ++++ .../constants/apmDocFilePaths.ts | 1124 +++++++++++++++++ .../constants/infraMonitoringDocFilePaths.ts | 90 ++ .../constants/logsManagementDocFilePaths.ts | 239 ++++ .../constants/stepsConfig.tsx | 121 ++ .../context/OnboardingContext.tsx | 151 +++ .../utils/dataSourceUtils.ts | 222 ++++ .../OnboardingContainer/utils/getSteps.ts | 97 ++ .../Layouts/Pipeline/CreatePipelineButton.tsx | 3 +- .../PipelineListsView/PipelineExpandView.tsx | 4 +- .../PipelineListsView/PipelineListsView.tsx | 5 +- .../components/PreviewAction.tsx | 4 +- frontend/src/hooks/analytics/useAnalytics.tsx | 42 + .../OnboardingPage/OnboardingPage.styles.scss | 2 +- .../pages/OnboardingPage/OnboardingPage.tsx | 9 +- frontend/src/pages/SignUp/SignUp.tsx | 4 +- frontend/src/utils/segmentAnalytics.ts | 12 - 489 files changed, 20431 insertions(+), 2296 deletions(-) create mode 100644 frontend/public/Logos/fluent-bit.png create mode 100644 frontend/public/Logos/fluentd.png create mode 100644 frontend/public/Logos/logstash.svg delete mode 100644 frontend/src/container/OnboardingContainer/APM/APM.styles.scss delete mode 100644 frontend/src/container/OnboardingContainer/APM/APM.tsx delete mode 100644 frontend/src/container/OnboardingContainer/APM/GoLang/GoLang.styles.scss delete mode 100644 frontend/src/container/OnboardingContainer/APM/GoLang/GoLang.tsx delete mode 100644 frontend/src/container/OnboardingContainer/APM/Java/Java.styles.scss delete mode 100644 frontend/src/container/OnboardingContainer/APM/Java/Java.tsx delete mode 100644 frontend/src/container/OnboardingContainer/APM/Javascript/Javascript.styles.scss delete mode 100644 frontend/src/container/OnboardingContainer/APM/Javascript/Javascript.tsx delete mode 100644 frontend/src/container/OnboardingContainer/APM/Python/Python.styles.scss delete mode 100644 frontend/src/container/OnboardingContainer/APM/Python/Python.tsx delete mode 100644 frontend/src/container/OnboardingContainer/APM/RubyOnRails/ROR.styles.scss delete mode 100644 frontend/src/container/OnboardingContainer/APM/RubyOnRails/ROR.tsx delete mode 100644 frontend/src/container/OnboardingContainer/InfrastructureMonitoring/InfrastructureMonitoring.styles.scss delete mode 100644 frontend/src/container/OnboardingContainer/InfrastructureMonitoring/InfrastructureMonitoring.tsx delete mode 100644 frontend/src/container/OnboardingContainer/InfrastructureMonitoring/md-docs/hostMetricsMonitoring.md delete mode 100644 frontend/src/container/OnboardingContainer/InfrastructureMonitoring/md-docs/kubernetesInfraMonitoring.md delete mode 100644 frontend/src/container/OnboardingContainer/InfrastructureMonitoring/md-docs/otherMetrics.md delete mode 100644 frontend/src/container/OnboardingContainer/LogsManagement/ApplicationLogs/ApplicationLogs.tsx delete mode 100644 frontend/src/container/OnboardingContainer/LogsManagement/Docker/Docker.tsx delete mode 100644 frontend/src/container/OnboardingContainer/LogsManagement/ExistingCollectors/ExistingCollectors.tsx delete mode 100644 frontend/src/container/OnboardingContainer/LogsManagement/ExistingCollectors/md-docs/fluentBit.md delete mode 100644 frontend/src/container/OnboardingContainer/LogsManagement/ExistingCollectors/md-docs/fluentD.md delete mode 100644 frontend/src/container/OnboardingContainer/LogsManagement/ExistingCollectors/md-docs/logStash.md delete mode 100644 frontend/src/container/OnboardingContainer/LogsManagement/Kubernetes/Kubernetes.tsx delete mode 100644 frontend/src/container/OnboardingContainer/LogsManagement/LogsManagement.styles.scss delete mode 100644 frontend/src/container/OnboardingContainer/LogsManagement/LogsManagement.tsx delete mode 100644 frontend/src/container/OnboardingContainer/LogsManagement/Nodejs/Nodejs.tsx delete mode 100644 frontend/src/container/OnboardingContainer/LogsManagement/SysLogs/SysLogs.tsx rename frontend/src/container/OnboardingContainer/{ => Modules}/APM/GoLang/goLang.md (100%) create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/GoLang/md-docs/Kubernetes/golang-kubernetes-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/GoLang/md-docs/Kubernetes/golang-kubernetes-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/GoLang/md-docs/Kubernetes/golang-kubernetes-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/GoLang/md-docs/LinuxAMD64/QuickStart/golang-linuxamd64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/GoLang/md-docs/LinuxAMD64/QuickStart/golang-linuxamd64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/GoLang/md-docs/LinuxAMD64/Recommended/golang-linuxamd64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/GoLang/md-docs/LinuxAMD64/Recommended/golang-linuxamd64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/GoLang/md-docs/LinuxAMD64/Recommended/golang-linuxamd64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/GoLang/md-docs/LinuxARM64/QuickStart/golang-linuxarm64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/GoLang/md-docs/LinuxARM64/QuickStart/golang-linuxarm64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/GoLang/md-docs/LinuxARM64/Recommended/golang-linuxarm64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/GoLang/md-docs/LinuxARM64/Recommended/golang-linuxarm64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/GoLang/md-docs/LinuxARM64/Recommended/golang-linuxarm64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/GoLang/md-docs/MacOsAMD64/QuickStart/golang-macosamd64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/GoLang/md-docs/MacOsAMD64/QuickStart/golang-macosamd64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/GoLang/md-docs/MacOsAMD64/Recommended/golang-macosamd64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/GoLang/md-docs/MacOsAMD64/Recommended/golang-macosamd64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/GoLang/md-docs/MacOsAMD64/Recommended/golang-macosamd64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/GoLang/md-docs/MacOsARM64/QuickStart/golang-macosarm64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/GoLang/md-docs/MacOsARM64/QuickStart/golang-macosarm64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/GoLang/md-docs/MacOsARM64/Recommended/golang-macosarm64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/GoLang/md-docs/MacOsARM64/Recommended/golang-macosarm64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/GoLang/md-docs/MacOsARM64/Recommended/golang-macosarm64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Jboss/Kubernetes/jboss-kubernetes-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Jboss/Kubernetes/jboss-kubernetes-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Jboss/Kubernetes/jboss-kubernetes-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Jboss/LinuxAMD64/QuickStart/jboss-linuxamd64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Jboss/LinuxAMD64/QuickStart/jboss-linuxamd64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Jboss/LinuxAMD64/Recommended/jboss-linuxamd64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Jboss/LinuxAMD64/Recommended/jboss-linuxamd64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Jboss/LinuxAMD64/Recommended/jboss-linuxamd64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Jboss/LinuxARM64/QuickStart/jboss-linuxarm64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Jboss/LinuxARM64/QuickStart/jboss-linuxarm64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Jboss/LinuxARM64/Recommended/jboss-linuxarm64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Jboss/LinuxARM64/Recommended/jboss-linuxarm64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Jboss/LinuxARM64/Recommended/jboss-linuxarm64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Jboss/MacOsAMD64/QuickStart/jboss-macosamd64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Jboss/MacOsAMD64/QuickStart/jboss-macosamd64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Jboss/MacOsAMD64/Recommended/jboss-macosamd64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Jboss/MacOsAMD64/Recommended/jboss-macosamd64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Jboss/MacOsAMD64/Recommended/jboss-macosamd64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Jboss/MacOsARM64/QuickStart/jboss-macosarm64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Jboss/MacOsARM64/QuickStart/jboss-macosarm64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Jboss/MacOsARM64/Recommended/jboss-macosarm64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Jboss/MacOsARM64/Recommended/jboss-macosarm64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Jboss/MacOsARM64/Recommended/jboss-macosarm64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Others/Kubernetes/others-kubernetes-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Others/Kubernetes/others-kubernetes-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Others/Kubernetes/others-kubernetes-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Others/LinuxAMD64/QuickStart/others-linuxamd64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Others/LinuxAMD64/QuickStart/others-linuxamd64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Others/LinuxAMD64/Recommended/others-linuxamd64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Others/LinuxAMD64/Recommended/others-linuxamd64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Others/LinuxAMD64/Recommended/others-linuxamd64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Others/LinuxARM64/QuickStart/others-linuxarm64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Others/LinuxARM64/QuickStart/others-linuxarm64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Others/LinuxARM64/Recommended/others-linuxarm64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Others/LinuxARM64/Recommended/others-linuxarm64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Others/LinuxARM64/Recommended/others-linuxarm64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Others/MacOsAMD64/QuickStart/others-macosamd64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Others/MacOsAMD64/QuickStart/others-macosamd64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Others/MacOsAMD64/Recommended/others-macosamd64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Others/MacOsAMD64/Recommended/others-macosamd64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Others/MacOsAMD64/Recommended/others-macosamd64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Others/MacOsARM64/QuickStart/others-macosarm64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Others/MacOsARM64/QuickStart/others-macosarm64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Others/MacOsARM64/Recommended/others-macosarm64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Others/MacOsARM64/Recommended/others-macosarm64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Others/MacOsARM64/Recommended/others-macosarm64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/SpringBoot/Kubernetes/springBoot-kubernetes-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/SpringBoot/Kubernetes/springBoot-kubernetes-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/SpringBoot/Kubernetes/springBoot-kubernetes-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/SpringBoot/LinuxAMD64/QuickStart/springBoot-linuxamd64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/SpringBoot/LinuxAMD64/QuickStart/springBoot-linuxamd64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/SpringBoot/LinuxAMD64/Recommended/springBoot-linuxamd64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/SpringBoot/LinuxAMD64/Recommended/springBoot-linuxamd64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/SpringBoot/LinuxAMD64/Recommended/springBoot-linuxamd64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/SpringBoot/LinuxARM64/QuickStart/springBoot-linuxarm64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/SpringBoot/LinuxARM64/QuickStart/springBoot-linuxarm64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/SpringBoot/LinuxARM64/Recommended/springBoot-linuxarm64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/SpringBoot/LinuxARM64/Recommended/springBoot-linuxarm64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/SpringBoot/LinuxARM64/Recommended/springBoot-linuxarm64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/SpringBoot/MacOsAMD64/QuickStart/springBoot-macosamd64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/SpringBoot/MacOsAMD64/QuickStart/springBoot-macosamd64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/SpringBoot/MacOsAMD64/Recommended/springBoot-macosamd64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/SpringBoot/MacOsAMD64/Recommended/springBoot-macosamd64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/SpringBoot/MacOsAMD64/Recommended/springBoot-macosamd64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/SpringBoot/MacOsARM64/QuickStart/springBoot-macosarm64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/SpringBoot/MacOsARM64/QuickStart/springBoot-macosarm64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/SpringBoot/MacOsARM64/Recommended/springBoot-macosarm64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/SpringBoot/MacOsARM64/Recommended/springBoot-macosarm64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/SpringBoot/MacOsARM64/Recommended/springBoot-macosarm64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Tomcat/Kubernetes/tomcat-kubernetes-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Tomcat/Kubernetes/tomcat-kubernetes-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Tomcat/Kubernetes/tomcat-kubernetes-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Tomcat/LinuxAMD64/QuickStart/tomcat-linuxamd64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Tomcat/LinuxAMD64/QuickStart/tomcat-linuxamd64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Tomcat/LinuxAMD64/Recommended/tomcat-linuxamd64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Tomcat/LinuxAMD64/Recommended/tomcat-linuxamd64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Tomcat/LinuxAMD64/Recommended/tomcat-linuxamd64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Tomcat/LinuxARM64/QuickStart/tomcat-linuxarm64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Tomcat/LinuxARM64/QuickStart/tomcat-linuxarm64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Tomcat/LinuxARM64/Recommended/tomcat-linuxarm64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Tomcat/LinuxARM64/Recommended/tomcat-linuxarm64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Tomcat/LinuxARM64/Recommended/tomcat-linuxarm64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Tomcat/MacOsAMD64/QuickStart/tomcat-macosamd64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Tomcat/MacOsAMD64/QuickStart/tomcat-macosamd64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Tomcat/MacOsAMD64/Recommended/tomcat-macosamd64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Tomcat/MacOsAMD64/Recommended/tomcat-macosamd64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Tomcat/MacOsAMD64/Recommended/tomcat-macosamd64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Tomcat/MacOsARM64/QuickStart/tomcat-macosarm64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Tomcat/MacOsARM64/QuickStart/tomcat-macosarm64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Tomcat/MacOsARM64/Recommended/tomcat-macosarm64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Tomcat/MacOsARM64/Recommended/tomcat-macosarm64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Java/md-docs/Tomcat/MacOsARM64/Recommended/tomcat-macosarm64-recommended-runApplication.md rename frontend/src/container/OnboardingContainer/{ => Modules}/APM/Java/md-docs/java.md (100%) rename frontend/src/container/OnboardingContainer/{ => Modules}/APM/Java/md-docs/jboss.md (100%) rename frontend/src/container/OnboardingContainer/{ => Modules}/APM/Java/md-docs/spring_boot.md (100%) rename frontend/src/container/OnboardingContainer/{ => Modules}/APM/Java/md-docs/tomcat.md (100%) create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/Express/Kubernetes/express-kubernetes-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/Express/Kubernetes/express-kubernetes-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/Express/Kubernetes/express-kubernetes-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/Express/LinuxAMD64/QuickStart/express-linuxamd64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/Express/LinuxAMD64/QuickStart/express-linuxamd64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/Express/LinuxAMD64/Recommended/express-linuxamd64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/Express/LinuxAMD64/Recommended/express-linuxamd64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/Express/LinuxAMD64/Recommended/express-linuxamd64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/Express/LinuxARM64/QuickStart/express-linuxarm64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/Express/LinuxARM64/QuickStart/express-linuxarm64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/Express/LinuxARM64/Recommended/express-linuxarm64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/Express/LinuxARM64/Recommended/express-linuxarm64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/Express/LinuxARM64/Recommended/express-linuxarm64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/Express/MacOsAMD64/QuickStart/express-macosamd64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/Express/MacOsAMD64/QuickStart/express-macosamd64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/Express/MacOsAMD64/Recommended/express-macosamd64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/Express/MacOsAMD64/Recommended/express-macosamd64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/Express/MacOsAMD64/Recommended/express-macosamd64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/Express/MacOsARM64/QuickStart/express-macosarm64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/Express/MacOsARM64/QuickStart/express-macosarm64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/Express/MacOsARM64/Recommended/express-macosarm64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/Express/MacOsARM64/Recommended/express-macosarm64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/Express/MacOsARM64/Recommended/express-macosarm64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NestJS/Kubernetes/nestjs-kubernetes-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NestJS/Kubernetes/nestjs-kubernetes-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NestJS/Kubernetes/nestjs-kubernetes-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NestJS/LinuxAMD64/QuickStart/nestjs-linuxamd64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NestJS/LinuxAMD64/QuickStart/nestjs-linuxamd64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NestJS/LinuxAMD64/Recommended/nestjs-linuxamd64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NestJS/LinuxAMD64/Recommended/nestjs-linuxamd64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NestJS/LinuxAMD64/Recommended/nestjs-linuxamd64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NestJS/LinuxARM64/QuickStart/nestjs-linuxarm64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NestJS/LinuxARM64/QuickStart/nestjs-linuxarm64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NestJS/LinuxARM64/Recommended/nestjs-linuxarm64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NestJS/LinuxARM64/Recommended/nestjs-linuxarm64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NestJS/LinuxARM64/Recommended/nestjs-linuxarm64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NestJS/MacOsAMD64/QuickStart/nestjs-macosamd64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NestJS/MacOsAMD64/QuickStart/nestjs-macosamd64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NestJS/MacOsAMD64/Recommended/nestjs-macosamd64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NestJS/MacOsAMD64/Recommended/nestjs-macosamd64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NestJS/MacOsAMD64/Recommended/nestjs-macosamd64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NestJS/MacOsARM64/QuickStart/nestjs-macosarm64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NestJS/MacOsARM64/QuickStart/nestjs-macosarm64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NestJS/MacOsARM64/Recommended/nestjs-macosarm64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NestJS/MacOsARM64/Recommended/nestjs-macosarm64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NestJS/MacOsARM64/Recommended/nestjs-macosarm64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NodeJS/Kubernetes/nodejs-kubernetes-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NodeJS/Kubernetes/nodejs-kubernetes-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NodeJS/Kubernetes/nodejs-kubernetes-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NodeJS/LinuxAMD64/QuickStart/nodejs-linuxamd64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NodeJS/LinuxAMD64/QuickStart/nodejs-linuxamd64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NodeJS/LinuxAMD64/Recommended/nodejs-linuxamd64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NodeJS/LinuxAMD64/Recommended/nodejs-linuxamd64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NodeJS/LinuxAMD64/Recommended/nodejs-linuxamd64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NodeJS/LinuxARM64/QuickStart/nodejs-linuxarm64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NodeJS/LinuxARM64/QuickStart/nodejs-linuxarm64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NodeJS/LinuxARM64/Recommended/nodejs-linuxarm64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NodeJS/LinuxARM64/Recommended/nodejs-linuxarm64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NodeJS/LinuxARM64/Recommended/nodejs-linuxarm64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NodeJS/MacOsAMD64/QuickStart/nodejs-macosamd64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NodeJS/MacOsAMD64/QuickStart/nodejs-macosamd64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NodeJS/MacOsAMD64/Recommended/nodejs-macosamd64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NodeJS/MacOsAMD64/Recommended/nodejs-macosamd64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NodeJS/MacOsAMD64/Recommended/nodejs-macosamd64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NodeJS/MacOsARM64/QuickStart/nodejs-macosarm64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NodeJS/MacOsARM64/QuickStart/nodejs-macosarm64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NodeJS/MacOsARM64/Recommended/nodejs-macosarm64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NodeJS/MacOsARM64/Recommended/nodejs-macosarm64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Javascript/md-docs/NodeJS/MacOsARM64/Recommended/nodejs-macosarm64-recommended-runApplication.md rename frontend/src/container/OnboardingContainer/{ => Modules}/APM/Javascript/md-docs/express.md (100%) rename frontend/src/container/OnboardingContainer/{ => Modules}/APM/Javascript/md-docs/javascript.md (100%) rename frontend/src/container/OnboardingContainer/{ => Modules}/APM/Javascript/md-docs/nestjs.md (100%) create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Django/Kubernetes/django-kubernetes-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Django/Kubernetes/django-kubernetes-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Django/Kubernetes/django-kubernetes-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Django/LinuxAMD64/QuickStart/django-linuxamd64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Django/LinuxAMD64/QuickStart/django-linuxamd64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Django/LinuxAMD64/Recommended/django-linuxamd64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Django/LinuxAMD64/Recommended/django-linuxamd64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Django/LinuxAMD64/Recommended/django-linuxamd64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Django/LinuxARM64/QuickStart/django-linuxarm64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Django/LinuxARM64/QuickStart/django-linuxarm64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Django/LinuxARM64/Recommended/django-linuxarm64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Django/LinuxARM64/Recommended/django-linuxarm64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Django/LinuxARM64/Recommended/django-linuxarm64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Django/MacOsAMD64/QuickStart/django-macosamd64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Django/MacOsAMD64/QuickStart/django-macosamd64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Django/MacOsAMD64/Recommended/django-macosamd64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Django/MacOsAMD64/Recommended/django-macosamd64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Django/MacOsAMD64/Recommended/django-macosamd64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Django/MacOsARM64/QuickStart/django-macosarm64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Django/MacOsARM64/QuickStart/django-macosarm64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Django/MacOsARM64/Recommended/django-macosarm64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Django/MacOsARM64/Recommended/django-macosarm64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Django/MacOsARM64/Recommended/django-macosarm64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Falcon/Kubernetes/falcon-kubernetes-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Falcon/Kubernetes/falcon-kubernetes-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Falcon/Kubernetes/falcon-kubernetes-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Falcon/LinuxAMD64/QuickStart/falcon-linuxamd64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Falcon/LinuxAMD64/QuickStart/falcon-linuxamd64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Falcon/LinuxAMD64/Recommended/falcon-linuxamd64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Falcon/LinuxAMD64/Recommended/falcon-linuxamd64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Falcon/LinuxAMD64/Recommended/falcon-linuxamd64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Falcon/LinuxARM64/QuickStart/falcon-linuxarm64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Falcon/LinuxARM64/QuickStart/falcon-linuxarm64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Falcon/LinuxARM64/Recommended/falcon-linuxarm64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Falcon/LinuxARM64/Recommended/falcon-linuxarm64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Falcon/LinuxARM64/Recommended/falcon-linuxarm64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Falcon/MacOsAMD64/QuickStart/falcon-macosamd64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Falcon/MacOsAMD64/QuickStart/falcon-macosamd64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Falcon/MacOsAMD64/Recommended/falcon-macosamd64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Falcon/MacOsAMD64/Recommended/falcon-macosamd64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Falcon/MacOsAMD64/Recommended/falcon-macosamd64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Falcon/MacOsARM64/QuickStart/falcon-macosarm64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Falcon/MacOsARM64/QuickStart/falcon-macosarm64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Falcon/MacOsARM64/Recommended/falcon-macosarm64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Falcon/MacOsARM64/Recommended/falcon-macosarm64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Falcon/MacOsARM64/Recommended/falcon-macosarm64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/FastAPI/Kubernetes/fastapi-kubernetes-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/FastAPI/Kubernetes/fastapi-kubernetes-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/FastAPI/Kubernetes/fastapi-kubernetes-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/FastAPI/LinuxAMD64/QuickStart/fastapi-linuxamd64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/FastAPI/LinuxAMD64/QuickStart/fastapi-linuxamd64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/FastAPI/LinuxAMD64/Recommended/fastapi-linuxamd64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/FastAPI/LinuxAMD64/Recommended/fastapi-linuxamd64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/FastAPI/LinuxAMD64/Recommended/fastapi-linuxamd64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/FastAPI/LinuxARM64/QuickStart/fastapi-linuxarm64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/FastAPI/LinuxARM64/QuickStart/fastapi-linuxarm64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/FastAPI/LinuxARM64/Recommended/fastapi-linuxarm64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/FastAPI/LinuxARM64/Recommended/fastapi-linuxarm64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/FastAPI/LinuxARM64/Recommended/fastapi-linuxarm64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/FastAPI/MacOsAMD64/QuickStart/fastapi-macosamd64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/FastAPI/MacOsAMD64/QuickStart/fastapi-macosamd64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/FastAPI/MacOsAMD64/Recommended/fastapi-macosamd64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/FastAPI/MacOsAMD64/Recommended/fastapi-macosamd64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/FastAPI/MacOsAMD64/Recommended/fastapi-macosamd64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/FastAPI/MacOsARM64/QuickStart/fastapi-macosarm64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/FastAPI/MacOsARM64/QuickStart/fastapi-macosarm64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/FastAPI/MacOsARM64/Recommended/fastapi-macosarm64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/FastAPI/MacOsARM64/Recommended/fastapi-macosarm64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/FastAPI/MacOsARM64/Recommended/fastapi-macosarm64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Flask/Kubernetes/flask-kubernetes-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Flask/Kubernetes/flask-kubernetes-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Flask/Kubernetes/flask-kubernetes-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Flask/LinuxAMD64/QuickStart/flask-linuxamd64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Flask/LinuxAMD64/QuickStart/flask-linuxamd64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Flask/LinuxAMD64/Recommended/flask-linuxamd64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Flask/LinuxAMD64/Recommended/flask-linuxamd64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Flask/LinuxAMD64/Recommended/flask-linuxamd64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Flask/LinuxARM64/QuickStart/flask-linuxarm64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Flask/LinuxARM64/QuickStart/flask-linuxarm64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Flask/LinuxARM64/Recommended/flask-linuxarm64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Flask/LinuxARM64/Recommended/flask-linuxarm64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Flask/LinuxARM64/Recommended/flask-linuxarm64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Flask/MacOsAMD64/QuickStart/flask-macosamd64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Flask/MacOsAMD64/QuickStart/flask-macosamd64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Flask/MacOsAMD64/Recommended/flask-macosamd64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Flask/MacOsAMD64/Recommended/flask-macosamd64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Flask/MacOsAMD64/Recommended/flask-macosamd64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Flask/MacOsARM64/QuickStart/flask-macosarm64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Flask/MacOsARM64/QuickStart/flask-macosarm64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Flask/MacOsARM64/Recommended/flask-macosarm64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Flask/MacOsARM64/Recommended/flask-macosarm64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Flask/MacOsARM64/Recommended/flask-macosarm64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Others/Kubernetes/others-kubernetes-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Others/Kubernetes/others-kubernetes-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Others/Kubernetes/others-kubernetes-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Others/LinuxAMD64/QuickStart/others-linuxamd64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Others/LinuxAMD64/QuickStart/others-linuxamd64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Others/LinuxAMD64/Recommended/others-linuxamd64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Others/LinuxAMD64/Recommended/others-linuxamd64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Others/LinuxAMD64/Recommended/others-linuxamd64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Others/LinuxARM64/QuickStart/others-linuxarm64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Others/LinuxARM64/QuickStart/others-linuxarm64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Others/LinuxARM64/Recommended/others-linuxarm64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Others/LinuxARM64/Recommended/others-linuxarm64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Others/LinuxARM64/Recommended/others-linuxarm64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Others/MacOsAMD64/QuickStart/others-macosamd64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Others/MacOsAMD64/QuickStart/others-macosamd64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Others/MacOsAMD64/Recommended/others-macosamd64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Others/MacOsAMD64/Recommended/others-macosamd64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Others/MacOsAMD64/Recommended/others-macosamd64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Others/MacOsARM64/QuickStart/others-macosarm64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Others/MacOsARM64/QuickStart/others-macosarm64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Others/MacOsARM64/Recommended/others-macosarm64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Others/MacOsARM64/Recommended/others-macosarm64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/Python/md-docs/Others/MacOsARM64/Recommended/others-macosarm64-recommended-runApplication.md rename frontend/src/container/OnboardingContainer/{ => Modules}/APM/Python/md-docs/django.md (100%) rename frontend/src/container/OnboardingContainer/{ => Modules}/APM/Python/md-docs/falcon.md (100%) rename frontend/src/container/OnboardingContainer/{ => Modules}/APM/Python/md-docs/fastAPI.md (100%) rename frontend/src/container/OnboardingContainer/{ => Modules}/APM/Python/md-docs/flask.md (100%) rename frontend/src/container/OnboardingContainer/{ => Modules}/APM/Python/md-docs/python.md (100%) rename frontend/src/container/OnboardingContainer/{ => Modules}/APM/RubyOnRails/RubyOnRails.md (100%) create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/RubyOnRails/md-docs/Kubernetes/ror-kubernetes-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/RubyOnRails/md-docs/Kubernetes/ror-kubernetes-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/RubyOnRails/md-docs/Kubernetes/ror-kubernetes-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/RubyOnRails/md-docs/LinuxAMD64/QuickStart/ror-linuxamd64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/RubyOnRails/md-docs/LinuxAMD64/QuickStart/ror-linuxamd64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/RubyOnRails/md-docs/LinuxAMD64/Recommended/ror-linuxamd64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/RubyOnRails/md-docs/LinuxAMD64/Recommended/ror-linuxamd64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/RubyOnRails/md-docs/LinuxAMD64/Recommended/ror-linuxamd64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/RubyOnRails/md-docs/LinuxARM64/QuickStart/ror-linuxarm64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/RubyOnRails/md-docs/LinuxARM64/QuickStart/ror-linuxarm64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/RubyOnRails/md-docs/LinuxARM64/Recommended/ror-linuxarm64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/RubyOnRails/md-docs/LinuxARM64/Recommended/ror-linuxarm64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/RubyOnRails/md-docs/LinuxARM64/Recommended/ror-linuxarm64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/RubyOnRails/md-docs/MacOsAMD64/QuickStart/ror-macosamd64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/RubyOnRails/md-docs/MacOsAMD64/QuickStart/ror-macosamd64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/RubyOnRails/md-docs/MacOsAMD64/Recommended/ror-macosamd64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/RubyOnRails/md-docs/MacOsAMD64/Recommended/ror-macosamd64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/RubyOnRails/md-docs/MacOsAMD64/Recommended/ror-macosamd64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/RubyOnRails/md-docs/MacOsARM64/QuickStart/ror-macosarm64-quickStart-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/RubyOnRails/md-docs/MacOsARM64/QuickStart/ror-macosarm64-quickStart-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/RubyOnRails/md-docs/MacOsARM64/Recommended/ror-macosarm64-recommended-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/RubyOnRails/md-docs/MacOsARM64/Recommended/ror-macosarm64-recommended-instrumentApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/APM/RubyOnRails/md-docs/MacOsARM64/Recommended/ror-macosarm64-recommended-runApplication.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/InfrastructureMonitoring/Hostmetrics/md-docs/LinuxAMD64/hostmetrics-configureHostmetricsJson.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/InfrastructureMonitoring/Hostmetrics/md-docs/LinuxAMD64/hostmetrics-setupOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/InfrastructureMonitoring/Hostmetrics/md-docs/LinuxARM64/hostmetrics-configureHostmetricsJson.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/InfrastructureMonitoring/Hostmetrics/md-docs/LinuxARM64/hostmetrics-setupOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/InfrastructureMonitoring/Hostmetrics/md-docs/MacOsAMD64/hostmetrics-configureHostmetricsJson.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/InfrastructureMonitoring/Hostmetrics/md-docs/MacOsAMD64/hostmetrics-setupOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/InfrastructureMonitoring/Hostmetrics/md-docs/MacOsARM64/hostmetrics-configureHostmetricsJson.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/InfrastructureMonitoring/Hostmetrics/md-docs/MacOsARM64/hostmetrics-setupOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/InfrastructureMonitoring/KubernetesInfraMetrics/md-docs/kubernetes-plotMetrics.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/InfrastructureMonitoring/KubernetesInfraMetrics/md-docs/kubernetes-setupOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/InfrastructureMonitoring/OtherMetrics/md-docs/LinuxAMD64/otherMetrics-configureReceiver.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/InfrastructureMonitoring/OtherMetrics/md-docs/LinuxAMD64/otherMetrics-setupOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/InfrastructureMonitoring/OtherMetrics/md-docs/LinuxARM64/otherMetrics-configureReceiver.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/InfrastructureMonitoring/OtherMetrics/md-docs/LinuxARM64/otherMetrics-setupOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/InfrastructureMonitoring/OtherMetrics/md-docs/MacOsAMD64/otherMetrics-configureReceiver.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/InfrastructureMonitoring/OtherMetrics/md-docs/MacOsAMD64/otherMetrics-setupOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/InfrastructureMonitoring/OtherMetrics/md-docs/MacOsARM64/otherMetrics-configureReceiver.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/InfrastructureMonitoring/OtherMetrics/md-docs/MacOsARM64/otherMetrics-setupOtelCollector.md rename frontend/src/container/OnboardingContainer/{ => Modules}/LogsManagement/ApplicationLogs/applicationLogsFromLogFile.md (100%) rename frontend/src/container/OnboardingContainer/{ => Modules}/LogsManagement/ApplicationLogs/applicationLogsUsingJavaOtelSDK.md (100%) rename frontend/src/container/OnboardingContainer/{ => Modules}/LogsManagement/ApplicationLogs/applicationLogsUsingPythonOtelSDK.md (100%) create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/ApplicationLogs/md-docs/LinuxAMD64/appplicationLogs-linuxamd64-configureReceiver.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/ApplicationLogs/md-docs/LinuxAMD64/appplicationLogs-linuxamd64-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/ApplicationLogs/md-docs/LinuxAMD64/appplicationLogs-linuxamd64-runOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/ApplicationLogs/md-docs/LinuxARM64/appplicationLogs-linuxarm64-configureReceiver.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/ApplicationLogs/md-docs/LinuxARM64/appplicationLogs-linuxarm64-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/ApplicationLogs/md-docs/LinuxARM64/appplicationLogs-linuxarm64-runOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/ApplicationLogs/md-docs/MacOsAMD64/appplicationLogs-macosamd64-configureReceiver.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/ApplicationLogs/md-docs/MacOsAMD64/appplicationLogs-macosamd64-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/ApplicationLogs/md-docs/MacOsAMD64/appplicationLogs-macosamd64-runOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/ApplicationLogs/md-docs/MacOsARM64/appplicationLogs-macosarm64-configureReceiver.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/ApplicationLogs/md-docs/MacOsARM64/appplicationLogs-macosarm64-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/ApplicationLogs/md-docs/MacOsARM64/appplicationLogs-macosarm64-runOtelCollector.md rename frontend/src/container/OnboardingContainer/{ => Modules}/LogsManagement/Docker/docker.md (100%) create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/Docker/md-docs/docker-cloneRepository.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/Docker/md-docs/docker-startContainers.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/FluentBit/md-docs/LinuxAMD64/fluentbit-linuxamd64-configureReceiver.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/FluentBit/md-docs/LinuxAMD64/fluentbit-linuxamd64-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/FluentBit/md-docs/LinuxAMD64/fluentbit-linuxamd64-restartOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/FluentBit/md-docs/LinuxARM64/fluentbit-linuxarm64-configureReceiver.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/FluentBit/md-docs/LinuxARM64/fluentbit-linuxarm64-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/FluentBit/md-docs/LinuxARM64/fluentbit-linuxarm64-restartOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/FluentBit/md-docs/MacOsAMD64/fluentbit-macosamd64-configureReceiver.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/FluentBit/md-docs/MacOsAMD64/fluentbit-macosamd64-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/FluentBit/md-docs/MacOsAMD64/fluentbit-macosamd64-restartOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/FluentBit/md-docs/MacOsARM64/fluentBit-macosarm64-restartOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/FluentBit/md-docs/MacOsARM64/fluentbit-macosarm64-configureReceiver.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/FluentBit/md-docs/MacOsARM64/fluentbit-macosarm64-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/FluentD/md-docs/LinuxAMD64/fluentd-linuxamd64-configureReceiver.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/FluentD/md-docs/LinuxAMD64/fluentd-linuxamd64-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/FluentD/md-docs/LinuxAMD64/fluentd-linuxamd64-restartOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/FluentD/md-docs/LinuxARM64/fluentd-linuxarm64-configureReceiver.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/FluentD/md-docs/LinuxARM64/fluentd-linuxarm64-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/FluentD/md-docs/LinuxARM64/fluentd-linuxarm64-restartOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/FluentD/md-docs/MacOsAMD64/fluentd-macosamd64-configureReceiver.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/FluentD/md-docs/MacOsAMD64/fluentd-macosamd64-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/FluentD/md-docs/MacOsAMD64/fluentd-macosamd64-restartOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/FluentD/md-docs/MacOsARM64/fluentd-macosarm64-configureReceiver.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/FluentD/md-docs/MacOsARM64/fluentd-macosarm64-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/FluentD/md-docs/MacOsARM64/fluentd-macosarm64-restartOtelCollector.md rename frontend/src/container/OnboardingContainer/{ => Modules}/LogsManagement/Kubernetes/kubernetes.md (100%) create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/Kubernetes/md-docs/kubernetes-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/Logstash/md-docs/LinuxAMD64/logstash-linuxamd64-configureReceiver.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/Logstash/md-docs/LinuxAMD64/logstash-linuxamd64-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/Logstash/md-docs/LinuxAMD64/logstash-linuxamd64-restartOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/Logstash/md-docs/LinuxARM64/logstash-linuxarm64-configureReceiver.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/Logstash/md-docs/LinuxARM64/logstash-linuxarm64-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/Logstash/md-docs/LinuxARM64/logstash-linuxarm64-restartOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/Logstash/md-docs/MacOsAMD64/logstash-macosamd64-configureReceiver.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/Logstash/md-docs/MacOsAMD64/logstash-macosamd64-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/Logstash/md-docs/MacOsAMD64/logstash-macosamd64-restartOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/Logstash/md-docs/MacOsARM64/logstash-macosarm64-configureReceiver.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/Logstash/md-docs/MacOsARM64/logstash-macosarm64-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/Logstash/md-docs/MacOsARM64/logstash-macosarm64-restartOtelCollector.md rename frontend/src/container/OnboardingContainer/{ => Modules}/LogsManagement/Nodejs/nodejs.md (100%) create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/SysLogs/md-docs/LinuxAMD64/syslogs-linuxamd64-checkServiceStatus.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/SysLogs/md-docs/LinuxAMD64/syslogs-linuxamd64-configureReceiver.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/SysLogs/md-docs/LinuxAMD64/syslogs-linuxamd64-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/SysLogs/md-docs/LinuxARM64/syslogs-linuxarm64-checkServiceStatus.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/SysLogs/md-docs/LinuxARM64/syslogs-linuxarm64-configureReceiver.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/SysLogs/md-docs/LinuxARM64/syslogs-linuxarm64-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/SysLogs/md-docs/MacOsAMD64/syslogs-macosamd64-checkServiceStatus.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/SysLogs/md-docs/MacOsAMD64/syslogs-macosamd64-configureReceiver.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/SysLogs/md-docs/MacOsAMD64/syslogs-macosamd64-installOtelCollector.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/SysLogs/md-docs/MacOsARM64/syslogs-macosarm64-checkServiceStatus.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/SysLogs/md-docs/MacOsARM64/syslogs-macosarm64-configureReceiver.md create mode 100644 frontend/src/container/OnboardingContainer/Modules/LogsManagement/SysLogs/md-docs/MacOsARM64/syslogs-macosarm64-installOtelCollector.md rename frontend/src/container/OnboardingContainer/{ => Modules}/LogsManagement/SysLogs/syslogs.md (100%) rename frontend/src/container/OnboardingContainer/{APM/common => Steps}/ConnectionStatus/ConnectionStatus.styles.scss (100%) rename frontend/src/container/OnboardingContainer/{APM/common => Steps}/ConnectionStatus/ConnectionStatus.tsx (93%) create mode 100644 frontend/src/container/OnboardingContainer/Steps/DataSource/DataSource.styles.scss create mode 100644 frontend/src/container/OnboardingContainer/Steps/DataSource/DataSource.tsx create mode 100644 frontend/src/container/OnboardingContainer/Steps/EnvironmentDetails/EnvironmentDetails.tsx rename frontend/src/container/OnboardingContainer/{LogsManagement/common => Steps}/LogsConnectionStatus/LogsConnectionStatus.styles.scss (100%) rename frontend/src/container/OnboardingContainer/{LogsManagement/common => Steps}/LogsConnectionStatus/LogsConnectionStatus.tsx (95%) create mode 100644 frontend/src/container/OnboardingContainer/Steps/MarkdownStep/MarkdownStep.tsx create mode 100644 frontend/src/container/OnboardingContainer/Steps/SelectMethod/SelectMethod.tsx create mode 100644 frontend/src/container/OnboardingContainer/common/ModuleStepsContainer/ModuleStepsContainer.styles.scss create mode 100644 frontend/src/container/OnboardingContainer/common/ModuleStepsContainer/ModuleStepsContainer.tsx create mode 100644 frontend/src/container/OnboardingContainer/constants/apmDocFilePaths.ts create mode 100644 frontend/src/container/OnboardingContainer/constants/infraMonitoringDocFilePaths.ts create mode 100644 frontend/src/container/OnboardingContainer/constants/logsManagementDocFilePaths.ts create mode 100644 frontend/src/container/OnboardingContainer/constants/stepsConfig.tsx create mode 100644 frontend/src/container/OnboardingContainer/context/OnboardingContext.tsx create mode 100644 frontend/src/container/OnboardingContainer/utils/dataSourceUtils.ts create mode 100644 frontend/src/container/OnboardingContainer/utils/getSteps.ts create mode 100644 frontend/src/hooks/analytics/useAnalytics.tsx delete mode 100644 frontend/src/utils/segmentAnalytics.ts diff --git a/frontend/public/Logos/fluent-bit.png b/frontend/public/Logos/fluent-bit.png new file mode 100644 index 0000000000000000000000000000000000000000..55c4e4ae4aec5dd05ac501001cd7f533bbb6c1fe GIT binary patch literal 49652 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 JU*}Nh{{v;g1399lyf@Do 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 \ No newline at end of file diff --git a/frontend/src/AppRoutes/index.tsx b/frontend/src/AppRoutes/index.tsx index deff831a36..2b55907c17 100644 --- a/frontend/src/AppRoutes/index.tsx +++ b/frontend/src/AppRoutes/index.tsx @@ -7,6 +7,7 @@ import { FeatureKeys } from 'constants/features'; import { LOCALSTORAGE } from 'constants/localStorage'; import ROUTES from 'constants/routes'; import AppLayout from 'container/AppLayout'; +import useAnalytics from 'hooks/analytics/useAnalytics'; import { useThemeConfig } from 'hooks/useDarkMode'; import useGetFeatureFlag from 'hooks/useGetFeatureFlag'; import useLicense, { LICENSE_PLAN_KEY } from 'hooks/useLicense'; @@ -25,7 +26,6 @@ import AppActions from 'types/actions'; import { UPDATE_FEATURE_FLAG_RESPONSE } from 'types/actions/app'; import AppReducer, { User } from 'types/reducer/app'; import { extractDomain, isCloudUser, isEECloudUser } from 'utils/app'; -import { trackPageView } from 'utils/segmentAnalytics'; import PrivateRoute from './Private'; import defaultRoutes, { AppRoutes, SUPPORT_ROUTE } from './routes'; @@ -41,6 +41,8 @@ function App(): JSX.Element { const dispatch = useDispatch>(); + const { trackPageView } = useAnalytics(); + const { hostname, pathname } = window.location; const isCloudUserVal = isCloudUser(); @@ -156,6 +158,7 @@ function App(): JSX.Element { useEffect(() => { trackPageView(pathname); + // eslint-disable-next-line react-hooks/exhaustive-deps }, [pathname]); return ( diff --git a/frontend/src/components/MarkdownRenderer/CodeCopyBtn/CodeCopyBtn.scss b/frontend/src/components/MarkdownRenderer/CodeCopyBtn/CodeCopyBtn.scss index 78bfa54dad..2d2166ff52 100644 --- a/frontend/src/components/MarkdownRenderer/CodeCopyBtn/CodeCopyBtn.scss +++ b/frontend/src/components/MarkdownRenderer/CodeCopyBtn/CodeCopyBtn.scss @@ -1,6 +1,8 @@ .code-snippet-container { position: relative; - background-color: rgb(43, 43, 43); + // background-color: rgb(43, 43, 43); + background-color: #111a2c; + border-color: #111a2c; } .code-copy-btn { diff --git a/frontend/src/container/AppLayout/styles.ts b/frontend/src/container/AppLayout/styles.ts index d3a030bf1f..8bed914d66 100644 --- a/frontend/src/container/AppLayout/styles.ts +++ b/frontend/src/container/AppLayout/styles.ts @@ -5,7 +5,7 @@ export const Layout = styled(LayoutComponent)` &&& { display: flex; position: relative; - min-height: calc(100vh - 4rem); + min-height: calc(100vh - 8rem); overflow: hidden; height: 100%; } diff --git a/frontend/src/container/BillingContainer/BillingContainer.tsx b/frontend/src/container/BillingContainer/BillingContainer.tsx index 31bbf3d163..7c1bfe374f 100644 --- a/frontend/src/container/BillingContainer/BillingContainer.tsx +++ b/frontend/src/container/BillingContainer/BillingContainer.tsx @@ -9,6 +9,7 @@ import getUsage from 'api/billing/getUsage'; import manageCreditCardApi from 'api/billing/manage'; import { SOMETHING_WENT_WRONG } from 'constants/api'; import { REACT_QUERY_KEY } from 'constants/reactQueryKeys'; +import useAnalytics from 'hooks/analytics/useAnalytics'; import useAxiosError from 'hooks/useAxiosError'; import useLicense from 'hooks/useLicense'; import { useNotifications } from 'hooks/useNotifications'; @@ -109,9 +110,11 @@ export default function BillingContainer(): JSX.Element { const [data, setData] = useState([]); const billCurrency = '$'; + const { trackEvent } = useAnalytics(); + const { isFetching, data: licensesData, error: licenseError } = useLicense(); - const { user } = useSelector((state) => state.app); + const { user, org } = useSelector((state) => state.app); const { notifications } = useNotifications(); const handleError = useAxiosError(); @@ -301,18 +304,29 @@ export default function BillingContainer(): JSX.Element { const handleBilling = useCallback(async () => { if (isFreeTrial && !licensesData?.payload?.trialConvertedToSubscription) { + trackEvent('Billing : Upgrade Plan', { + user, + org, + }); + updateCreditCard({ licenseKey: activeLicense?.key || '', successURL: window.location.href, cancelURL: window.location.href, }); } else { + trackEvent('Billing : Manage Billing', { + user, + org, + }); + manageCreditCard({ licenseKey: activeLicense?.key || '', successURL: window.location.href, cancelURL: window.location.href, }); } + // eslint-disable-next-line react-hooks/exhaustive-deps }, [ activeLicense?.key, isFreeTrial, @@ -432,7 +446,12 @@ export default function BillingContainer(): JSX.Element { - diff --git a/frontend/src/container/Header/index.tsx b/frontend/src/container/Header/index.tsx index c7eb709452..ff4c560c67 100644 --- a/frontend/src/container/Header/index.tsx +++ b/frontend/src/container/Header/index.tsx @@ -135,14 +135,13 @@ function HeaderContainer(): JSX.Element { <> {showTrialExpiryBanner && (
- You are in free trial period. Your free trial will end on{' '} + You are in free trial period. Your free trial will end on {getFormattedDate(licenseData?.payload?.trialEnd || Date.now())}. {role === 'ADMIN' ? ( - {' '} - Please{' '} + Please diff --git a/frontend/src/container/OnboardingContainer/APM/APM.styles.scss b/frontend/src/container/OnboardingContainer/APM/APM.styles.scss deleted file mode 100644 index 49d2380a07..0000000000 --- a/frontend/src/container/OnboardingContainer/APM/APM.styles.scss +++ /dev/null @@ -1,144 +0,0 @@ -.apm-module-container { - padding: 48px 0; - - .header { - h1 { - font-size: 24px; - font-weight: 500; - } - - h4 { - font-size: 14px; - font-weight: 300; - } - } -} - -.supported-languages-container { - display: flex; - gap: 24px; -} - -.supported-language { - display: flex; - justify-content: center; - align-items: center; - width: 300px; - height: 120px; - background: #1d1d1d; - border: 1px solid #424242; - border-radius: 3px; - color: #424242; - cursor: pointer; - - &.selected { - background-color: #111a2c; - border: 0.5px solid #3c89e8; - } -} - -.supported-langauge-img { - height: 48px; -} - -.selected-langauage-setup-instructions { - padding: 24px 0; -} - -div[class*='-setup-instructions-container'] { - .header { - display: flex; - align-items: center; - - margin: 16px 0; - - img { - height: 40px; - } - - h1 { - font-size: 18px; - display: flex; - align-items: center; - color: #e5e7eb; - gap: 16px; - margin: 12px; - } - } -} - -.label { - font-size: 14px; - margin-bottom: 8px; - font-weight: 300; -} - -pre { - background-color: #292d3e; - padding: 8px; - overflow: auto; - border-radius: 3px; - - code { - overflow: auto; - text-wrap: wrap; - } -} - -.content-container { - padding: 24px; - margin: 16px 0; - background: rgba(29, 29, 29, 1); - line-height: 20px; -} - -.detailed-docs-link { - display: flex; - margin: 12px; - font-size: 12px; - - a { - padding-left: 4px; - } -} - -.form-container { - display: flex; - align-items: flex-start; - width: 100%; - gap: 16px; - - & .ant-form-item { - margin-bottom: 0px; - } -} - -$lightModeFontColor: rgb(29, 29, 29); - -.lightMode { - .apm-module-container { - .header { - color: $lightModeFontColor; - } - - div[class*='-setup-instructions-container'] { - .header { - h1 { - color: $lightModeFontColor; - } - } - - .framework-selector { - .label { - color: $lightModeFontColor; - } - } - - .service-name-container { - .label { - color: $lightModeFontColor; - } - } - } - } -} diff --git a/frontend/src/container/OnboardingContainer/APM/APM.tsx b/frontend/src/container/OnboardingContainer/APM/APM.tsx deleted file mode 100644 index ef81752345..0000000000 --- a/frontend/src/container/OnboardingContainer/APM/APM.tsx +++ /dev/null @@ -1,147 +0,0 @@ -/* eslint-disable jsx-a11y/click-events-have-key-events */ -/* eslint-disable jsx-a11y/no-static-element-interactions */ -import './APM.styles.scss'; - -import getIngestionData from 'api/settings/getIngestionData'; -import cx from 'classnames'; -import { useEffect, useState } from 'react'; -import { useQuery } from 'react-query'; -import { trackEvent } from 'utils/segmentAnalytics'; - -import GoLang from './GoLang/GoLang'; -import Java from './Java/Java'; -import Javascript from './Javascript/Javascript'; -import Python from './Python/Python'; -import RoR from './RubyOnRails/ROR'; - -interface IngestionInfoProps { - SIGNOZ_INGESTION_KEY?: string; - REGION?: string; -} -export interface LangProps { - ingestionInfo: IngestionInfoProps; - activeStep: number; -} - -const supportedLanguages = [ - { - name: 'java', - imgURL: `Logos/java.png`, - }, - { - name: 'python', - imgURL: `Logos/java.png`, - }, - { - name: 'javascript', - imgURL: `Logos/java.png`, - }, - { - name: 'go', - imgURL: `Logos/java.png`, - }, - { - name: 'rails', - imgURL: `Logos/rails.png`, - }, -]; - -export default function APM({ - activeStep, -}: { - activeStep: number; -}): JSX.Element { - const [selectedLanguage, setSelectedLanguage] = useState('java'); - - const [ingestionInfo, setIngestionInfo] = useState({}); - - const { status, data: ingestionData } = useQuery({ - queryFn: () => getIngestionData(), - }); - - useEffect(() => { - if ( - status === 'success' && - ingestionData.payload && - Array.isArray(ingestionData.payload) - ) { - const payload = ingestionData.payload[0] || { - ingestionKey: '', - dataRegion: '', - }; - - setIngestionInfo({ - SIGNOZ_INGESTION_KEY: payload?.ingestionKey, - REGION: payload?.dataRegion, - }); - } - }, [status, ingestionData?.payload]); - - useEffect(() => { - // on language select - trackEvent('Onboarding: APM', { - selectedLanguage, - activeStep, - }); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [selectedLanguage]); - - const renderSelectedLanguageSetupInstructions = (): JSX.Element => { - switch (selectedLanguage) { - case 'java': - return ; - case 'python': - return ; - case 'javascript': - return ; - case 'go': - return ; - case 'rails': - return ; - default: - return <> ; - } - }; - - return ( -
- {activeStep === 2 && ( - <> -
-

- Get Started to instrument your applications and sending data to SigNoz -

-

Select the data source

-
- -
- {supportedLanguages.map((supportedLanguage) => ( -
setSelectedLanguage(supportedLanguage.name)} - > - -
- ))} -
- - )} - - {selectedLanguage && ( -
- {renderSelectedLanguageSetupInstructions()} -
- )} -
- ); -} diff --git a/frontend/src/container/OnboardingContainer/APM/GoLang/GoLang.styles.scss b/frontend/src/container/OnboardingContainer/APM/GoLang/GoLang.styles.scss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/frontend/src/container/OnboardingContainer/APM/GoLang/GoLang.tsx b/frontend/src/container/OnboardingContainer/APM/GoLang/GoLang.tsx deleted file mode 100644 index f65a4f41fd..0000000000 --- a/frontend/src/container/OnboardingContainer/APM/GoLang/GoLang.tsx +++ /dev/null @@ -1,68 +0,0 @@ -import './GoLang.styles.scss'; - -import { Form, Input } from 'antd'; -import { MarkdownRenderer } from 'components/MarkdownRenderer/MarkdownRenderer'; -import Header from 'container/OnboardingContainer/common/Header/Header'; - -import { LangProps } from '../APM'; -import ConnectionStatus from '../common/ConnectionStatus/ConnectionStatus'; -import GoLangDocs from './goLang.md'; - -export default function GoLang({ - ingestionInfo, - activeStep, -}: LangProps): JSX.Element { - const [form] = Form.useForm(); - const serviceName = Form.useWatch('Service Name', form); - - const variables = { - MYAPP: serviceName || '', - SIGNOZ_INGESTION_KEY: - ingestionInfo.SIGNOZ_INGESTION_KEY || '', - REGION: ingestionInfo.REGION || 'region', - }; - - return ( - <> - {activeStep === 2 && ( -
-
- -
-
-
Service Name
- -
- - - -
-
-
- -
- -
-
- )} - {activeStep === 3 && ( - - )} - - ); -} diff --git a/frontend/src/container/OnboardingContainer/APM/Java/Java.styles.scss b/frontend/src/container/OnboardingContainer/APM/Java/Java.styles.scss deleted file mode 100644 index 5a6fc3baaf..0000000000 --- a/frontend/src/container/OnboardingContainer/APM/Java/Java.styles.scss +++ /dev/null @@ -1,10 +0,0 @@ -.form-container { - display: flex; - align-items: flex-start; - width: 100%; - gap: 16px; - - & .ant-form-item { - margin-bottom: 0px; - } -} diff --git a/frontend/src/container/OnboardingContainer/APM/Java/Java.tsx b/frontend/src/container/OnboardingContainer/APM/Java/Java.tsx deleted file mode 100644 index ed256410b8..0000000000 --- a/frontend/src/container/OnboardingContainer/APM/Java/Java.tsx +++ /dev/null @@ -1,146 +0,0 @@ -import './Java.styles.scss'; - -import { Form, Input, Select } from 'antd'; -import { MarkdownRenderer } from 'components/MarkdownRenderer/MarkdownRenderer'; -import Header from 'container/OnboardingContainer/common/Header/Header'; -import { useEffect, useState } from 'react'; -import { trackEvent } from 'utils/segmentAnalytics'; -import { popupContainer } from 'utils/selectPopupContainer'; - -import { LangProps } from '../APM'; -import ConnectionStatus from '../common/ConnectionStatus/ConnectionStatus'; -import JavaDocs from './md-docs/java.md'; -import JbossDocs from './md-docs/jboss.md'; -import SprintBootDocs from './md-docs/spring_boot.md'; -import TomcatDocs from './md-docs/tomcat.md'; - -enum FrameworksMap { - tomcat = 'Tomcat', - spring_boot = 'Spring Boot', - jboss = 'JBoss', - other = 'Others', -} - -export default function Java({ - ingestionInfo, - activeStep, -}: LangProps): JSX.Element { - const [selectedFrameWork, setSelectedFrameWork] = useState('spring_boot'); - const [selectedFrameWorkDocs, setSelectedFrameWorkDocs] = useState( - SprintBootDocs, - ); - - const [form] = Form.useForm(); - const serviceName = Form.useWatch('Service Name', form); - - useEffect(() => { - // on language select - trackEvent('Onboarding: APM : Java', { - selectedFrameWork, - }); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [selectedFrameWork]); - - const handleFrameworkChange = (selectedFrameWork: string): void => { - setSelectedFrameWork(selectedFrameWork); - - switch (selectedFrameWork) { - case 'tomcat': - setSelectedFrameWorkDocs(TomcatDocs); - break; - case 'spring_boot': - setSelectedFrameWorkDocs(SprintBootDocs); - break; - case 'jboss': - setSelectedFrameWorkDocs(JbossDocs); - break; - default: - setSelectedFrameWorkDocs(JavaDocs); - break; - } - }; - - const variables = { - MYAPP: serviceName || '', - SIGNOZ_INGESTION_KEY: - ingestionInfo.SIGNOZ_INGESTION_KEY || '', - REGION: ingestionInfo.REGION || 'region', - }; - - return ( - <> - {activeStep === 2 && ( -
-
- -
-
-
Select Framework
- - - - -
-
- -
- -
-
- )} - {activeStep === 3 && ( - - )} - - ); -} diff --git a/frontend/src/container/OnboardingContainer/APM/Javascript/Javascript.styles.scss b/frontend/src/container/OnboardingContainer/APM/Javascript/Javascript.styles.scss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/frontend/src/container/OnboardingContainer/APM/Javascript/Javascript.tsx b/frontend/src/container/OnboardingContainer/APM/Javascript/Javascript.tsx deleted file mode 100644 index 466fd72db7..0000000000 --- a/frontend/src/container/OnboardingContainer/APM/Javascript/Javascript.tsx +++ /dev/null @@ -1,143 +0,0 @@ -import './Javascript.styles.scss'; - -import { Form, Input, Select } from 'antd'; -import { MarkdownRenderer } from 'components/MarkdownRenderer/MarkdownRenderer'; -import Header from 'container/OnboardingContainer/common/Header/Header'; -import { useEffect, useState } from 'react'; -import { trackEvent } from 'utils/segmentAnalytics'; -import { popupContainer } from 'utils/selectPopupContainer'; - -import { LangProps } from '../APM'; -import ConnectionStatus from '../common/ConnectionStatus/ConnectionStatus'; -import ExpressDocs from './md-docs/express.md'; -import JavascriptDocs from './md-docs/javascript.md'; -import NestJsDocs from './md-docs/nestjs.md'; - -const frameworksMap = { - express: 'Express', - nestjs: 'Nest JS', - nodejs: 'Nodejs', -}; - -export default function Javascript({ - ingestionInfo, - activeStep, -}: LangProps): JSX.Element { - const [selectedFrameWork, setSelectedFrameWork] = useState('express'); - const [selectedFrameWorkDocs, setSelectedFrameWorkDocs] = useState( - ExpressDocs, - ); - const [form] = Form.useForm(); - const serviceName = Form.useWatch('Service Name', form); - - const variables = { - MYAPP: serviceName || '', - SIGNOZ_INGESTION_KEY: - ingestionInfo.SIGNOZ_INGESTION_KEY || '', - REGION: ingestionInfo.REGION || 'region', - }; - - useEffect(() => { - // on language select - trackEvent('Onboarding: APM : Javascript', { - selectedFrameWork, - }); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [selectedFrameWork]); - - const handleFrameworkChange = (selectedFrameWork: string): void => { - setSelectedFrameWork(selectedFrameWork); - - switch (selectedFrameWork) { - case 'nodejs': - setSelectedFrameWorkDocs(JavascriptDocs); - break; - case 'nestjs': - setSelectedFrameWorkDocs(NestJsDocs); - break; - default: - setSelectedFrameWorkDocs(ExpressDocs); - break; - } - }; - - return ( - <> - {activeStep === 2 && ( -
-
- -
-
-
Select Framework
- - - - -
-
- -
- -
-
- )} - {activeStep === 3 && ( - - )} - - ); -} diff --git a/frontend/src/container/OnboardingContainer/APM/Python/Python.styles.scss b/frontend/src/container/OnboardingContainer/APM/Python/Python.styles.scss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/frontend/src/container/OnboardingContainer/APM/Python/Python.tsx b/frontend/src/container/OnboardingContainer/APM/Python/Python.tsx deleted file mode 100644 index 9f70406e68..0000000000 --- a/frontend/src/container/OnboardingContainer/APM/Python/Python.tsx +++ /dev/null @@ -1,152 +0,0 @@ -import './Python.styles.scss'; - -import { Form, Input, Select } from 'antd'; -import { MarkdownRenderer } from 'components/MarkdownRenderer/MarkdownRenderer'; -import Header from 'container/OnboardingContainer/common/Header/Header'; -import { useEffect, useState } from 'react'; -import { trackEvent } from 'utils/segmentAnalytics'; -import { popupContainer } from 'utils/selectPopupContainer'; - -import { LangProps } from '../APM'; -import ConnectionStatus from '../common/ConnectionStatus/ConnectionStatus'; -import DjangoDocs from './md-docs/django.md'; -import FalconDocs from './md-docs/falcon.md'; -import FastAPIDocs from './md-docs/fastAPI.md'; -import FlaskDocs from './md-docs/flask.md'; -import PythonDocs from './md-docs/python.md'; - -const frameworksMap = { - django: 'Django', - fastAPI: 'Fast API', - flask: 'Flask', - falcon: 'Falcon', - other: 'Others', -}; - -export default function Python({ - ingestionInfo, - activeStep, -}: LangProps): JSX.Element { - const [selectedFrameWork, setSelectedFrameWork] = useState('django'); - const [selectedFrameWorkDocs, setSelectedFrameWorkDocs] = useState(DjangoDocs); - const [form] = Form.useForm(); - const serviceName = Form.useWatch('Service Name', form); - - const variables = { - MYAPP: serviceName || '', - SIGNOZ_INGESTION_KEY: - ingestionInfo.SIGNOZ_INGESTION_KEY || '', - REGION: ingestionInfo.REGION || 'region', - }; - - useEffect(() => { - // on language select - trackEvent('Onboarding: APM : Python', { - selectedFrameWork, - }); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [selectedFrameWork]); - - const handleFrameworkChange = (selectedFrameWork: string): void => { - setSelectedFrameWork(selectedFrameWork); - - switch (selectedFrameWork) { - case 'django': - setSelectedFrameWorkDocs(DjangoDocs); - break; - case 'fastAPI': - setSelectedFrameWorkDocs(FastAPIDocs); - break; - case 'flask': - setSelectedFrameWorkDocs(FlaskDocs); - break; - case 'falcon': - setSelectedFrameWorkDocs(FalconDocs); - break; - default: - setSelectedFrameWorkDocs(PythonDocs); - break; - } - }; - - return ( - <> - {activeStep === 2 && ( -
-
- -
-
-
Select Framework
- - - - -
-
- -
- -
-
- )} - {activeStep === 3 && ( - - )} - - ); -} diff --git a/frontend/src/container/OnboardingContainer/APM/RubyOnRails/ROR.styles.scss b/frontend/src/container/OnboardingContainer/APM/RubyOnRails/ROR.styles.scss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/frontend/src/container/OnboardingContainer/APM/RubyOnRails/ROR.tsx b/frontend/src/container/OnboardingContainer/APM/RubyOnRails/ROR.tsx deleted file mode 100644 index c19dbf34db..0000000000 --- a/frontend/src/container/OnboardingContainer/APM/RubyOnRails/ROR.tsx +++ /dev/null @@ -1,68 +0,0 @@ -import './ROR.styles.scss'; - -import { Form, Input } from 'antd'; -import { MarkdownRenderer } from 'components/MarkdownRenderer/MarkdownRenderer'; -import Header from 'container/OnboardingContainer/common/Header/Header'; - -import { LangProps } from '../APM'; -import ConnectionStatus from '../common/ConnectionStatus/ConnectionStatus'; -import RORDocs from './RubyOnRails.md'; - -export default function RoR({ - ingestionInfo, - activeStep, -}: LangProps): JSX.Element { - const [form] = Form.useForm(); - const serviceName = Form.useWatch('Service Name', form); - - const variables = { - MYAPP: serviceName || '', - SIGNOZ_INGESTION_KEY: - ingestionInfo.SIGNOZ_INGESTION_KEY || '', - REGION: ingestionInfo.REGION || 'region', - }; - - return ( - <> - {activeStep === 2 && ( -
-
- -
-
-
Service Name
- -
- - - -
-
-
- -
- -
-
- )} - {activeStep === 3 && ( - - )} - - ); -} diff --git a/frontend/src/container/OnboardingContainer/InfrastructureMonitoring/InfrastructureMonitoring.styles.scss b/frontend/src/container/OnboardingContainer/InfrastructureMonitoring/InfrastructureMonitoring.styles.scss deleted file mode 100644 index fbd2eb0bda..0000000000 --- a/frontend/src/container/OnboardingContainer/InfrastructureMonitoring/InfrastructureMonitoring.styles.scss +++ /dev/null @@ -1,45 +0,0 @@ -.infrastructure-monitoring-module-container { - padding: 48px 0; - - .module-header { - h1 { - font-size: 24px; - font-weight: 500; - } - - h4 { - font-size: 14px; - font-weight: 300; - } - } - - .content-container { - .heading { - .title { - a { - color: rgb(232, 112, 64); - } - } - } - - .subheading { - display: flex; - flex-direction: column; - gap: 12px; - margin-bottom: 16px; - - .recevier-types { - display: flex; - flex-direction: column; - } - } - } - - .header { - display: flex; - gap: 16px; - justify-content: flex-start; - align-items: center; - margin: 16px 0; - } -} diff --git a/frontend/src/container/OnboardingContainer/InfrastructureMonitoring/InfrastructureMonitoring.tsx b/frontend/src/container/OnboardingContainer/InfrastructureMonitoring/InfrastructureMonitoring.tsx deleted file mode 100644 index 998b6fa6e4..0000000000 --- a/frontend/src/container/OnboardingContainer/InfrastructureMonitoring/InfrastructureMonitoring.tsx +++ /dev/null @@ -1,154 +0,0 @@ -/* eslint-disable jsx-a11y/no-static-element-interactions */ -/* eslint-disable jsx-a11y/click-events-have-key-events */ -import './InfrastructureMonitoring.styles.scss'; - -import cx from 'classnames'; -import { Code, Pre } from 'components/MarkdownRenderer/MarkdownRenderer'; -import { useEffect, useState } from 'react'; -import ReactMarkdown from 'react-markdown'; -import { trackEvent } from 'utils/segmentAnalytics'; - -import Header from '../common/Header/Header'; -import hostMetricsMonitoring from './md-docs/hostMetricsMonitoring.md'; -import k8sInfraMonitoringDocs from './md-docs/kubernetesInfraMonitoring.md'; -import otherMetrics from './md-docs/otherMetrics.md'; - -export default function InfrastructureMonitoring({ - activeStep, -}: { - activeStep: number; -}): JSX.Element { - const [selectedInfraMetrics, setSelectedInfraMetrics] = useState('kubernetes'); - const [selectedInfraMetricsDocs, setSelectedInfraMetricsDocs] = useState( - k8sInfraMonitoringDocs, - ); - - useEffect(() => { - // on metrics Type select - trackEvent('Onboarding: APM : Java', { - selectedInfraMetrics, - }); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [selectedInfraMetrics]); - - const supportedInfraMetrics = [ - { - name: 'Kubernetes Infra Metrics', - id: 'kubernetes', - imgURL: `Logos/kubernetes.svg`, - }, - { - name: 'HostMetrics', - id: 'hostMetrics', - imgURL: `Logos/software-window.svg`, - }, - { - name: 'Other Metrics', - id: 'otherMetrics', - imgURL: `Logos/cmd-terminal.svg`, - }, - ]; - - const handleMetricsTypeChange = (selectedMetricsType: string): void => { - setSelectedInfraMetrics(selectedMetricsType); - - switch (selectedMetricsType) { - case 'kubernetes': - setSelectedInfraMetricsDocs(k8sInfraMonitoringDocs); - break; - case 'hostMetrics': - setSelectedInfraMetricsDocs(hostMetricsMonitoring); - break; - case 'otherMetrics': - setSelectedInfraMetricsDocs(otherMetrics); - break; - default: - setSelectedInfraMetricsDocs(otherMetrics); - break; - } - }; - - const getHeaderBasedOnType = (): JSX.Element => { - switch (selectedInfraMetrics) { - case 'hostMetrics': - return ( -
- ); - - case 'otherMetrics': - return ( -
- ); - - default: - return ( -
- ); - } - }; - - return ( -
- {activeStep === 2 && ( - <> -
-

Select an Infra Metrics type

- {/*

Choose the logs that you want to receive on SigNoz

*/} -
- -
- {supportedInfraMetrics.map((logType) => ( -
handleMetricsTypeChange(logType.id)} - > - - -
{logType.name}
-
- ))} -
- - {getHeaderBasedOnType()} - -
- - {selectedInfraMetricsDocs} - -
- - )} -
- ); -} diff --git a/frontend/src/container/OnboardingContainer/InfrastructureMonitoring/md-docs/hostMetricsMonitoring.md b/frontend/src/container/OnboardingContainer/InfrastructureMonitoring/md-docs/hostMetricsMonitoring.md deleted file mode 100644 index fa483a3e70..0000000000 --- a/frontend/src/container/OnboardingContainer/InfrastructureMonitoring/md-docs/hostMetricsMonitoring.md +++ /dev/null @@ -1,10 +0,0 @@ -## Hostmetrics Monitoring -You can collect Hostmetrics from your VM and send it to SigNoz cloud using OpenTelemetry Collector. - -Steps to send hostmetrics to SigNoz Cloud: - -- Install OpenTelemetry Collector binary agent. Please find instructions [here](https://signoz.io/docs/tutorial/opentelemetry-binary-usage-in-virtual-machine/#setup-otel-collector-as-agent). - -- Import Hostmetrics Dashboard in SigNoz. Please find instructions [here](https://signoz.io/docs/tutorial/opentelemetry-binary-usage-in-virtual-machine/#hostmetrics-dashboard). - -Learn how to create dashboards and panels [here](https://signoz.io/docs/userguide/manage-dashboards-and-panels/). diff --git a/frontend/src/container/OnboardingContainer/InfrastructureMonitoring/md-docs/kubernetesInfraMonitoring.md b/frontend/src/container/OnboardingContainer/InfrastructureMonitoring/md-docs/kubernetesInfraMonitoring.md deleted file mode 100644 index c74ac6e5d0..0000000000 --- a/frontend/src/container/OnboardingContainer/InfrastructureMonitoring/md-docs/kubernetesInfraMonitoring.md +++ /dev/null @@ -1,9 +0,0 @@ -## Kubernetes Infra Metrics - -You can collect Kubernetes infra metrics from your k8s cluster and send it to SigNoz cloud using k8s-infra chart. - -Steps to send kubernetes infra metrics to SigNoz Cloud: - -- Install OpenTelemetry Collectors in your k8s infra. Please find instructions [here](https://signoz.io/docs/tutorial/kubernetes-infra-metrics/). - -- Plot metrics in SigNoz UI by following the instructions [here](https://signoz.io/docs/tutorial/kubernetes-infra-metrics/#plot-metrics-in-signoz-ui). \ No newline at end of file diff --git a/frontend/src/container/OnboardingContainer/InfrastructureMonitoring/md-docs/otherMetrics.md b/frontend/src/container/OnboardingContainer/InfrastructureMonitoring/md-docs/otherMetrics.md deleted file mode 100644 index adabc59050..0000000000 --- a/frontend/src/container/OnboardingContainer/InfrastructureMonitoring/md-docs/otherMetrics.md +++ /dev/null @@ -1,195 +0,0 @@ -## Send metrics from any third-party integrations - -This document helps you to send metrics from any third-party integrations such as RabbitMQ, Nginx, MySQL, etc. - -There are two ways in which you can send metrics to SigNoz using OpenTelemetry: - -- From your application -- From OpenTelemetry Collector - -In this document, we will cover how to send metrics from OpenTelemetry Collector. The Collector is a swiss-army knife that can collect metrics from various sources and send them to SigNoz. - -- Enable a Specific Metric Receiver -- Enable a Prometheus Receiver - -## Enable a Specific Metric Receiver - -SigNoz supports all the receivers that are listed in the [opentelemetry-collector-contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver) GitHub repository. To configure a new metric receiver, you must edit the `receivers` and `service::pipelines` sections of the `otel-collector-config.yaml` file. The following example shows the default configuration in which the `hostmetrics` receiver is enabled: - -```yaml {8-20,52} -receivers: - otlp: - protocols: - grpc: - endpoint: localhost:4317 - http: - endpoint: localhost:4318 - hostmetrics: - collection_interval: 30s - scrapers: - cpu: {} - disk: {} - load: {} - filesystem: {} - memory: {} - network: {} - paging: {} - process: - mute_process_name_error: true - processes: {} -processors: - batch: - send_batch_size: 1000 - timeout: 10s - # Ref: https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/resourcedetectionprocessor/README.md - resourcedetection: - detectors: [env, system, ec2] # include ec2 for AWS, gce for GCP and azure for Azure. - # Using OTEL_RESOURCE_ATTRIBUTES envvar, env detector adds custom labels. - timeout: 2s - override: false - system: - hostname_sources: [os] # alternatively, use [dns,os] for setting FQDN as host.name and os as fallback -exporters: - otlp: - endpoint: 'ingest.{region}.signoz.cloud:443' # replace {region} with your region - tls: - insecure: false - headers: - 'signoz-access-token': '' - logging: - loglevel: debug -service: - telemetry: - metrics: - address: localhost:8888 - pipelines: - metrics: - receivers: [otlp] - processors: [batch] - exporters: [otlp] - metrics/hostmetrics: - receivers: [hostmetrics] - processors: [resourcedetection, batch] - exporters: [otlp] -``` - -Depending on the choice of your region for SigNoz cloud, the ingest endpoint will vary according to this table. - -US - ingest.us.signoz.cloud:443 - -IN - ingest.in.signoz.cloud:443 - -EU - ingest.eu.signoz.cloud:443 - -To enable a new OpenTelemetry receiver, follow the steps below: - -1. Open the `otel-collector-config.yaml` file in a plain-text editor. -2. Configure your receivers. The following example shows how you can enable a `rabbitmq` receiver: - -```yaml {21-25,53} -receivers: - otlp: - protocols: - grpc: - endpoint: localhost:4317 - http: - endpoint: localhost:4318 - hostmetrics: - collection_interval: 30s - scrapers: - cpu: {} - disk: {} - load: {} - filesystem: {} - memory: {} - network: {} - paging: {} - process: - mute_process_name_error: true - processes: {} - rabbitmq: - endpoint: http://localhost:15672 - username: - password: - collection_interval: 10s -processors: - batch: - send_batch_size: 1000 - timeout: 10s - # Ref: https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/resourcedetectionprocessor/README.md - resourcedetection: - detectors: [env, system, ec2] # include ec2 for AWS, gce for GCP and azure for Azure. - # Using OTEL_RESOURCE_ATTRIBUTES envvar, env detector adds custom labels. - timeout: 2s - override: false - system: - hostname_sources: [os] # alternatively, use [dns,os] for setting FQDN as host.name and os as fallback -exporters: - otlp: - endpoint: 'ingest.{region}.signoz.cloud:443' # replace {region} with your region - tls: - insecure: false - headers: - 'signoz-access-token': '' - logging: - loglevel: debug -service: - telemetry: - metrics: - address: localhost:8888 - pipelines: - metrics: - receivers: [otlp, rabbitmq] - processors: [batch] - exporters: [otlp] - metrics/hostmetrics: - receivers: [hostmetrics] - processors: [resourcedetection, batch] - exporters: [otlp] -``` - -For details about configuring OpenTelemetry receivers, see the [README](https://github.com/open-telemetry/opentelemetry-collector/blob/main/receiver/README.md) page of the `opentelemetry-collector` GitHub repository. - -## Enable a Prometheus Receiver - -SigNoz supports all the exporters that are listed on the [Exporters and Integrations](https://prometheus.io/docs/instrumenting/exporters/) page of the Prometheus documentation. If you have a running Prometheus instance, and you expose metrics in Prometheus, then you can scrape them in SigNoz by configuring Prometheus receivers in the `receivers::prometheus::config::scrape_configs` section of the `otel-collector-config.yaml` file. - -To enable a Prometheus receiver, follow the steps below: - -1. Open the `otel-collector-config.yaml` file in a plain-text editor. -2. Enable a new Prometheus receiver. Depending on your use case, there are two ways in which you can enable a new Prometheus exporter: - - **By creating a new job**: The following example shows how you can enable a Prometheus receiver by creating a new job named `my-new-job`: - ```yaml {10-13} - ... - # Data sources: metrics - prometheus: - config: - scrape_configs: - - job_name: "otel-collector" - scrape_interval: 30s - static_configs: - - targets: ["otel-collector:8889"] - - job_name: "my-new-job" - scrape_interval: 30s - static_configs: - - targets: ["localhost:8080"] - ... - # This file was truncated for brevity. - ``` - - **By adding a new target to an existing job**: The following example shows the default `otel-collector` job to which a new target (`localhost:8080`) was added: - ```yaml {9} - ... - # Data sources: metrics - prometheus: - config: - scrape_configs: - - job_name: "otel-collector" - scrape_interval: 30s - static_configs: - - targets: ["otel-collector:8889", "localhost:8080"] - ... - # This file was truncated for brevity. - ``` - Note that all the jobs are scraped in parallel, and all targets inside a job are scraped serially. For more details about configuring jobs and targets, see the following sections of the Prometheus documentation: - - [](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config) - - [Jobs and Instances](https://prometheus.io/docs/concepts/jobs_instances/) diff --git a/frontend/src/container/OnboardingContainer/LogsManagement/ApplicationLogs/ApplicationLogs.tsx b/frontend/src/container/OnboardingContainer/LogsManagement/ApplicationLogs/ApplicationLogs.tsx deleted file mode 100644 index 3341dadaff..0000000000 --- a/frontend/src/container/OnboardingContainer/LogsManagement/ApplicationLogs/ApplicationLogs.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import { Code, Pre } from 'components/MarkdownRenderer/MarkdownRenderer'; -import Header from 'container/OnboardingContainer/common/Header/Header'; -import ReactMarkdown from 'react-markdown'; - -import ConnectionStatus from '../common/LogsConnectionStatus/LogsConnectionStatus'; -import LogsFromLogFile from './applicationLogsFromLogFile.md'; - -interface ApplicationLogsProps { - type: string; - activeStep: number; -} - -const collectLogsFromFileURL = - 'https://signoz.io/docs/userguide/collect_logs_from_file/'; - -export default function ApplicationLogs({ - type, - activeStep, -}: ApplicationLogsProps): JSX.Element { - const docsURL = collectLogsFromFileURL; - - return ( - <> - {activeStep === 2 && ( -
-
- -
- - {LogsFromLogFile} - -
-
- )} - {activeStep === 3 && ( -
- -
- )} - - ); -} diff --git a/frontend/src/container/OnboardingContainer/LogsManagement/Docker/Docker.tsx b/frontend/src/container/OnboardingContainer/LogsManagement/Docker/Docker.tsx deleted file mode 100644 index e88d62632b..0000000000 --- a/frontend/src/container/OnboardingContainer/LogsManagement/Docker/Docker.tsx +++ /dev/null @@ -1,44 +0,0 @@ -import { Code, Pre } from 'components/MarkdownRenderer/MarkdownRenderer'; -import Header from 'container/OnboardingContainer/common/Header/Header'; -import ReactMarkdown from 'react-markdown'; - -import ConnectionStatus from '../common/LogsConnectionStatus/LogsConnectionStatus'; -import DockerDocs from './docker.md'; - -export default function Docker({ - activeStep, -}: { - activeStep: number; -}): JSX.Element { - return ( - <> - {activeStep === 2 && ( -
-
- -
- - {DockerDocs} - -
-
- )} - {activeStep === 3 && ( -
- -
- )} - - ); -} diff --git a/frontend/src/container/OnboardingContainer/LogsManagement/ExistingCollectors/ExistingCollectors.tsx b/frontend/src/container/OnboardingContainer/LogsManagement/ExistingCollectors/ExistingCollectors.tsx deleted file mode 100644 index e86bbabfe4..0000000000 --- a/frontend/src/container/OnboardingContainer/LogsManagement/ExistingCollectors/ExistingCollectors.tsx +++ /dev/null @@ -1,97 +0,0 @@ -import { Select } from 'antd'; -import { Code, Pre } from 'components/MarkdownRenderer/MarkdownRenderer'; -import Header from 'container/OnboardingContainer/common/Header/Header'; -import { useEffect, useState } from 'react'; -import ReactMarkdown from 'react-markdown'; -import { trackEvent } from 'utils/segmentAnalytics'; -import { popupContainer } from 'utils/selectPopupContainer'; - -import FluentBit from './md-docs/fluentBit.md'; -import FluentD from './md-docs/fluentD.md'; -import LogStashDocs from './md-docs/logStash.md'; - -enum FrameworksMap { - fluent_d = 'FluentD', - fluent_bit = 'FluentBit', - logstash = 'Logstash', -} - -export default function ExistingCollectors(): JSX.Element { - const [selectedFrameWork, setSelectedFrameWork] = useState('fluent_d'); - const [selectedFrameWorkDocs, setSelectedFrameWorkDocs] = useState(FluentD); - - useEffect(() => { - // on language select - trackEvent('Onboarding: Logs Management: Existing Collectors', { - selectedFrameWork, - }); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [selectedFrameWork]); - - const handleFrameworkChange = (selectedFrameWork: string): void => { - setSelectedFrameWork(selectedFrameWork); - - switch (selectedFrameWork) { - case 'fluent_d': - setSelectedFrameWorkDocs(FluentD); - break; - case 'fluent_bit': - setSelectedFrameWorkDocs(FluentBit); - break; - default: - setSelectedFrameWorkDocs(LogStashDocs); - break; - } - }; - - return ( -
-
- -
-
-
Select Framework
- - + + + {enableFrameworks && ( +
+ +