From 86ece0d83e0152fb7886e0f13ab57b93ab30c0f5 Mon Sep 17 00:00:00 2001 From: Florian Forster Date: Tue, 7 Apr 2026 22:38:44 +0200 Subject: [PATCH 1/2] feat(metrics): Use default resource labels for metrics. Previously, metrics were reported without the resource labels set via `defaultResource().set()`, using a set of built-in defaults (`service.name`, `service.instance.id`, and `host.name`) instead. This changes the behavior if default resource labels are set and uses those resource labels instead. If no default resource labels are set, the previous behavior is retained for (limited) backwards compatibility. Note on implementation: The `static` keyword was removed from `defaultResource()` to enable correct linking. With `static`, each compilation unit allocates its own set of resource labels, which is not intended. --- include/OtelDefaults.h | 4 +--- src/OtelMetrics.cpp | 6 ++++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/include/OtelDefaults.h b/include/OtelDefaults.h index 7222057..7cfde02 100644 --- a/include/OtelDefaults.h +++ b/include/OtelDefaults.h @@ -138,13 +138,11 @@ struct OTelResourceConfig { // ------------------------------------------------------------------------------------------------- /** Default resource for general use (metrics/logs/etc.) */ -static inline OTelResourceConfig& defaultResource() { +inline OTelResourceConfig& defaultResource() { static OTelResourceConfig rc; return rc; } - } // namespace OTel #endif // OTEL_DEFAULTS_H - diff --git a/src/OtelMetrics.cpp b/src/OtelMetrics.cpp index 36fcbc1..50f9e02 100644 --- a/src/OtelMetrics.cpp +++ b/src/OtelMetrics.cpp @@ -20,6 +20,12 @@ static void addPointAttributes(JsonArray& attrArray, } static void addCommonResource(JsonObject& resource) { + auto &res = OTel::defaultResource(); + if (!res.attrs.empty()) { + res.addResourceAttributes(resource); + return; + } + JsonArray rattrs = resource["attributes"].to(); addResAttr(rattrs, "service.name", defaultServiceName()); addResAttr(rattrs, "service.instance.id", defaultServiceInstanceId()); From dddd74f785501c6ecbdbf62b6f8e4189cb0420a0 Mon Sep 17 00:00:00 2001 From: Florian Forster Date: Tue, 7 Apr 2026 22:56:43 +0200 Subject: [PATCH 2/2] refactor(metrics): Use `OTelResourceConfig.empty()` accessor. --- src/OtelMetrics.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/OtelMetrics.cpp b/src/OtelMetrics.cpp index 50f9e02..41f8eb4 100644 --- a/src/OtelMetrics.cpp +++ b/src/OtelMetrics.cpp @@ -21,7 +21,7 @@ static void addPointAttributes(JsonArray& attrArray, static void addCommonResource(JsonObject& resource) { auto &res = OTel::defaultResource(); - if (!res.attrs.empty()) { + if (!res.empty()) { res.addResourceAttributes(resource); return; }