CloudWatch: Add tracking for logs anomalies (#113181)
- Fix tracking for new logs queries with logGroups field
This commit is contained in:
@@ -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[],
|
||||
},
|
||||
});
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user