annotate mod_measure_cpu/mod_measure_cpu.lua @ 5571:ca3c2d11823c

mod_pubsub_feeds: Track latest timestamp seen in feeds instead of last poll This should ensure that an entry that has a publish timestmap after the previously oldest post, but before the time of the last poll check, is published to the node. Previously if an entry would be skipped if it was published at 13:00 with a timestamp of 12:30, where the last poll was at 12:45. For feeds that lack a timestamp, it now looks for the first post that is not published, assuming that the feed is in reverse chronological order, then iterates back up from there.
author Kim Alvefur <zash@zash.se>
date Sun, 25 Jun 2023 16:27:55 +0200
parents 2af0301af734
children 032445730eaa
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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