@cryptotaxi247 / netdata-1 / commits / 98abae8a7

Apply a label prefix for netdata labels (#15860)

kevin-fwu committed Aug 21, 2023 at 17:07 UTC 98abae8a7df77b6e7a1856472374a11dc5627a18
4 files changed +14 -6
exporting/exporting.conf
+1
@@ -12,6 +12,7 @@
12 # send charts matching = *
13 # send hosts matching = localhost *
14 # prefix = netdata
15 + # netdata label prefix =
16
17 # An example configuration for graphite, json, opentsdb exporting connectors
18 # [graphite:my_graphite_instance]
exporting/exporting_engine.h
+1
@@ -74,6 +74,7 @@ struct instance_config {
74 const char *username;
75 const char *password;
76 const char *prefix;
77 + const char *label_prefix;
78 const char *hostname;
79
80 int update_every;
exporting/prometheus/prometheus.c
+10 -6
@@ -335,6 +335,7 @@ void format_host_labels_prometheus(struct instance *instance, RRDHOST *host)
335
336 struct format_prometheus_chart_label_callback {
337 BUFFER *labels_buffer;
338 + const char *labels_prefix;
339 };
340
341 static int format_prometheus_chart_label_callback(const char *name, const char *value, RRDLABEL_SRC ls, void *data) {
@@ -368,7 +369,7 @@ void format_chart_labels_prometheus(struct format_prometheus_chart_label_callbac
369 else {
370 plabel->labels_buffer = buffer_create(1024, NULL);
371 }
371 - buffer_sprintf(plabel->labels_buffer, "chart=\"%s\",dimension=\"%s\",family=\"%s\"", chart, dim, family);
372 + buffer_sprintf(plabel->labels_buffer, "%1$schart=\"%2$s\",%1$sdimension=\"%3$s\",%1$sfamily=\"%4$s\"", plabel->labels_prefix, chart, dim, family);
373
374 rrdlabels_walkthrough_read(st->rrdlabels, format_prometheus_chart_label_callback, plabel);
375 }
@@ -454,6 +455,7 @@ static int print_host_variables_callback(const DICTIONARY_ITEM *item __maybe_unu
455
456 struct gen_parameters {
457 const char *prefix;
458 + const char *labels_prefix;
459 char *context;
460 char *suffix;
461
@@ -525,12 +527,12 @@ static void generate_as_collected_prom_metric(BUFFER *wb,
527 if (!homogeneous)
528 buffer_sprintf(wb, "_%s", p->dimension);
529
528 - buffer_sprintf(wb, "%s{chart=\"%s\"", p->suffix, p->chart);
530 + buffer_sprintf(wb, "%s{%schart=\"%s\"", p->suffix, p->labels_prefix, p->chart);
531
532 if (homogeneous)
531 - buffer_sprintf(wb, ",dimension=\"%s\"", p->dimension);
533 + buffer_sprintf(wb, ",%sdimension=\"%s\"", p->labels_prefix, p->dimension);
534
533 - buffer_sprintf(wb, ",family=\"%s\"", p->family);
535 + buffer_sprintf(wb, ",%sfamily=\"%s\"", p->labels_prefix, p->family);
536
537 rrdlabels_walkthrough_read(chart_labels, format_prometheus_chart_label_callback, &local_label);
538
@@ -598,7 +600,7 @@ static void rrd_stats_api_v1_charts_allmetrics_prometheus(
600
601 char labels[PROMETHEUS_LABELS_MAX + 1] = "";
602 if (allhosts) {
601 - snprintfz(labels, PROMETHEUS_LABELS_MAX, ",instance=\"%s\"", hostname);
603 + snprintfz(labels, PROMETHEUS_LABELS_MAX, ",%sinstance=\"%s\"", instance->config.label_prefix, hostname);
604 }
605
606 if (instance->labels_buffer)
@@ -624,8 +626,9 @@ static void rrd_stats_api_v1_charts_allmetrics_prometheus(
626 // for each chart
627 RRDSET *st;
628
627 - static struct format_prometheus_chart_label_callback plabels = {
629 + struct format_prometheus_chart_label_callback plabels = {
630 .labels_buffer = NULL,
631 + .labels_prefix = instance->config.label_prefix,
632 };
633
634 STRING *prometheus = string_strdupz("prometheus");
@@ -684,6 +687,7 @@ static void rrd_stats_api_v1_charts_allmetrics_prometheus(
687
688 struct gen_parameters p;
689 p.prefix = prefix;
690 + p.labels_prefix = instance->config.label_prefix;
691 p.context = context;
692 p.suffix = suffix;
693 p.chart = chart;
exporting/read_config.c
+2
@@ -272,6 +272,8 @@ struct engine *read_exporting_config()
272
273 prometheus_exporter_instance->config.prefix = prometheus_config_get("prefix", global_exporting_prefix);
274
275 + prometheus_exporter_instance->config.label_prefix = prometheus_config_get("netdata label prefix", "");
276 +
277 prometheus_exporter_instance->config.initialized = 1;
278 }
279