]> git.ipfire.org Git - thirdparty/collectd.git/commitdiff
format_json: Update `format_json_open_telemetry` to use resource metrics.
authorFlorian Forster <octo@collectd.org>
Sat, 16 Dec 2023 13:10:11 +0000 (14:10 +0100)
committerFlorian Forster <octo@collectd.org>
Wed, 3 Jan 2024 15:39:36 +0000 (16:39 +0100)
Makefile.am
src/utils/format_json/format_json.h
src/utils/format_json/open_telemetry.c

index 97a7379024383fdf4f03c51eb1dfdeb6146f0ec0..18fdc3e332dbaa53a1239198bdc49e8c0cb679b2 100644 (file)
@@ -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
index 3419953159d4a424d2aa43f2c274bf6a4566029a..0822731474127a45c33ac3adfa67d6a8b46a894e 100644 (file)
@@ -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 */
index 1e45f144a7432f6c2915976c994baa39aa7d94cf..1404ae14a340266ef6197f3f90df589dcafca246 100644 (file)
@@ -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));