]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Fix] Use double type for rspamd_scan_time_average Prometheus metric
authorVsevolod Stakhov <vsevolod@rspamd.com>
Wed, 3 Dec 2025 13:33:14 +0000 (13:33 +0000)
committerVsevolod Stakhov <vsevolod@rspamd.com>
Wed, 3 Dec 2025 13:33:31 +0000 (13:33 +0000)
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.

src/libserver/worker_util.c
src/libserver/worker_util.h

index fdcc5a4b3e085ef1c384d9cc6e36ef1c88beaed6..b72ee17386e56d9952fcbfec6b7cf064b2433a95 100644 (file)
@@ -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",
index b58a43f7fc56b8b4f1a80aebaf7909b8acf6acc0..3d096cbbadcfe720e2e25fedd9388b6bca07e219 100644 (file)
@@ -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