--- a/mod_measure_stanza_counts/mod_measure_stanza_counts.lua Sun May 16 18:39:22 2021 +0200
+++ b/mod_measure_stanza_counts/mod_measure_stanza_counts.lua Thu May 20 15:25:07 2021 +0200
@@ -2,30 +2,31 @@
local filters = require"util.filters";
+local stanzas_in = module:metric(
+ "counter", "received", "",
+ "Stanzas received by Prosody",
+ { "session_type", "stanza_kind" }
+)
+local stanzas_out = module:metric(
+ "counter", "sent", "",
+ "Stanzas sent by prosody",
+ { "session_type", "stanza_kind" }
+)
+
local stanza_kinds = { message = true, presence = true, iq = true };
-local function rate(measures, dir)
+local function rate(metric_family)
return function (stanza, session)
- measures[dir]();
- measures[dir .. "_" .. session.type]();
if stanza.attr and not stanza.attr.xmlns and stanza_kinds[stanza.name] then
- measures[dir .. "_" .. session.type .. "_" .. stanza.name]();
+ metric_family:with_labels(session.type, stanza.name):add(1);
end
return stanza;
end
end
-local measures = setmetatable({}, {
- __index = function (t, name)
- local m = module:measure(name, "rate");
- t[name] = m;
- return m;
- end
-});
-
local function measure_stanza_counts(session)
- filters.add_filter(session, "stanzas/in", rate(measures, "incoming"));
- filters.add_filter(session, "stanzas/out", rate(measures, "outgoing"));
+ filters.add_filter(session, "stanzas/in", rate(stanzas_in));
+ filters.add_filter(session, "stanzas/out", rate(stanzas_out));
end
filters.add_filter_hook(measure_stanza_counts);