File

mod_measure_stanza_counts/mod_measure_stanza_counts.lua @ 4629:0e60ce83205c

mod_s2s_keepalive: Ignore errors from the local server If a stanza can't be delivered and instead an bounce is generated, the origin of the error, when different from the stanza 'from' should be indicated in the 'by' attribute of the <error>, which we look for here so this doesn't count as a successful ping. An error that does come from the remote means we have connectivity, but probably no XEP-0199 handling. This is fine. We care about connectivity, not protocol.
author Kim Alvefur <zash@zash.se>
date Wed, 21 Jul 2021 15:57:13 +0200
parent 4559:33b1b6ff23d8
line wrap: on
line source

module:set_global()

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(metric_family)
	return function (stanza, session)
		if stanza.attr and not stanza.attr.xmlns and stanza_kinds[stanza.name] then
			metric_family:with_labels(session.type, stanza.name):add(1);
		end
		return stanza;
	end
end

local function measure_stanza_counts(session)
	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);