001package io.prometheus.metrics.exporter.opentelemetry; 002 003import java.util.HashMap; 004import java.util.Map; 005 006public class ResourceAttributes { 007 008 // TODO: The OTel Java instrumentation also has a SpringBootServiceNameDetector, we should port this over. 009 public static Map<String, String> get(String instrumentationScopeName, 010 String serviceName, 011 String serviceNamespace, 012 String serviceInstanceId, 013 String serviceVersion, 014 Map<String, String> configuredResourceAttributes) { 015 Map<String, String> result = new HashMap<>(); 016 ResourceAttributesFromOtelAgent.addIfAbsent(result, instrumentationScopeName); 017 putIfAbsent(result, "service.name", serviceName); 018 putIfAbsent(result, "service.namespace", serviceNamespace); 019 putIfAbsent(result, "service.instance.id", serviceInstanceId); 020 putIfAbsent(result, "service.version", serviceVersion); 021 for (Map.Entry<String, String> attribute : configuredResourceAttributes.entrySet()) { 022 putIfAbsent(result, attribute.getKey(), attribute.getValue()); 023 } 024 ResourceAttributesFromJarFileName.addIfAbsent(result); 025 ResourceAttributesDefaults.addIfAbsent(result); 026 return result; 027 } 028 029 private static void putIfAbsent(Map<String, String> result, String key, String value) { 030 if (value != null) { 031 result.putIfAbsent(key, value); 032 } 033 } 034}