From: Florian Forster Date: Sat, 16 Dec 2023 13:10:11 +0000 (+0100) Subject: format_json: Update `format_json_open_telemetry` to use resource metrics. X-Git-Tag: 6.0.0-rc0~18^2~10 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1eda689b720df940e97bf7854214ad85a4fc2703;p=thirdparty%2Fcollectd.git format_json: Update `format_json_open_telemetry` to use resource metrics. --- diff --git a/Makefile.am b/Makefile.am index 97a737902..18fdc3e33 100644 --- a/Makefile.am +++ b/Makefile.am @@ -477,7 +477,9 @@ noinst_LTLIBRARIES += libformat_json.la libformat_json_la_SOURCES = \ src/utils/format_json/format_json.c \ src/utils/format_json/format_json.h \ - src/utils/format_json/open_telemetry.c + src/utils/format_json/open_telemetry.c \ + src/utils/resource_metrics/resource_metrics.c \ + src/utils/resource_metrics/resource_metrics.h libformat_json_la_CPPFLAGS = $(AM_CPPFLAGS) libformat_json_la_LDFLAGS = $(AM_LDFLAGS) libformat_json_la_LIBADD = libmetric.la diff --git a/src/utils/format_json/format_json.h b/src/utils/format_json/format_json.h index 341995315..082273147 100644 --- a/src/utils/format_json/format_json.h +++ b/src/utils/format_json/format_json.h @@ -30,6 +30,7 @@ #include "collectd.h" #include "plugin.h" +#include "utils/resource_metrics/resource_metrics.h" #include "utils/strbuf/strbuf.h" #ifndef JSON_GAUGE_FORMAT @@ -48,7 +49,7 @@ int format_json_metric_family(strbuf_t *buf, metric_family_t const *fam, int format_json_notification(char *buffer, size_t buffer_size, notification_t const *n); -int format_json_open_telemetry(strbuf_t *buf, metric_family_t const **families, - size_t families_num); +int format_json_open_telemetry(strbuf_t *buf, + resource_metrics_set_t const *set); #endif /* UTILS_FORMAT_JSON_H */ diff --git a/src/utils/format_json/open_telemetry.c b/src/utils/format_json/open_telemetry.c index 1e45f144a..1404ae14a 100644 --- a/src/utils/format_json/open_telemetry.c +++ b/src/utils/format_json/open_telemetry.c @@ -219,25 +219,27 @@ static int resource(yajl_gen g, label_set_t res) { return 0; } -static int add_resource_metric(yajl_gen g, metric_family_t const *fam) { +static int add_resource_metric(yajl_gen g, resource_metrics_t const *rm) { CHECK(yajl_gen_map_open(g)); /* BEGIN ResourceMetrics */ - if (fam->resource.num > 0) { + if (rm->resource.num > 0) { CHECK(json_add_string(g, "resource")); - CHECK(resource(g, fam->resource)); + CHECK(resource(g, rm->resource)); } CHECK(json_add_string(g, "scopeMetrics")); CHECK(yajl_gen_array_open(g)); - CHECK(scope_metrics(g, fam)); + for (size_t i = 0; i < rm->families_num; i++) { + CHECK(scope_metrics(g, rm->families[i])); + } CHECK(yajl_gen_array_close(g)); CHECK(yajl_gen_map_close(g)); /* END ResourceMetrics */ return 0; } -int format_json_open_telemetry(strbuf_t *buf, metric_family_t const **families, - size_t families_num) { +int format_json_open_telemetry(strbuf_t *buf, + resource_metrics_set_t const *set) { if (buf->pos != 0) { ERROR("format_json_open_telemetry: buffer is not empty."); return EINVAL; @@ -258,9 +260,9 @@ int format_json_open_telemetry(strbuf_t *buf, metric_family_t const **families, CHECK(yajl_gen_array_open(g)); unsigned char const *out = NULL; - for (size_t i = 0; i < families_num; i++) { - metric_family_t const *fam = families[i]; - add_resource_metric(g, fam); + for (size_t i = 0; i < set->num; i++) { + resource_metrics_t const *rm = set->ptr + i; + add_resource_metric(g, rm); } CHECK(yajl_gen_array_close(g));