Software /
code /
prosody-modules
Annotate
mod_measure_stanza_counts/mod_measure_stanza_counts.lua @ 5874:0358fcf14cd6
mod_debug_traceback: Remove direct POSIX signal handling, require Prosody 0.12+
Hooking an event is safer than directly hooking signals
For context see Prosody trunk rev 69faf3552d52
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sat, 02 Mar 2024 14:42:27 +0100 |
parent | 4559:33b1b6ff23d8 |
rev | line source |
---|---|
2787
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 |
4559
33b1b6ff23d8
mod_measure_stanza_counts: port to new metrics API
Jonas Schäfer <jonas@wielicki.name>
parents:
2788
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:
2788
diff
changeset
|
6 "counter", "received", "", |
33b1b6ff23d8
mod_measure_stanza_counts: port to new metrics API
Jonas Schäfer <jonas@wielicki.name>
parents:
2788
diff
changeset
|
7 "Stanzas received by Prosody", |
33b1b6ff23d8
mod_measure_stanza_counts: port to new metrics API
Jonas Schäfer <jonas@wielicki.name>
parents:
2788
diff
changeset
|
8 { "session_type", "stanza_kind" } |
33b1b6ff23d8
mod_measure_stanza_counts: port to new metrics API
Jonas Schäfer <jonas@wielicki.name>
parents:
2788
diff
changeset
|
9 ) |
33b1b6ff23d8
mod_measure_stanza_counts: port to new metrics API
Jonas Schäfer <jonas@wielicki.name>
parents:
2788
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:
2788
diff
changeset
|
11 "counter", "sent", "", |
33b1b6ff23d8
mod_measure_stanza_counts: port to new metrics API
Jonas Schäfer <jonas@wielicki.name>
parents:
2788
diff
changeset
|
12 "Stanzas sent by prosody", |
33b1b6ff23d8
mod_measure_stanza_counts: port to new metrics API
Jonas Schäfer <jonas@wielicki.name>
parents:
2788
diff
changeset
|
13 { "session_type", "stanza_kind" } |
33b1b6ff23d8
mod_measure_stanza_counts: port to new metrics API
Jonas Schäfer <jonas@wielicki.name>
parents:
2788
diff
changeset
|
14 ) |
33b1b6ff23d8
mod_measure_stanza_counts: port to new metrics API
Jonas Schäfer <jonas@wielicki.name>
parents:
2788
diff
changeset
|
15 |
2787
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 |
4559
33b1b6ff23d8
mod_measure_stanza_counts: port to new metrics API
Jonas Schäfer <jonas@wielicki.name>
parents:
2788
diff
changeset
|
18 local function rate(metric_family) |
2787
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) |
2788
512405077709
mod_measure_stanza_counts: Fix a crash in mod_bosh.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
2787
diff
changeset
|
20 if stanza.attr and not stanza.attr.xmlns and stanza_kinds[stanza.name] then |
4559
33b1b6ff23d8
mod_measure_stanza_counts: port to new metrics API
Jonas Schäfer <jonas@wielicki.name>
parents:
2788
diff
changeset
|
21 metric_family:with_labels(session.type, stanza.name):add(1); |
2787
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) |
4559
33b1b6ff23d8
mod_measure_stanza_counts: port to new metrics API
Jonas Schäfer <jonas@wielicki.name>
parents:
2788
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:
2788
diff
changeset
|
29 filters.add_filter(session, "stanzas/out", rate(stanzas_out)); |
2787
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); |