root / plugins / other / openvz-load-avg @ 389b5970
Historique | Voir | Annoter | Télécharger (3,55 ko)
| 1 |
#!/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 |
print "graph_title loadavg of VE\n"; |
| 56 |
print "graph_args --base 1000 -l 0 -N\n"; |
| 57 |
print "graph_scale no\n"; |
| 58 |
print "graph_vlabel loadavg\n"; |
| 59 |
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 |
print "$name.label $label: load average\n"; |
| 72 |
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 |
for (@result ) {
|
| 82 |
( my $veid,my $label ) = /^\s*(\d+)\s*([\w\-]+)\s*$/ ; |
| 83 |
my $name = $label; |
| 84 |
$name =~ s/\W/_/g; |
| 85 |
|
| 86 |
print "multigraph openvz_loadavg.$name\n"; |
| 87 |
print "graph_title loadavg of VE\n"; |
| 88 |
print "graph_vlabel loadavg\n"; |
| 89 |
print "$name.label $label: load average\n"; |
| 90 |
print "$name.info Average load on $label for the past 5 minutes\n"; |
| 91 |
print "$name.min 0\n"; |
| 92 |
print "$name.draw AREA\n"; |
| 93 |
} |
| 94 |
} else {
|
| 95 |
# Getting the values |
| 96 |
my @result=`/usr/sbin/vzlist -H -s veid -o veid,name,laverage`; |
| 97 |
my $A=0; |
| 98 |
print "multigraph openvz_loadavg\n"; |
| 99 |
print "graph_title loadavg of VE\n"; |
| 100 |
print "graph_vlabel loadavg\n"; |
| 101 |
print "graph_category OpenVZ\n"; |
| 102 |
|
| 103 |
for (@result ) {
|
| 104 |
if (( my $veid,my $label, my $laverage ) = /^\s*(\d+)\s+([\w\-]+)\s+[\d\.]+\/([\d\.]+)\/[\d\.]+\s*$/) {
|
| 105 |
my $name = $label; |
| 106 |
$name =~ s/\W/_/g; |
| 107 |
print "$name.label $name\n"; |
| 108 |
print "$name.min 0\n"; |
| 109 |
if ($A==0) { print "$name.draw AREA\n"; $A=1; } else { print "$name.draw STACK\n"; }
|
| 110 |
print "$name.value $laverage\n" |
| 111 |
} |
| 112 |
} |
| 113 |
|
| 114 |
} |
