Annotate

plugins/mod_csi.lua @ 13690:d112eac6a3dc 13.0

prosodyctl: check: Warn about deprecated mod_posix
author Matthew Wild <mwild1@gmail.com>
date Thu, 13 Feb 2025 18:01:15 +0000
parent 13522:ccd6199cc6a2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12977
74b9e05af71e plugins: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 10429
diff changeset
1 local st = require "prosody.util.stanza";
9073
a5daf3f6d588 mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2 local xmlns_csi = "urn:xmpp:csi:0";
a5daf3f6d588 mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3 local csi_feature = st.stanza("csi", { xmlns = xmlns_csi });
a5daf3f6d588 mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4
13025
b7d0c1d75a37 mod_csi: Add metrics, covering changes and totals
Kim Alvefur <zash@zash.se>
parents: 12977
diff changeset
5 local change = module:metric("counter", "changes", "events", "CSI state changes", {"csi_state"});
13521
7fcae9da8934 mod_csi: Use same label name for gauge as for older counter
Kim Alvefur <zash@zash.se>
parents: 13512
diff changeset
6 local count = module:metric("gauge", "state", "sessions", "", { "csi_state" });
13025
b7d0c1d75a37 mod_csi: Add metrics, covering changes and totals
Kim Alvefur <zash@zash.se>
parents: 12977
diff changeset
7
9073
a5daf3f6d588 mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8 module:hook("stream-features", function (event)
13075
82980f6890cd mod_csi: Always advertise feature
Kim Alvefur <zash@zash.se>
parents: 13070
diff changeset
9 if event.origin.username then
9073
a5daf3f6d588 mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10 event.features:add_child(csi_feature);
a5daf3f6d588 mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11 end
a5daf3f6d588 mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
12 end);
a5daf3f6d588 mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
13
a5daf3f6d588 mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
14 function refire_event(name)
a5daf3f6d588 mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
15 return function (event)
a5daf3f6d588 mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
16 if event.origin.username then
9653
91856829f18b mod_csi: Fix copypaste mistake [luacheck]
Kim Alvefur <zash@zash.se>
parents: 9651
diff changeset
17 event.origin.state = event.stanza.name;
13025
b7d0c1d75a37 mod_csi: Add metrics, covering changes and totals
Kim Alvefur <zash@zash.se>
parents: 12977
diff changeset
18 change:with_labels(event.stanza.name):add(1);
9073
a5daf3f6d588 mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
19 module:fire_event(name, event);
a5daf3f6d588 mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
20 return true;
a5daf3f6d588 mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
21 end
a5daf3f6d588 mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
22 end;
a5daf3f6d588 mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
23 end
a5daf3f6d588 mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
24
a5daf3f6d588 mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
25 module:hook("stanza/"..xmlns_csi..":active", refire_event("csi-client-active"));
a5daf3f6d588 mod_csi: Imported from prosody-modules 66b3085ecc49
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
26 module:hook("stanza/"..xmlns_csi..":inactive", refire_event("csi-client-inactive"));
13510
393e265aafba mod_csi: Count how many sessions are using CSI and their state
Kim Alvefur <zash@zash.se>
parents: 13075
diff changeset
27
393e265aafba mod_csi: Count how many sessions are using CSI and their state
Kim Alvefur <zash@zash.se>
parents: 13075
diff changeset
28 module:hook_global("stats-update", function()
393e265aafba mod_csi: Count how many sessions are using CSI and their state
Kim Alvefur <zash@zash.se>
parents: 13075
diff changeset
29 local sessions = prosody.hosts[module.host].sessions;
393e265aafba mod_csi: Count how many sessions are using CSI and their state
Kim Alvefur <zash@zash.se>
parents: 13075
diff changeset
30 if not sessions then return end
13512
0b742bbbb819 mod_csi: Optimize metrics collection (prematurely)
Kim Alvefur <zash@zash.se>
parents: 13511
diff changeset
31 local active, inactive, flushing = 0, 0, 0;
13511
453979e16f2d mod_csi: Rename unused loop variables to '_' [luacheck]
Kim Alvefur <zash@zash.se>
parents: 13510
diff changeset
32 for _, user_session in pairs(sessions) do
453979e16f2d mod_csi: Rename unused loop variables to '_' [luacheck]
Kim Alvefur <zash@zash.se>
parents: 13510
diff changeset
33 for _, session in pairs(user_session.sessions) do
13512
0b742bbbb819 mod_csi: Optimize metrics collection (prematurely)
Kim Alvefur <zash@zash.se>
parents: 13511
diff changeset
34 if session.state == "inactive" then
0b742bbbb819 mod_csi: Optimize metrics collection (prematurely)
Kim Alvefur <zash@zash.se>
parents: 13511
diff changeset
35 inactive = inactive + 1;
0b742bbbb819 mod_csi: Optimize metrics collection (prematurely)
Kim Alvefur <zash@zash.se>
parents: 13511
diff changeset
36 elseif session.state == "active" then
13522
ccd6199cc6a2 mod_csi: Update correct variables when counting states
Kim Alvefur <zash@zash.se>
parents: 13521
diff changeset
37 active = active + 1;
13512
0b742bbbb819 mod_csi: Optimize metrics collection (prematurely)
Kim Alvefur <zash@zash.se>
parents: 13511
diff changeset
38 elseif session.state == "flushing" then
13522
ccd6199cc6a2 mod_csi: Update correct variables when counting states
Kim Alvefur <zash@zash.se>
parents: 13521
diff changeset
39 flushing = flushing + 1;
13510
393e265aafba mod_csi: Count how many sessions are using CSI and their state
Kim Alvefur <zash@zash.se>
parents: 13075
diff changeset
40 end
393e265aafba mod_csi: Count how many sessions are using CSI and their state
Kim Alvefur <zash@zash.se>
parents: 13075
diff changeset
41 end
393e265aafba mod_csi: Count how many sessions are using CSI and their state
Kim Alvefur <zash@zash.se>
parents: 13075
diff changeset
42 end
13512
0b742bbbb819 mod_csi: Optimize metrics collection (prematurely)
Kim Alvefur <zash@zash.se>
parents: 13511
diff changeset
43 count:with_labels("active"):set(active);
0b742bbbb819 mod_csi: Optimize metrics collection (prematurely)
Kim Alvefur <zash@zash.se>
parents: 13511
diff changeset
44 count:with_labels("inactive"):set(inactive);
0b742bbbb819 mod_csi: Optimize metrics collection (prematurely)
Kim Alvefur <zash@zash.se>
parents: 13511
diff changeset
45 count:with_labels("flushing"):set(flushing);
13510
393e265aafba mod_csi: Count how many sessions are using CSI and their state
Kim Alvefur <zash@zash.se>
parents: 13075
diff changeset
46 end);