From: Florian Forster Date: Wed, 13 Dec 2023 22:18:44 +0000 (+0100) Subject: Add support for resource attributes. X-Git-Tag: 6.0.0-rc0~17^2~21 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d08f3ba57e0746316109dc236b943ef314d821b3;p=thirdparty%2Fcollectd.git Add support for resource attributes. --- diff --git a/src/utils/format_open_telemetry/format_open_telemetry.cc b/src/utils/format_open_telemetry/format_open_telemetry.cc index 692d22149..6144b4efb 100644 --- a/src/utils/format_open_telemetry/format_open_telemetry.cc +++ b/src/utils/format_open_telemetry/format_open_telemetry.cc @@ -125,40 +125,26 @@ static void set_instrumentation_scope(ScopeMetrics *sm) { is->set_version(PACKAGE_VERSION); } -static void set_scope_metrics(ResourceMetrics *rm, metric_family_t const **fam, - size_t fam_num) { +static void add_scope_metrics(ResourceMetrics *rm, metric_family_t const *fam) { ScopeMetrics *sm = rm->add_scope_metrics(); set_instrumentation_scope(sm); - - for (size_t i = 0; i < fam_num; i++) { - add_metric(sm, fam[i]); - } -} - -ResourceMetrics * -format_open_telemetry_resource_metrics_serialized(metric_family_t const **fam, - size_t fam_num) { - ResourceMetrics *rm = new ResourceMetrics(); - - set_scope_metrics(rm, fam, fam_num); - return rm; + add_metric(sm, fam); } -int format_open_telemetry_resource_metrics_serialized( - strbuf_t *sb, metric_family_t const **fam, size_t fam_num) { - ResourceMetrics rm; +static void init_resource_metrics(ResourceMetrics *rm, + metric_family_t const *fam) { + Resource *res = rm->resource(); + for (size_t i = 0; i < fam->resource.num; i++) { + label_pair_t *l = fam->resource.ptr + i; - set_scope_metrics(&rm, fam, fam_num); - - std::string serialization; - bool ok = rm.SerializeToString(&serialization); - if (!ok) { - return -1; + KeyValue *kv = res->add_attributes(); + kv->set_key(l->name); + AnyValue *v = kv->mutable_value(); + v->set_string_value(l->value); } - strbuf_print(sb, serialization.c_str()); - return 0; + add_scope_metrics(rm, fam); } ExportMetricsServiceRequest * @@ -166,8 +152,10 @@ format_open_telemetry_export_metrics_service_request( metric_family_t const **fam, size_t fam_num) { ExportMetricsServiceRequest *req = new ExportMetricsServiceRequest(); - ResourceMetrics *rm = req->add_resource_metrics(); - set_scope_metrics(rm, fam, fam_num); + for (size_t i = 0; i < fam_num; i++) { + ResourceMetrics *rm = req->add_resource_metrics(); + init_resource_metrics(rm, fam[i]); + } return req; } diff --git a/src/utils/format_open_telemetry/format_open_telemetry.h b/src/utils/format_open_telemetry/format_open_telemetry.h index 611d1aa7a..52b109e93 100644 --- a/src/utils/format_open_telemetry/format_open_telemetry.h +++ b/src/utils/format_open_telemetry/format_open_telemetry.h @@ -34,19 +34,12 @@ extern "C" { #include "collectd.h" #include "metric.h" -int format_open_telemetry_resource_metrics_serialized( - strbuf_t *sb, metric_family_t const **fam, size_t fam_num); - #ifdef __cplusplus } #include "opentelemetry/proto/metrics/v1/metrics.pb.h" #include "opentelemetry/proto/collector/metrics/v1/metrics_service.pb.h" -opentelemetry::proto::metrics::v1::ResourceMetrics * -format_open_telemetry_resource_metrics_serialized(metric_family_t const **fam, - size_t fam_num); - opentelemetry::proto::collector::metrics::v1::ExportMetricsServiceRequest * format_open_telemetry_export_metrics_service_request( metric_family_t const **fam, size_t fam_num);