Software /
code /
prosody-modules
File
mod_measure_client_presence/mod_measure_client_presence.lua @ 6202:6d5a19bdd718
mod_openid, mod_json_streams: Remove modules depending on obsolete net.httpserver API
These have not been updated for a long time and do not work with Prosody
versions from recent years, which is a good indication they are not being
used.
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Fri, 14 Feb 2025 14:59:14 +0000 |
parent | 6187:5aea64434756 |
line wrap: on
line source
module:set_global(); 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, chat = true, away = true, dnd = true, xa = true, unavailable = true, } module:hook("stats-update", function () local buckets = { available = 0, chat = 0, away = 0, dnd = 0, xa = 0, unavailable = 0, invalid = 0, }; for _, session in pairs(prosody.full_sessions) do local status = "unavailable"; if session.presence then status = session.presence:get_child_text("show") or "available"; end if valid_shows[status] ~= nil then buckets[status] = buckets[status] + 1; else buckets.invalid = buckets.invalid + 1; end end statsmanager.cork(); measure_presences:clear(); for bucket, count in pairs(buckets) do measure_presences:with_labels(bucket):add(count); end statsmanager.uncork(); end)