diff --git a/conf/defaults.ini b/conf/defaults.ini index 6676be54b45..963b9afd2e7 100644 --- a/conf/defaults.ini +++ b/conf/defaults.ini @@ -208,6 +208,12 @@ rudderstack_write_key = # Rudderstack data plane url, enabled only if rudderstack_write_key is also set rudderstack_data_plane_url = +# Rudderstack SDK url, optional, only valid if rudderstack_write_key and rudderstack_data_plane_url is also set +rudderstack_sdk_url = + +# Rudderstack Config url, optional, used by Rudderstack SDK to fetch source config +rudderstack_config_url = + # Application Insights connection string. Specify an URL string to enable this feature. application_insights_connection_string = diff --git a/conf/sample.ini b/conf/sample.ini index 9f2a590210f..e7634b55fca 100644 --- a/conf/sample.ini +++ b/conf/sample.ini @@ -208,6 +208,18 @@ # Google Tag Manager ID, only enabled if you specify an id here ;google_tag_manager_id = +# Rudderstack write key, enabled only if rudderstack_data_plane_url is also set +;rudderstack_write_key = + +# Rudderstack data plane url, enabled only if rudderstack_write_key is also set +;rudderstack_data_plane_url = + +# Rudderstack SDK url, optional, only valid if rudderstack_write_key and rudderstack_data_plane_url is also set +;rudderstack_sdk_url = + +# Rudderstack Config url, optional, used by Rudderstack SDK to fetch source config +;rudderstack_config_url = + #################################### Security #################################### [security] # disable creation of admin user on first start of grafana diff --git a/docs/sources/administration/configuration.md b/docs/sources/administration/configuration.md index 3dcbeb17743..d802fe3ecc8 100644 --- a/docs/sources/administration/configuration.md +++ b/docs/sources/administration/configuration.md @@ -464,6 +464,27 @@ Analytics ID here. By default this feature is disabled. Google Tag Manager ID, only enabled if you enter an ID here. +### rudderstack_write_key + +If you want to track Grafana usage via Rudderstack specify _your_ Rudderstack +Write Key here. The `rudderstack_data_plane_url` must also be provided for this +feature to be enabled. By default this feature is disabled. + +### rudderstack_data_plane_url + +Rudderstack data plane url that will receive Rudderstack events. The +`rudderstack_write_key` must also be provided for this feature to be enabled. + +### rudderstack_sdk_url + +Optional. If tracking with Rudderstack is enabled, you can provide a custom +URL to load the Rudderstack SDK. + +### rudderstack_config_url + +Optional. If tracking with Rudderstack is enabled, you can provide a custom +URL to load the Rudderstack config. + ### application_insights_connection_string If you want to track Grafana usage via Azure Application Insights, then specify _your_ Application Insights connection string. Since the connection string contains semicolons, you need to wrap it in backticks (`). By default, tracking usage is disabled. diff --git a/pkg/api/frontendsettings.go b/pkg/api/frontendsettings.go index 772725a6d1d..70ee7b1eb79 100644 --- a/pkg/api/frontendsettings.go +++ b/pkg/api/frontendsettings.go @@ -233,6 +233,8 @@ func (hs *HTTPServer) getFrontendSettingsMap(c *models.ReqContext) (map[string]i "googleAnalyticsId": setting.GoogleAnalyticsId, "rudderstackWriteKey": setting.RudderstackWriteKey, "rudderstackDataPlaneUrl": setting.RudderstackDataPlaneUrl, + "rudderstackSdkUrl": setting.RudderstackSdkUrl, + "rudderstackConfigUrl": setting.RudderstackConfigUrl, "applicationInsightsConnectionString": hs.Cfg.ApplicationInsightsConnectionString, "applicationInsightsEndpointUrl": hs.Cfg.ApplicationInsightsEndpointUrl, "disableLoginForm": setting.DisableLoginForm, diff --git a/pkg/setting/setting.go b/pkg/setting/setting.go index 5dc502d5277..29cd0154868 100644 --- a/pkg/setting/setting.go +++ b/pkg/setting/setting.go @@ -143,6 +143,8 @@ var ( GoogleTagManagerId string RudderstackDataPlaneUrl string RudderstackWriteKey string + RudderstackSdkUrl string + RudderstackConfigUrl string // LDAP LDAPEnabled bool @@ -945,6 +947,8 @@ func (cfg *Cfg) Load(args CommandLineArgs) error { GoogleTagManagerId = analytics.Key("google_tag_manager_id").String() RudderstackWriteKey = analytics.Key("rudderstack_write_key").String() RudderstackDataPlaneUrl = analytics.Key("rudderstack_data_plane_url").String() + RudderstackSdkUrl = analytics.Key("rudderstack_sdk_url").String() + RudderstackConfigUrl = analytics.Key("rudderstack_config_url").String() cfg.ReportingEnabled = analytics.Key("reporting_enabled").MustBool(true) cfg.ReportingDistributor = analytics.Key("reporting_distributor").MustString("grafana-labs") if len(cfg.ReportingDistributor) >= 100 { diff --git a/public/app/app.ts b/public/app/app.ts index 5a04fe47580..9a331bde234 100644 --- a/public/app/app.ts +++ b/public/app/app.ts @@ -210,6 +210,8 @@ function initEchoSrv() { writeKey: (config as any).rudderstackWriteKey, dataPlaneUrl: (config as any).rudderstackDataPlaneUrl, user: config.bootData.user, + sdkUrl: (config as any).rudderstackSdkUrl, + configUrl: (config as any).rudderstackConfigUrl, }) ); } diff --git a/public/app/core/services/echo/backends/analytics/RudderstackBackend.ts b/public/app/core/services/echo/backends/analytics/RudderstackBackend.ts index 1f65c337d55..af426540ae7 100644 --- a/public/app/core/services/echo/backends/analytics/RudderstackBackend.ts +++ b/public/app/core/services/echo/backends/analytics/RudderstackBackend.ts @@ -6,13 +6,15 @@ export interface RudderstackBackendOptions { writeKey: string; dataPlaneUrl: string; user?: User; + sdkUrl?: string; + configUrl?: string; } export class RudderstackBackend implements EchoBackend { supportedEvents = [EchoEventType.Pageview, EchoEventType.Interaction]; constructor(public options: RudderstackBackendOptions) { - const url = `https://cdn.rudderlabs.com/v1/rudder-analytics.min.js`; + const url = options.sdkUrl || `https://cdn.rudderlabs.com/v1/rudder-analytics.min.js`; $.ajax({ url, @@ -45,7 +47,7 @@ export class RudderstackBackend implements EchoBackend