Mercurial > prosody-modules
annotate mod_measure_cpu/mod_measure_cpu.lua @ 6556:7477e97a9045
mod_firewall: Apply pre-reload state before re-reading config
This change makes load/reload a bit more robust. module.load() runs before
module.restore() and it reads from the config and updates the state (if
needed).
However, after this, module.restore() could run and apply the old state again.
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Sun, 24 May 2026 20:03:20 +0100 |
| parents | 8a6cc311bbfc |
| children |
| rev | line source |
|---|---|
|
1677
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
1 module:set_global(); |
|
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
2 |
|
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
3 local measure = require"core.statsmanager".measure; |
|
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
4 local mt = require"util.multitable"; |
|
6391
8a6cc311bbfc
mod_measure_cpu: Use util.time instead of prosody.util.time, for 0.12 compatibility
Link Mauve <linkmauve@linkmauve.fr>
parents:
6377
diff
changeset
|
5 local get_time = require "util.time".now; |
|
1677
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
6 local get_clock = os.clock; |
|
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
7 |
|
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
8 local measure_cpu_now = measure("amount", "cpu.percent"); -- Current percentage |
|
4039
2af0301af734
mod_measure_cpu: Specify units of total CPU time as seconds
Kim Alvefur <zash@zash.se>
parents:
3444
diff
changeset
|
9 local measure_cpu_total = measure("counter", "cpu.clock", { units = "seconds" }); |
|
1677
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
10 |
|
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
11 local last_cpu_wall, last_cpu_clock; |
|
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
12 module:hook("stats-update", function () |
|
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
13 local new_wall, new_clock = get_time(), get_clock(); |
|
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
14 local pc = 0; |
|
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
15 if last_cpu_wall then |
|
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
16 pc = 100/((new_wall-last_cpu_wall)/(new_clock-last_cpu_clock)); |
|
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
17 end |
|
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
18 last_cpu_wall, last_cpu_clock = new_wall, new_clock; |
|
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
19 |
|
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
20 measure_cpu_now(pc); |
|
3444
e0fb97f47212
mod_measure_cpu: Rename counter metric to avoid name clash (thanks pep.)
Kim Alvefur <zash@zash.se>
parents:
3431
diff
changeset
|
21 measure_cpu_total(new_clock); |
|
1677
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
22 end); |
|
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
23 |
|
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
24 -- Some metadata for mod_munin |
|
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
25 local munin_meta = mt.new(); munin_meta.data = module:shared"munin/meta"; |
|
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
26 local key = "global_cpu_amount"; |
|
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
27 |
|
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
28 munin_meta:set(key, "", "graph_args", "--base 1000 -r --lower-limit 0 --upper-limit 100"); |
|
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
29 munin_meta:set(key, "", "graph_title", "Prosody CPU Usage"); |
|
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
30 munin_meta:set(key, "", "graph_vlabel", "%"); |
|
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
31 munin_meta:set(key, "", "graph_category", "cpu"); |
|
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
32 |
|
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
33 munin_meta:set(key, "percent", "label", "CPU Usage"); |
|
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
34 munin_meta:set(key, "percent", "min", "0"); |
|
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
35 |
