Skip to content

Commit d05e488

Browse files
committed
fallback for default otel unknown service
1 parent c6ed9c9 commit d05e488

File tree

2 files changed

+21
-6
lines changed
  • awsagentprovider/src
    • main/java/software/amazon/opentelemetry/javaagent/providers/exporter/aws/metrics/common
    • test/java/software/amazon/opentelemetry/javaagent/providers/exporter/aws/metrics

2 files changed

+21
-6
lines changed

awsagentprovider/src/main/java/software/amazon/opentelemetry/javaagent/providers/exporter/aws/metrics/common/MetricRecord.java

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,19 @@
4646
public class MetricRecord {
4747
private static final Logger logger = Logger.getLogger(MetricRecord.class.getName());
4848

49+
// https://github.com/open-telemetry/opentelemetry-java/blob/04642a06138a889fce8a8224f489c14d9d55cf3f/sdk/common/src/main/java/io/opentelemetry/sdk/resources/Resource.java#L52C43-L52C63
4950
private static final String SERVICE_DIMENSION_NAME = "Service";
5051
private static final String ENVIRONMENT_DIMENSION_NAME = "Environment";
52+
53+
private static final String OTEL_UNKNOWN_SERVICE = "unknown_service:java";
5154
private static final String UNKNOWN_SERVICE = "UnknownService";
5255
private static final String UNKNOWN_ENVIRONMENT = "generic:default";
5356

57+
private static final String EC2_DEFAULT_ENVIRONMENT = "ec2:default";
58+
private static final String ECS_DEFAULT_ENVIRONMENT = "ecs:default";
59+
private static final String EKS_DEFAULT_ENVIRONMENT = "eks:default";
60+
private static final String LAMBDA_DEFAULT_ENVIRONMENT = "lambda:default";
61+
5462
// CloudWatch EMF supported units
5563
// Ref: https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html
5664
private static final Set<String> EMF_SUPPORTED_UNITS =
@@ -241,7 +249,9 @@ private static void addApplicationSignalsDimensions(
241249
List<String> dimensionNames, Map<String, Object> emfLog, Attributes resourceAttributes) {
242250
if (!MetricRecord.hasDimension(dimensionNames, SERVICE_DIMENSION_NAME)) {
243251
String serviceName = resourceAttributes.get(ServiceAttributes.SERVICE_NAME);
244-
if (serviceName == null || serviceName.isEmpty()) {
252+
if (serviceName == null
253+
|| serviceName.isEmpty()
254+
|| serviceName.equals(OTEL_UNKNOWN_SERVICE)) {
245255
serviceName = UNKNOWN_SERVICE;
246256
}
247257
dimensionNames.add(SERVICE_DIMENSION_NAME);
@@ -289,13 +299,13 @@ private static String getDeploymentEnvironment(Attributes resourceAttributes) {
289299
if (platform != null && !platform.isEmpty()) {
290300
switch (platform) {
291301
case AWS_EC2:
292-
return "ec2:default";
302+
return EC2_DEFAULT_ENVIRONMENT;
293303
case AWS_ECS:
294-
return "ecs:default";
304+
return ECS_DEFAULT_ENVIRONMENT;
295305
case AWS_EKS:
296-
return "eks:default";
306+
return EKS_DEFAULT_ENVIRONMENT;
297307
case AWS_LAMBDA:
298-
return "lambda:default";
308+
return LAMBDA_DEFAULT_ENVIRONMENT;
299309
default:
300310
return UNKNOWN_ENVIRONMENT;
301311
}

awsagentprovider/src/test/java/software/amazon/opentelemetry/javaagent/providers/exporter/aws/metrics/BaseEmfExporterTest.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -432,7 +432,12 @@ static List<Arguments> applicationSignalsDimensionsProvider() {
432432
"cloud.platform",
433433
"aws_ec2"),
434434
"override-service",
435-
"custom-env"));
435+
"custom-env"),
436+
// service.name set to unknown_service:java, should default to UnknownService
437+
Arguments.of(
438+
Map.of("service.name", "unknown_service:java", "cloud.platform", "aws_ec2"),
439+
"UnknownService",
440+
"ec2:default"));
436441
}
437442

438443
static List<Arguments> metricsGroupingProvider() {

0 commit comments

Comments
 (0)