Software /
code /
prosody-modules
Diff
mod_measure_modules/mod_measure_modules.lua @ 5856:75dee6127829 draft
Merge upstream
author | Trần H. Trung <xmpp:trần.h.trung@trung.fun> |
---|---|
date | Tue, 06 Feb 2024 18:32:01 +0700 |
parent | 5691:ecfd7aece33b |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mod_measure_modules/mod_measure_modules.lua Tue Feb 06 18:32:01 2024 +0700 @@ -0,0 +1,33 @@ +module:set_global(); + +local mm = require "core.modulemanager"; +local sm = require "core.statsmanager"; + +local measure_status = sm.metric("gauge", "prosody_module_status", "", "Prosody module status", { "host"; "module" }); + +local status_priorities = { error = 3; warn = 2; info = 1; core = 0 }; + +function module.add_host(module) + local measure = measure_status:with_partial_label(module.host); + + if module.global then + measure = measure_status:with_partial_label(":global"); + end + + -- Already loaded modules + local modules = mm.get_modules(module.host); + for name, mod in pairs(modules) do + measure:with_labels(name):set(status_priorities[mod.module.status_type] or 0); + end + + -- TODO hook module load and unload + + -- Future changes + module:hook("module-status/updated", function(event) + local mod = mm.get_module(event.name); + measure:with_labels(event.name):set(status_priorities[mod and mod.module.status_type] or 0); + end); + +end + +module:add_host(); -- Initialize global context