Openmetrics label truncation

Daniel Sabotta daniel.sabotta at securepoint.de
Fri Jun 3 08:13:51 UTC 2022


Hello,

I'm using dovecot 2.3.18 and want to collect metrics with prometheus via openmetrics.

I need to label the metrics with the destination host name.
The configuration works fine, but the label value is truncated after 32 chars (and a '...' is added).

My config:

service stats {
   inet_listener http {
     port = 9323
   }
}

metric my_metric {
   filter = event=smtp_client_transaction_finished
   group_by = dest_host status_code
}

I wrote a simple patch, that fixes that for me:

diff --git a/src/stats/stats-metrics.c b/src/stats/stats-metrics.c
index 877c142546..30126563ff 100644
--- a/src/stats/stats-metrics.c
+++ b/src/stats/stats-metrics.c
@@ -357,7 +357,7 @@ stats_metric_sub_metric_alloc(struct metric *metric, const char *name, pool_t po
  	array_append_zero(&fields);
  	sub_metric = stats_metric_alloc(pool, metric->name, metric->set,
  					array_idx(&fields, 0));
-	sub_metric->sub_name = p_strdup(pool, str_sanitize_utf8(name, 32));
+	sub_metric->sub_name = p_strdup(pool, str_sanitize_utf8(name, 63));
  	array_append(&metric->sub_metrics, &sub_metric, 1);
  	return sub_metric;
  }


Why are labels truncated after 32?
Is there a reason I do not see?
I found no reasons in the openmetrics specification [1].


Thanks in advance

Daniel


More information about the dovecot mailing list