# HG changeset patch # User Jonas Schäfer # Date 1621517107 -7200 # Node ID 33b1b6ff23d800c5aaac10ff4e19d61efb50af1d # Parent 8e58a1b783367635a0572d5e13d03c059fa38509 mod_measure_stanza_counts: port to new metrics API See https://prosody.im/doc/developers/core/statsmanager#metric diff -r 8e58a1b78336 -r 33b1b6ff23d8 mod_measure_stanza_counts/README.markdown --- a/mod_measure_stanza_counts/README.markdown Sun May 16 18:39:22 2021 +0200 +++ b/mod_measure_stanza_counts/README.markdown Thu May 20 15:25:07 2021 +0200 @@ -8,4 +8,4 @@ =========== This module measures the number of stanzas handled and reports using -Prosody 0.10 APIs +Prosody 0.12+ APIs diff -r 8e58a1b78336 -r 33b1b6ff23d8 mod_measure_stanza_counts/mod_measure_stanza_counts.lua --- 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);