Mercurial > prosody-modules
annotate mod_measure_cpu/mod_measure_cpu.lua @ 4730:1da4b815d2fe
mod_cloud_notify: Identify (and immediately push) urgent stanzas, e.g. calls
This covers the following things:
- A session that appears online, but has a broken TCP connection
- Clients such as Siskin and Snikket iOS that require a push for calls to work
It allows the stanza to be pushed immediately instead of waiting for the
session to hibernate or an ack to timeout.
It shouldn't break any existing cases.
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Wed, 27 Oct 2021 19:12:03 +0100 |
parents | 2af0301af734 |
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"; |
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
5 local get_time = require "socket".gettime; |
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 |