Mercurial > prosody-modules
comparison 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 |
parents | |
children | 8357cabc31f6 |
comparison
equal
deleted
inserted
replaced
1676:accbf0db0246 | 1677:2a4c632a24cb |
---|---|
1 module:set_global(); | |
2 | |
3 local measure = require"core.statsmanager".measure; | |
4 local mt = require"util.multitable"; | |
5 local get_time = require "socket".gettime; | |
6 local get_clock = os.clock; | |
7 | |
8 local measure_cpu_now = measure("amount", "cpu.percent"); -- Current percentage | |
9 | |
10 local last_cpu_wall, last_cpu_clock; | |
11 module:hook("stats-update", function () | |
12 local new_wall, new_clock = get_time(), get_clock(); | |
13 local pc = 0; | |
14 if last_cpu_wall then | |
15 pc = 100/((new_wall-last_cpu_wall)/(new_clock-last_cpu_clock)); | |
16 end | |
17 last_cpu_wall, last_cpu_clock = new_wall, new_clock; | |
18 | |
19 measure_cpu_now(pc); | |
20 end); | |
21 | |
22 -- Some metadata for mod_munin | |
23 local munin_meta = mt.new(); munin_meta.data = module:shared"munin/meta"; | |
24 local key = "global_cpu_amount"; | |
25 | |
26 munin_meta:set(key, "", "graph_args", "--base 1000 -r --lower-limit 0 --upper-limit 100"); | |
27 munin_meta:set(key, "", "graph_title", "Prosody CPU Usage"); | |
28 munin_meta:set(key, "", "graph_vlabel", "%"); | |
29 munin_meta:set(key, "", "graph_category", "cpu"); | |
30 | |
31 munin_meta:set(key, "percent", "label", "CPU Usage"); | |
32 munin_meta:set(key, "percent", "min", "0"); | |
33 |