Diff

mod_measure_cpu/mod_measure_cpu.lua @ 1677:2a4c632a24cb

mod_measure_cpu: Collect CPU usage statistic
author Kim Alvefur <zash@zash.se>
date Thu, 23 Apr 2015 17:00:59 +0200
child 3431:8357cabc31f6
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mod_measure_cpu/mod_measure_cpu.lua	Thu Apr 23 17:00:59 2015 +0200
@@ -0,0 +1,33 @@
+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 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);
+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");
+