root / plugins / openvz / openvz-load-avg @ 430d68ff
Historique | Voir | Annoter | Télécharger (2,7 ko)
| 1 | 6871929e | Maxime Besson, David Bernard [Smile Open Source Solution] | #!/usr/bin/perl |
|---|---|---|---|
| 2 | # |
||
| 3 | # Copyright (c) 2008, Maxime Besson |
||
| 4 | # Copyright (c) 2011, David Bernard |
||
| 5 | # |
||
| 6 | # Permission to use, copy, modify, and/or distribute this software for any |
||
| 7 | # purpose with or without fee is hereby granted, provided that the above |
||
| 8 | # copyright notice and this permission notice appear in all copies. |
||
| 9 | # |
||
| 10 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
||
| 11 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
||
| 12 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
||
| 13 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
||
| 14 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
||
| 15 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
||
| 16 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
||
| 17 | # |
||
| 18 | # |
||
| 19 | # Graph VE load averages on an OpenVZ server |
||
| 20 | # |
||
| 21 | # This plugin needs root privileges to call vzlist, so add this : |
||
| 22 | # |
||
| 23 | # [openvz_loadavg] |
||
| 24 | # user root |
||
| 25 | # |
||
| 26 | # to your munin config (or use sudo) |
||
| 27 | # |
||
| 28 | # Changelog |
||
| 29 | # version 0.1 - 2008 September 17 |
||
| 30 | # Maxime Besson <mabes@smile.fr> |
||
| 31 | # - Script creation |
||
| 32 | # version 0.2 - 2011 July 18 |
||
| 33 | # Bernard David <daber@smile.fr> |
||
| 34 | # - Script improvements : multigraph |
||
| 35 | |||
| 36 | use strict; |
||
| 37 | my $arg=shift(@ARGV); |
||
| 38 | |||
| 39 | # Various tests |
||
| 40 | if ( ! -d "/proc/vz" ) {
|
||
| 41 | print "This server does not seem to run OpenVZ\n"; |
||
| 42 | exit(1); |
||
| 43 | } |
||
| 44 | |||
| 45 | if ( $> ne "0" ) {
|
||
| 46 | print "Must run as root\n"; |
||
| 47 | exit(1); |
||
| 48 | } |
||
| 49 | |||
| 50 | # Autoconfig |
||
| 51 | if ( $arg eq "autoconf" ) {
|
||
| 52 | print "yes\n"; |
||
| 53 | } elsif ( $arg eq "config" ) {
|
||
| 54 | print "multigraph openvz_loadavg\n"; |
||
| 55 | 7329ca6b | dcaillibaud | print "graph_title load average of VE\n"; |
| 56 | 6871929e | Maxime Besson, David Bernard [Smile Open Source Solution] | print "graph_args --base 1000 -l 0 -N\n"; |
| 57 | print "graph_scale no\n"; |
||
| 58 | 7329ca6b | dcaillibaud | print "graph_vlabel load average\n"; |
| 59 | 6871929e | Maxime Besson, David Bernard [Smile Open Source Solution] | print "graph_info Shows 5-minute load average per VE\n"; |
| 60 | print "graph_category OpenVZ\n"; |
||
| 61 | |||
| 62 | # Dynamic config |
||
| 63 | my @result=`/usr/sbin/vzlist -H -a -s veid -o veid,name`; |
||
| 64 | my $A=0; # draw an area only under the first line |
||
| 65 | |||
| 66 | for (@result ) {
|
||
| 67 | ( my $veid,my $label ) = /^\s*(\d+)\s*([\w\-]+)\s*$/ ; |
||
| 68 | my $name = $label; |
||
| 69 | $name =~ s/\W/_/g; |
||
| 70 | |||
| 71 | 7329ca6b | dcaillibaud | print "$name.label $label\n"; |
| 72 | 6871929e | Maxime Besson, David Bernard [Smile Open Source Solution] | print "$name.min 0\n"; |
| 73 | if ($A==0) {
|
||
| 74 | print "$name.draw AREA\n"; |
||
| 75 | $A=1; |
||
| 76 | }else{
|
||
| 77 | print "$name.draw STACK\n"; |
||
| 78 | } |
||
| 79 | } |
||
| 80 | |||
| 81 | } else {
|
||
| 82 | # Getting the values |
||
| 83 | my @result=`/usr/sbin/vzlist -H -s veid -o veid,name,laverage`; |
||
| 84 | my $A=0; |
||
| 85 | |||
| 86 | for (@result ) {
|
||
| 87 | if (( my $veid,my $label, my $laverage ) = /^\s*(\d+)\s+([\w\-]+)\s+[\d\.]+\/([\d\.]+)\/[\d\.]+\s*$/) {
|
||
| 88 | my $name = $label; |
||
| 89 | $name =~ s/\W/_/g; |
||
| 90 | print "$name.value $laverage\n" |
||
| 91 | } |
||
| 92 | } |
||
| 93 | |||
| 94 | } |
