Software /
code /
prosody-modules
Changeset
4559:33b1b6ff23d8
mod_measure_stanza_counts: port to new metrics API
See https://prosody.im/doc/developers/core/statsmanager#metric
author | Jonas Schäfer <jonas@wielicki.name> |
---|---|
date | Thu, 20 May 2021 15:25:07 +0200 |
parents | 4558:8e58a1b78336 |
children | 4560:724003f24308 |
files | mod_measure_stanza_counts/README.markdown mod_measure_stanza_counts/mod_measure_stanza_counts.lua |
diffstat | 2 files changed, 16 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- 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
--- 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);