From: Vsevolod Stakhov Date: Wed, 3 Dec 2025 13:33:14 +0000 (+0000) Subject: [Fix] Use double type for rspamd_scan_time_average Prometheus metric X-Git-Tag: 3.14.2~40 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=69e9f333189604cdd523c0ec4707a0a96c0129e9;p=thirdparty%2Frspamd.git [Fix] Use double type for rspamd_scan_time_average Prometheus metric The metric was always 0 because rspamd_metrics_add_integer() truncated the avg_scan_time double value (typically fractions of a second) to integer. Added rspamd_metrics_add_double() helper and use it for avg_scan_time. --- diff --git a/src/libserver/worker_util.c b/src/libserver/worker_util.c index fdcc5a4b3e..b72ee17386 100644 --- a/src/libserver/worker_util.c +++ b/src/libserver/worker_util.c @@ -2460,11 +2460,11 @@ rspamd_metrics_to_prometheus_string(const ucl_object_t *top) ucl_object_tostring(ucl_object_lookup(top, "config_id"))); - rspamd_metrics_add_integer(&output, top, - "rspamd_scan_time_average", - "gauge", - "Average messages scan time.", - "avg_scan_time"); + rspamd_metrics_add_double(&output, top, + "rspamd_scan_time_average", + "gauge", + "Average messages scan time.", + "avg_scan_time"); rspamd_metrics_add_integer(&output, top, "process_start_time_seconds", "gauge", diff --git a/src/libserver/worker_util.h b/src/libserver/worker_util.h index b58a43f7fc..3d096cbbad 100644 --- a/src/libserver/worker_util.h +++ b/src/libserver/worker_util.h @@ -318,6 +318,20 @@ rspamd_metrics_add_integer(rspamd_fstring_t **output, rspamd_printf_fstring(output, "%s %L\n", name, ucl_object_toint(ucl_object_lookup(top, ucl_key))); } + +static inline void +rspamd_metrics_add_double(rspamd_fstring_t **output, + const ucl_object_t *top, + const char *name, + const char *type, + const char *description, + const char *ucl_key) +{ + rspamd_printf_fstring(output, "# HELP %s %s\n", name, description); + rspamd_printf_fstring(output, "# TYPE %s %s\n", name, type); + rspamd_printf_fstring(output, "%s %f\n", name, + ucl_object_todouble(ucl_object_lookup(top, ucl_key))); +} /** * Convert metrics to the prometheus format * @param top