Comparison

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
comparison
equal deleted inserted replaced
5664:52db2da66680 5856:75dee6127829
1 module:set_global();
2
3 local mm = require "core.modulemanager";
4 local sm = require "core.statsmanager";
5
6 local measure_status = sm.metric("gauge", "prosody_module_status", "", "Prosody module status", { "host"; "module" });
7
8 local status_priorities = { error = 3; warn = 2; info = 1; core = 0 };
9
10 function module.add_host(module)
11 local measure = measure_status:with_partial_label(module.host);
12
13 if module.global then
14 measure = measure_status:with_partial_label(":global");
15 end
16
17 -- Already loaded modules
18 local modules = mm.get_modules(module.host);
19 for name, mod in pairs(modules) do
20 measure:with_labels(name):set(status_priorities[mod.module.status_type] or 0);
21 end
22
23 -- TODO hook module load and unload
24
25 -- Future changes
26 module:hook("module-status/updated", function(event)
27 local mod = mm.get_module(event.name);
28 measure:with_labels(event.name):set(status_priorities[mod and mod.module.status_type] or 0);
29 end);
30
31 end
32
33 module:add_host(); -- Initialize global context