root / plugins / processes / multicpu @ ef960abc
Historique | Voir | Annoter | Télécharger (2,07 ko)
| 1 | 4f1ea219 | Florian Fida | #!/usr/bin/php |
|---|---|---|---|
| 2 | <? |
||
| 3 | /* |
||
| 4 | multicpu monitors the cpu usage of multiple processes. |
||
| 5 | you can configure the list of processes via munin's configuration |
||
| 6 | |||
| 7 | [multicpu] |
||
| 8 | env.ps_filter apache2 mysqld |
||
| 9 | |||
| 10 | I have very little knowlege about munin plugins, it just 'works fine for me'. |
||
| 11 | Please feel free to improve :) |
||
| 12 | |||
| 13 | 0.1 initial release - Florian Fida |
||
| 14 | */ |
||
| 15 | |||
| 16 | // make sure that paht to ps is valid for your system |
||
| 17 | $ps_cmd = '/bin/ps -eo "%C,%a"'; |
||
| 18 | |||
| 19 | // list of processes to monitor, can also be set by env.ps_filter in munin config |
||
| 20 | $ps_filter = array( |
||
| 21 | 'apache2', 'mysqld', 'exim', 'php', 'perl', 'ruby', 'bftpd' |
||
| 22 | ); |
||
| 23 | |||
| 24 | |||
| 25 | $cmdl = implode(' ', $argv);
|
||
| 26 | $config = stripos($cmdl, 'config') !== false; |
||
| 27 | |||
| 28 | if(!empty($_ENV['ps_filter'])){
|
||
| 29 | $ps_filter = explode(' ', $_ENV['ps_filter']);
|
||
| 30 | } |
||
| 31 | |||
| 32 | if($config){
|
||
| 33 | $out = "multigraph multicpu_pcpu\n"; |
||
| 34 | $out .= "graph_title CPU usage per process\n"; |
||
| 35 | $out .= "graph_vlabel CPU usage [%]\n"; |
||
| 36 | $out .= "graph_category processes\n"; |
||
| 37 | foreach($ps_filter as $process) $out .= "$process.label $process\n"; |
||
| 38 | |||
| 39 | $out .= "multigraph multicpu_cnt\n"; |
||
| 40 | $out .= "graph_title Instances per process\n"; |
||
| 41 | $out .= "graph_vlabel count\n"; |
||
| 42 | $out .= "graph_category processes\n"; |
||
| 43 | foreach($ps_filter as $process) $out .= "$process.label $process\n"; |
||
| 44 | |||
| 45 | echo $out."\n"; |
||
| 46 | exit; |
||
| 47 | } |
||
| 48 | |||
| 49 | $ps_txt = shell_exec($ps_cmd); |
||
| 50 | $ps_a = explode("\n", $ps_txt);
|
||
| 51 | |||
| 52 | $result = array(); |
||
| 53 | $result_cnt = array(); |
||
| 54 | foreach($ps_filter as $process){
|
||
| 55 | if(!isset($result[$process])) $result[$process] = 0; |
||
| 56 | if(!isset($result_cnt[$process])) $result_cnt[$process] = 0; |
||
| 57 | foreach($ps_a as $line){
|
||
| 58 | $line_a = explode(',', $line, 2);
|
||
| 59 | if(count($line_a) == 2){
|
||
| 60 | if(stripos($line_a[1], $process) !== false){
|
||
| 61 | $result[$process] += floatval($line_a[0]); |
||
| 62 | ++$result_cnt[$process]; |
||
| 63 | } |
||
| 64 | } |
||
| 65 | } |
||
| 66 | } |
||
| 67 | |||
| 68 | echo "multigraph multicpu_pcpu\n"; |
||
| 69 | foreach($result as $process => $value) echo "$process.value $value\n"; |
||
| 70 | echo "multigraph multicpu_cnt\n"; |
||
| 71 | foreach($result_cnt as $process => $value) echo "$process.value $value\n"; |
