author | Matthew Wild <mwild1@gmail.com> |
Sat, 15 Oct 2022 19:42:55 +0100 | |
changeset 5075 | bc983da908e6 |
parent 4563 | 33b1b6ff23d8 |
permissions | -rw-r--r-- |
2791
750572f6f59d
mod_measure_stanza_counts: Counts stanzas and reports using 0.10+ statistics API
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
1 |
module:set_global() |
750572f6f59d
mod_measure_stanza_counts: Counts stanzas and reports using 0.10+ statistics API
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
2 |
|
750572f6f59d
mod_measure_stanza_counts: Counts stanzas and reports using 0.10+ statistics API
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
3 |
local filters = require"util.filters"; |
750572f6f59d
mod_measure_stanza_counts: Counts stanzas and reports using 0.10+ statistics API
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
4 |
|
4563
33b1b6ff23d8
mod_measure_stanza_counts: port to new metrics API
Jonas Schäfer <jonas@wielicki.name>
parents:
2792
diff
changeset
|
5 |
local stanzas_in = module:metric( |
33b1b6ff23d8
mod_measure_stanza_counts: port to new metrics API
Jonas Schäfer <jonas@wielicki.name>
parents:
2792
diff
changeset
|
6 |
"counter", "received", "", |
33b1b6ff23d8
mod_measure_stanza_counts: port to new metrics API
Jonas Schäfer <jonas@wielicki.name>
parents:
2792
diff
changeset
|
7 |
"Stanzas received by Prosody", |
33b1b6ff23d8
mod_measure_stanza_counts: port to new metrics API
Jonas Schäfer <jonas@wielicki.name>
parents:
2792
diff
changeset
|
8 |
{ "session_type", "stanza_kind" } |
33b1b6ff23d8
mod_measure_stanza_counts: port to new metrics API
Jonas Schäfer <jonas@wielicki.name>
parents:
2792
diff
changeset
|
9 |
) |
33b1b6ff23d8
mod_measure_stanza_counts: port to new metrics API
Jonas Schäfer <jonas@wielicki.name>
parents:
2792
diff
changeset
|
10 |
local stanzas_out = module:metric( |
33b1b6ff23d8
mod_measure_stanza_counts: port to new metrics API
Jonas Schäfer <jonas@wielicki.name>
parents:
2792
diff
changeset
|
11 |
"counter", "sent", "", |
33b1b6ff23d8
mod_measure_stanza_counts: port to new metrics API
Jonas Schäfer <jonas@wielicki.name>
parents:
2792
diff
changeset
|
12 |
"Stanzas sent by prosody", |
33b1b6ff23d8
mod_measure_stanza_counts: port to new metrics API
Jonas Schäfer <jonas@wielicki.name>
parents:
2792
diff
changeset
|
13 |
{ "session_type", "stanza_kind" } |
33b1b6ff23d8
mod_measure_stanza_counts: port to new metrics API
Jonas Schäfer <jonas@wielicki.name>
parents:
2792
diff
changeset
|
14 |
) |
33b1b6ff23d8
mod_measure_stanza_counts: port to new metrics API
Jonas Schäfer <jonas@wielicki.name>
parents:
2792
diff
changeset
|
15 |
|
2791
750572f6f59d
mod_measure_stanza_counts: Counts stanzas and reports using 0.10+ statistics API
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
16 |
local stanza_kinds = { message = true, presence = true, iq = true }; |
750572f6f59d
mod_measure_stanza_counts: Counts stanzas and reports using 0.10+ statistics API
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
17 |
|
4563
33b1b6ff23d8
mod_measure_stanza_counts: port to new metrics API
Jonas Schäfer <jonas@wielicki.name>
parents:
2792
diff
changeset
|
18 |
local function rate(metric_family) |
2791
750572f6f59d
mod_measure_stanza_counts: Counts stanzas and reports using 0.10+ statistics API
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
19 |
return function (stanza, session) |
2792
512405077709
mod_measure_stanza_counts: Fix a crash in mod_bosh.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
2791
diff
changeset
|
20 |
if stanza.attr and not stanza.attr.xmlns and stanza_kinds[stanza.name] then |
4563
33b1b6ff23d8
mod_measure_stanza_counts: port to new metrics API
Jonas Schäfer <jonas@wielicki.name>
parents:
2792
diff
changeset
|
21 |
metric_family:with_labels(session.type, stanza.name):add(1); |
2791
750572f6f59d
mod_measure_stanza_counts: Counts stanzas and reports using 0.10+ statistics API
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
22 |
end |
750572f6f59d
mod_measure_stanza_counts: Counts stanzas and reports using 0.10+ statistics API
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
23 |
return stanza; |
750572f6f59d
mod_measure_stanza_counts: Counts stanzas and reports using 0.10+ statistics API
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
24 |
end |
750572f6f59d
mod_measure_stanza_counts: Counts stanzas and reports using 0.10+ statistics API
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
25 |
end |
750572f6f59d
mod_measure_stanza_counts: Counts stanzas and reports using 0.10+ statistics API
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
26 |
|
750572f6f59d
mod_measure_stanza_counts: Counts stanzas and reports using 0.10+ statistics API
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
27 |
local function measure_stanza_counts(session) |
4563
33b1b6ff23d8
mod_measure_stanza_counts: port to new metrics API
Jonas Schäfer <jonas@wielicki.name>
parents:
2792
diff
changeset
|
28 |
filters.add_filter(session, "stanzas/in", rate(stanzas_in)); |
33b1b6ff23d8
mod_measure_stanza_counts: port to new metrics API
Jonas Schäfer <jonas@wielicki.name>
parents:
2792
diff
changeset
|
29 |
filters.add_filter(session, "stanzas/out", rate(stanzas_out)); |
2791
750572f6f59d
mod_measure_stanza_counts: Counts stanzas and reports using 0.10+ statistics API
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
30 |
end |
750572f6f59d
mod_measure_stanza_counts: Counts stanzas and reports using 0.10+ statistics API
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
31 |
|
750572f6f59d
mod_measure_stanza_counts: Counts stanzas and reports using 0.10+ statistics API
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
32 |
filters.add_filter_hook(measure_stanza_counts); |