Software /
code /
prosody-modules
Annotate
mod_measure_cpu/mod_measure_cpu.lua @ 2712:d89ab70808f6
mod_cloud_notify: fix bug when multiple resources are used
This bug was triggered under the rare circumstances that a message arrived
and one resource was smacks hibernated while the other one(s) were offline.
Then only the hibernated resource but not the offline one(s) (or the other
way round) got notified.
author | tmolitor <thilo@eightysoft.de> |
---|---|
date | Mon, 08 May 2017 18:24:29 +0200 |
parent | 1677:2a4c632a24cb |
child | 3431:8357cabc31f6 |
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 |
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
9 |
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
10 local last_cpu_wall, last_cpu_clock; |
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
11 module:hook("stats-update", function () |
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
12 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
|
13 local pc = 0; |
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
14 if last_cpu_wall then |
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
15 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
|
16 end |
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
17 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
|
18 |
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
19 measure_cpu_now(pc); |
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
20 end); |
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
21 |
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
22 -- Some metadata for mod_munin |
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
23 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
|
24 local key = "global_cpu_amount"; |
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
25 |
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
26 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
|
27 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
|
28 munin_meta:set(key, "", "graph_vlabel", "%"); |
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
29 munin_meta:set(key, "", "graph_category", "cpu"); |
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
30 |
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
31 munin_meta:set(key, "percent", "label", "CPU Usage"); |
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
32 munin_meta:set(key, "percent", "min", "0"); |
2a4c632a24cb
mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
33 |