Changeset

6187:5aea64434756

mod_measure_client_presence: Switch to the more modern statistics API
author Link Mauve <linkmauve@linkmauve.fr>
date Tue, 04 Feb 2025 22:38:03 +0100
parents 6186:1cf563a94620
children 6188:3e0bce07f66c
files mod_measure_client_presence/mod_measure_client_presence.lua
diffstat 1 files changed, 8 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/mod_measure_client_presence/mod_measure_client_presence.lua	Tue Feb 04 10:30:33 2025 -0500
+++ b/mod_measure_client_presence/mod_measure_client_presence.lua	Tue Feb 04 22:38:03 2025 +0100
@@ -1,6 +1,8 @@
 module:set_global();
 
-local measure = require"core.statsmanager".measure;
+local statsmanager = require "prosody.core.statsmanager";
+
+local measure_presences = module:metric("gauge", "presence", "client", "Presence show used by clients", {"show"});
 
 local valid_shows = {
 	available = true,
@@ -11,16 +13,6 @@
 	unavailable = true,
 }
 
-local counters = {
-	available = measure("amount", "client_presence.available"),
-	chat = measure("amount", "client_presence.chat"),
-	away = measure("amount", "client_presence.away"),
-	dnd = measure("amount", "client_presence.dnd"),
-	xa = measure("amount", "client_presence.xa"),
-	unavailable = measure("amount", "client_presence.unavailable"),
-	invalid = measure("amount", "client_presence.invalid");
-};
-
 module:hook("stats-update", function ()
 	local buckets = {
 		available = 0,
@@ -31,7 +23,7 @@
 		unavailable = 0,
 		invalid = 0,
 	};
-	for _, session in pairs(full_sessions) do
+	for _, session in pairs(prosody.full_sessions) do
 		local status = "unavailable";
 		if session.presence then
 			status = session.presence:get_child_text("show") or "available";
@@ -42,7 +34,10 @@
 			buckets.invalid = buckets.invalid + 1;
 		end
 	end
+	statsmanager.cork();
+	measure_presences:clear();
 	for bucket, count in pairs(buckets) do
-		counters[bucket](count)
+		measure_presences:with_labels(bucket):add(count);
 	end
+	statsmanager.uncork();
 end)