view mod_measure_cpu/mod_measure_cpu.lua @ 6083:ffd0184cd478

mod_compliance_latest: New module that depends on and therefore loads the latest compliance tester mod. diff --git a/mod_compliance_latest/README.md b/mod_compliance_latest/README.md new file mode 100644 --- /dev/null +++ b/mod_compliance_latest/README.md @@ -0,0 +1,25 @@ +--- +summary: XMPP Compliance Suites self-test +labels: +- Stage-Beta +rockspec: + dependencies: + - mod_compliance_2023 +... + +# Introduction + +This module will always require and load to the lastest compliance tester we have in the community modules. +Currently this is [mod_compliance_2023]. + +# Configuration + +Just load this module as any other module and it will automatically install [mod_compliance_2023] if you use the Prosody plugin installer. +See the linked module for further details. + +# Compatibility + + Prosody-Version Status + --------------- ---------------------- + trunk Works as of 2024-12-22 + 0.12 Works diff --git a/mod_compliance_latest/mod_compliance_latest.lua b/mod_compliance_latest/mod_compliance_latest.lua new file mode 100644 --- /dev/null +++ b/mod_compliance_latest/mod_compliance_latest.lua @@ -0,0 +1,1 @@ +module:depends("compliance_2023");
author Menel <menel@snikket.de>
date Sun, 22 Dec 2024 18:12:42 +0100
parents 2af0301af734
children 032445730eaa
line wrap: on
line source

module:set_global();

local measure = require"core.statsmanager".measure;
local mt = require"util.multitable";
local get_time = require "socket".gettime;
local get_clock = os.clock;

local measure_cpu_now = measure("amount", "cpu.percent"); -- Current percentage
local measure_cpu_total = measure("counter", "cpu.clock", { units = "seconds" });

local last_cpu_wall, last_cpu_clock;
module:hook("stats-update", function ()
	local new_wall, new_clock = get_time(), get_clock();
	local pc = 0;
	if last_cpu_wall then
		pc = 100/((new_wall-last_cpu_wall)/(new_clock-last_cpu_clock));
	end
	last_cpu_wall, last_cpu_clock = new_wall, new_clock;

	measure_cpu_now(pc);
	measure_cpu_total(new_clock);
end);

-- Some metadata for mod_munin
local munin_meta = mt.new(); munin_meta.data = module:shared"munin/meta";
local key = "global_cpu_amount";

munin_meta:set(key, "", "graph_args", "--base 1000 -r --lower-limit 0 --upper-limit 100");
munin_meta:set(key, "", "graph_title", "Prosody CPU Usage");
munin_meta:set(key, "", "graph_vlabel", "%");
munin_meta:set(key, "", "graph_category", "cpu");

munin_meta:set(key, "percent", "label", "CPU Usage");
munin_meta:set(key, "percent", "min", "0");