Software /
code /
prosody-modules
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)