diff --git a/public/app/plugins/datasource/cloudwatch/mocks/dashboardOnLoadedEvent.ts b/public/app/plugins/datasource/cloudwatch/mocks/dashboardOnLoadedEvent.ts index ebe3dcaf1f0..f2095b5c4f2 100644 --- a/public/app/plugins/datasource/cloudwatch/mocks/dashboardOnLoadedEvent.ts +++ b/public/app/plugins/datasource/cloudwatch/mocks/dashboardOnLoadedEvent.ts @@ -2,7 +2,7 @@ import { DashboardLoadedEvent } from '@grafana/data'; import { CloudWatchQuery } from '../types'; -const baseLogsQuery = { +const baseLegacyLogsQuery = { datasource: { type: 'cloudwatch', uid: 'P7DC3E4760CFAC4AP', @@ -17,6 +17,15 @@ const baseLogsQuery = { statsGroups: [], }; +const baseLogsQuery = { + ...baseLegacyLogsQuery, + logGroups: [ + { arn: 'arn:test', name: 'log-group-1' }, + { arn: 'arn:test2', name: 'log-group-2' }, + ], + logGroupNames: undefined, +}; + export const CloudWatchDashboardLoadedEvent = new DashboardLoadedEvent({ dashboardId: 'dashboard123', orgId: 1, @@ -474,6 +483,9 @@ export const CloudWatchDashboardLoadedEvent = new DashboardLoadedEvent({ sqlExpression: '', statistic: 'Average', }, + { + ...baseLegacyLogsQuery, + }, { ...baseLogsQuery, }, @@ -779,6 +791,22 @@ export const CloudWatchDashboardLoadedEvent = new DashboardLoadedEvent({ sqlExpression: '', statistic: '', }, + { + refId: 'A', + region: 'default', + queryMode: 'Logs', + logsMode: 'Anomalies', + anomalyDetectionARN: '', + suppressionState: 'suppressed', + }, + { + refId: 'A', + region: 'default', + queryMode: 'Logs', + logsMode: 'Anomalies', + anomalyDetectionARN: '', + suppressionState: 'all', + }, ] as CloudWatchQuery[], }, }); diff --git a/public/app/plugins/datasource/cloudwatch/tracking.test.ts b/public/app/plugins/datasource/cloudwatch/tracking.test.ts index 822cf07a5d1..f66f0a2ad25 100644 --- a/public/app/plugins/datasource/cloudwatch/tracking.test.ts +++ b/public/app/plugins/datasource/cloudwatch/tracking.test.ts @@ -27,10 +27,11 @@ describe('onDashboardLoadedHandler', () => { dashboard_id: 'dashboard123', grafana_version: 'v9.0.0', org_id: 1, - logs_queries_count: 5, - logs_cwli_queries_count: 2, + logs_queries_count: 8, + logs_cwli_queries_count: 3, logs_sql_queries_count: 1, logs_ppl_queries_count: 2, + log_anomalies_queries_count: 2, metrics_queries_count: 21, metrics_query_builder_count: 3, metrics_query_code_count: 4, diff --git a/public/app/plugins/datasource/cloudwatch/tracking.ts b/public/app/plugins/datasource/cloudwatch/tracking.ts index 4bf91191f1e..51a4559ee1e 100644 --- a/public/app/plugins/datasource/cloudwatch/tracking.ts +++ b/public/app/plugins/datasource/cloudwatch/tracking.ts @@ -1,13 +1,15 @@ import { DashboardLoadedEvent } from '@grafana/data'; import { config, reportInteraction } from '@grafana/runtime'; -import { isCloudWatchLogsQuery, isCloudWatchMetricsQuery } from './guards'; +import { isCloudWatchLogsQuery, isCloudWatchMetricsQuery, isLogsAnomaliesQuery } from './guards'; import { migrateMetricQuery } from './migrations/metricQueryMigrations'; import pluginJson from './plugin.json'; import { + CloudWatchLogsAnomaliesQuery, CloudWatchLogsQuery, CloudWatchMetricsQuery, CloudWatchQuery, + LogsMode, LogsQueryLanguage, MetricEditorMode, MetricQueryType, @@ -31,6 +33,9 @@ type CloudWatchOnDashboardLoadedTrackingEvent = { /* The number of Logs queries that use PPL language */ logs_ppl_queries_count: number; + /* The number of log anomalies queries */ + log_anomalies_queries_count: number; + /* The number of CloudWatch metrics queries present in the dashboard*/ metrics_queries_count: number; @@ -77,7 +82,8 @@ export const onDashboardLoadedHandler = ({ return; } - let logsQueries: CloudWatchLogsQuery[] = []; + let logsInsightsQueries: CloudWatchLogsQuery[] = []; + let logAnomaliesQueries: CloudWatchLogsAnomaliesQuery[] = []; let metricsQueries: CloudWatchMetricsQuery[] = []; for (const query of cloudWatchQueries) { @@ -85,8 +91,12 @@ export const onDashboardLoadedHandler = ({ continue; } - if (isCloudWatchLogsQuery(query)) { - query.logGroupNames?.length && logsQueries.push(query); + const isLogsInsightsQuery = + isCloudWatchLogsQuery(query) && (!query.logsMode || query.logsMode === LogsMode.Insights); + if (isLogsInsightsQuery) { + (query.logGroupNames?.length || query.logGroups?.length) && logsInsightsQueries.push(query); + } else if (isLogsAnomaliesQuery(query)) { + logAnomaliesQueries.push(query); } else if (isCloudWatchMetricsQuery(query)) { const migratedQuery = migrateMetricQuery(query); filterMetricsQuery(migratedQuery) && metricsQueries.push(query); @@ -97,12 +107,13 @@ export const onDashboardLoadedHandler = ({ grafana_version: grafanaVersion, dashboard_id: dashboardId, org_id: orgId, - logs_queries_count: logsQueries?.length, - logs_cwli_queries_count: logsQueries?.filter( + logs_queries_count: logsInsightsQueries?.length + logAnomaliesQueries.length, + logs_cwli_queries_count: logsInsightsQueries?.filter( (q) => !q.queryLanguage || q.queryLanguage === LogsQueryLanguage.CWLI ).length, - logs_sql_queries_count: logsQueries?.filter((q) => q.queryLanguage === LogsQueryLanguage.SQL).length, - logs_ppl_queries_count: logsQueries?.filter((q) => q.queryLanguage === LogsQueryLanguage.PPL).length, + logs_sql_queries_count: logsInsightsQueries?.filter((q) => q.queryLanguage === LogsQueryLanguage.SQL).length, + logs_ppl_queries_count: logsInsightsQueries?.filter((q) => q.queryLanguage === LogsQueryLanguage.PPL).length, + log_anomalies_queries_count: logAnomaliesQueries.length, metrics_queries_count: metricsQueries?.length, metrics_search_count: 0, metrics_search_builder_count: 0,