UsageInsights: Disable frontend features when backend is disabled (#77772)

* UsageInsights: Disable frontend features when backend is disabled

* Disable DS insights

* Update doc

* fix linter issue

* Update docs/sources/setup-grafana/configure-grafana/_index.md

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>

---------

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
This commit is contained in:
Agnès Toulet 2023-11-09 11:53:20 +01:00 committed by GitHub
parent ba51c371ec
commit bb12fe7d82
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 35 additions and 23 deletions

View File

@ -518,8 +518,7 @@ Sets a custom value for the `User-Agent` header for outgoing data proxy requests
### enabled
This option is also known as _usage analytics_. When `false`, this option disables the writers that read/write from and to the Grafana databases. The default
value is `true`.
This option is also known as _usage analytics_. When `false`, this option disables the writers that write to the Grafana database and the associated features, such as dashboard and data source insights, presence indicators, and advanced dashboard search. The default value is `true`.
### reporting_enabled

View File

@ -143,6 +143,9 @@ export class GrafanaBootConfig implements GrafanaConfig {
reporting = {
enabled: true,
};
analytics = {
enabled: true,
};
googleAnalyticsId: undefined;
googleAnalytics4Id: undefined;
googleAnalytics4SendManualPageViews = false;

View File

@ -62,6 +62,10 @@ type FrontendSettingsReportingDTO struct {
Enabled bool `json:"enabled"`
}
type FrontendSettingsAnalyticsDTO struct {
Enabled bool `json:"enabled"`
}
type FrontendSettingsUnifiedAlertingDTO struct {
MinInterval string `json:"minInterval"`
AlertStateHistoryBackend string `json:"alertStateHistoryBackend,omitempty"`
@ -209,6 +213,7 @@ type FrontendSettingsDTO struct {
Caching FrontendSettingsCachingDTO `json:"caching"`
RecordedQueries FrontendSettingsRecordedQueriesDTO `json:"recordedQueries"`
Reporting FrontendSettingsReportingDTO `json:"reporting"`
Analytics FrontendSettingsAnalyticsDTO `json:"analytics"`
UnifiedAlertingEnabled bool `json:"unifiedAlertingEnabled"`
UnifiedAlerting FrontendSettingsUnifiedAlertingDTO `json:"unifiedAlerting"`
Oauth map[string]any `json:"oauth"`

View File

@ -223,6 +223,9 @@ func (hs *HTTPServer) getFrontendSettings(c *contextmodel.ReqContext) (*dtos.Fro
Reporting: dtos.FrontendSettingsReportingDTO{
Enabled: hs.Cfg.SectionWithEnvOverrides("reporting").Key("enabled").MustBool(true),
},
Analytics: dtos.FrontendSettingsAnalyticsDTO{
Enabled: hs.Cfg.SectionWithEnvOverrides("analytics").Key("enabled").MustBool(true),
},
UnifiedAlerting: dtos.FrontendSettingsUnifiedAlertingDTO{
MinInterval: hs.Cfg.UnifiedAlerting.MinInterval.String(),

View File

@ -78,29 +78,31 @@ export function buildNavModel(dataSource: DataSourceSettings, plugin: GenericDat
});
}
const analyticsExperimentId = 'feature-highlights-data-source-insights-badge';
const analytics: NavModelItem = {
active: false,
icon: 'info-circle',
id: `datasource-insights-${dataSource.uid}`,
text: 'Insights',
url: `datasources/edit/${dataSource.uid}/insights`,
};
if (config.analytics?.enabled) {
const analyticsExperimentId = 'feature-highlights-data-source-insights-badge';
const analytics: NavModelItem = {
active: false,
icon: 'info-circle',
id: `datasource-insights-${dataSource.uid}`,
text: 'Insights',
url: `datasources/edit/${dataSource.uid}/insights`,
};
if (highlightTrial() && !isLoadingNav) {
analytics.tabSuffix = () => ProBadge({ experimentId: analyticsExperimentId, eventVariant: 'trial' });
}
if (featureEnabled('analytics')) {
if (contextSrv.hasPermission(AccessControlAction.DataSourcesInsightsRead)) {
navModel.children!.push(analytics);
if (highlightTrial() && !isLoadingNav) {
analytics.tabSuffix = () => ProBadge({ experimentId: analyticsExperimentId, eventVariant: 'trial' });
}
if (featureEnabled('analytics')) {
if (contextSrv.hasPermission(AccessControlAction.DataSourcesInsightsRead)) {
navModel.children!.push(analytics);
}
} else if (highlightsEnabled && !isLoadingNav) {
navModel.children!.push({
...analytics,
url: analytics.url + '/upgrade',
tabSuffix: () => ProBadge({ experimentId: analyticsExperimentId }),
});
}
} else if (highlightsEnabled && !isLoadingNav) {
navModel.children!.push({
...analytics,
url: analytics.url + '/upgrade',
tabSuffix: () => ProBadge({ experimentId: analyticsExperimentId }),
});
}
const cachingExperimentId = 'feature-highlights-query-caching-badge';