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
> On 03/06/2022 11:13 Daniel Sabotta <daniel.sabotta at securepoint.de> wrote: > > > 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 > > DanielCan you epxlain us the usecase where you need such long labels? Aki Tuomi