diff --git a/pkg/query-service/app/cloudintegrations/serviceDefinitions/aws/ec2/integration.json b/pkg/query-service/app/cloudintegrations/serviceDefinitions/aws/ec2/integration.json index 913a44c9f9..f91bb926d5 100644 --- a/pkg/query-service/app/cloudintegrations/serviceDefinitions/aws/ec2/integration.json +++ b/pkg/query-service/app/cloudintegrations/serviceDefinitions/aws/ec2/integration.json @@ -497,6 +497,9 @@ "cloudwatch_metric_stream_filters": [ { "Namespace": "AWS/EC2" + }, + { + "Namespace": "CWAgent" } ] } diff --git a/pkg/query-service/app/http_handler.go b/pkg/query-service/app/http_handler.go index 4a9a62b9b1..e9a94803dc 100644 --- a/pkg/query-service/app/http_handler.go +++ b/pkg/query-service/app/http_handler.go @@ -4242,19 +4242,21 @@ func (aH *APIHandler) calculateAWSIntegrationSvcMetricsConnectionStatus( return nil, nil } - metricsNamespace := strategy.CloudwatchMetricsStreamFilters[0].Namespace - metricsNamespaceParts := strings.Split(metricsNamespace, "/") - if len(metricsNamespaceParts) < 2 { - return nil, model.InternalError(fmt.Errorf( - "unexpected metric namespace: %s", metricsNamespace, - )) + expectedLabelValues := map[string]string{ + "cloud_provider": "aws", + "cloud_account_id": cloudAccountId, } - expectedLabelValues := map[string]string{ - "cloud_provider": "aws", - "cloud_account_id": cloudAccountId, - "service_namespace": metricsNamespaceParts[0], - "service_name": metricsNamespaceParts[1], + metricsNamespace := strategy.CloudwatchMetricsStreamFilters[0].Namespace + metricsNamespaceParts := strings.Split(metricsNamespace, "/") + + if len(metricsNamespaceParts) >= 2 { + expectedLabelValues["service_namespace"] = metricsNamespaceParts[0] + expectedLabelValues["service_name"] = metricsNamespaceParts[1] + } else { + // metrics for single word namespaces like "CWAgent" do not + // have the service_namespace label populated + expectedLabelValues["service_name"] = metricsNamespaceParts[0] } metricNamesCollectedBySvc := []string{} diff --git a/pkg/query-service/tests/integration/signoz_cloud_integrations_test.go b/pkg/query-service/tests/integration/signoz_cloud_integrations_test.go index 7bc22e0d68..12d3cf62a5 100644 --- a/pkg/query-service/tests/integration/signoz_cloud_integrations_test.go +++ b/pkg/query-service/tests/integration/signoz_cloud_integrations_test.go @@ -281,7 +281,7 @@ func TestConfigReturnedWhenAgentChecksIn(t *testing.T) { for _, f := range telemetryCollectionStrategy.AWSMetrics.CloudwatchMetricsStreamFilters { metricStreamNamespaces = append(metricStreamNamespaces, f.Namespace) } - require.Equal([]string{"AWS/EC2", "AWS/RDS"}, metricStreamNamespaces) + require.Equal([]string{"AWS/EC2", "CWAgent", "AWS/RDS"}, metricStreamNamespaces) require.NotNil(telemetryCollectionStrategy.AWSLogs) logGroupPrefixes := []string{}