<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.openvz.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Justhamade</id>
	<title>OpenVZ Virtuozzo Containers Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.openvz.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Justhamade"/>
	<link rel="alternate" type="text/html" href="https://wiki.openvz.org/Special:Contributions/Justhamade"/>
	<updated>2026-06-10T00:57:52Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.1</generator>
	<entry>
		<id>https://wiki.openvz.org/index.php?title=Monitoring_openvz_resources_using_nagios_and_snmp&amp;diff=5869</id>
		<title>Monitoring openvz resources using nagios and snmp</title>
		<link rel="alternate" type="text/html" href="https://wiki.openvz.org/index.php?title=Monitoring_openvz_resources_using_nagios_and_snmp&amp;diff=5869"/>
		<updated>2008-05-08T19:11:18Z</updated>

		<summary type="html">&lt;p&gt;Justhamade: /* check_vzquota Without SNMP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== snmpd configuration ==&lt;br /&gt;
Debian Etch example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install snmpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
edit '''/etc/default/snmpd''' : remove ''-u snmp'' and replace ''127.0.0.1'' with your ip, Full'''/etc/default/snmpd''' example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export MIBDIRS=/usr/share/snmp/mibs&lt;br /&gt;
SNMPDRUN=yes&lt;br /&gt;
SNMPDOPTS='-Lsd -Lf /dev/null  -I -smux -p /var/run/snmpd.pid 207.46.250.119'&lt;br /&gt;
TRAPDRUN=no&lt;br /&gt;
TRAPDOPTS='-Lsd -p /var/run/snmptrapd.pid'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For Debian 4.x:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export MIBDIRS=/usr/share/snmp/mibs&lt;br /&gt;
SNMPDRUN=yes&lt;br /&gt;
SNMPDOPTS='-Lsd -Lf /dev/null  -I -smux -p /var/run/snmpd.pid'&lt;br /&gt;
TRAPDRUN=no&lt;br /&gt;
TRAPDOPTS='-Lsd -p /var/run/snmptrapd.pid'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create user(my_username) and add new mib. Password need a min. of 8 charactes. Username only characters:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/init.d/snmpd stop&lt;br /&gt;
echo rouser my_username priv &amp;gt; /etc/snmp/snmpd.conf&lt;br /&gt;
echo &amp;quot;extend  .1.3.6.1.4.1.2021.51  beancounters  /bin/cat /proc/user_beancounters&amp;quot; &amp;gt;&amp;gt; /etc/snmp/snmpd.conf&lt;br /&gt;
echo &amp;quot;extend  .1.3.6.1.4.1.2021.52  vzquota  /bin/cat /proc/vz/vzquota&amp;quot; &amp;gt;&amp;gt; /etc/snmp/snmpd.conf&lt;br /&gt;
echo  createUser my_username MD5 my_password DES &amp;gt;&amp;gt; /var/lib/snmp/snmpd.conf&lt;br /&gt;
/etc/init.d/snmpd start &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Testing snmp:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snmpwalk   -v 3  -u my_usrname -l authPriv   -a MD5 -A my_password -x DES -X my_password  207.46.250.119&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Warning: the minimum pass phrase length is 8 characters.&lt;br /&gt;
&lt;br /&gt;
== nagios configuration ==&lt;br /&gt;
=== example nagios configuration ===&lt;br /&gt;
add to configuration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define command {&lt;br /&gt;
command_name check_snmp_openvz_on_port&lt;br /&gt;
# command_line /usr/local/bin/check_snmp_openvz.sh  $HOSTADDRESS$ PORT    USER    PASSWORD&lt;br /&gt;
command_line /usr/local/bin/check_snmp_openvz.sh  $HOSTADDRESS$ $ARG1$  $ARG2$  $ARG3$&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define host {&lt;br /&gt;
        host_name   openvz-server&lt;br /&gt;
        alias       Serwer Openvz&lt;br /&gt;
        address     207.46.250.119&lt;br /&gt;
        use         generic-host&lt;br /&gt;
        contact_groups  admins&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define service{&lt;br /&gt;
        use                             generic-service&lt;br /&gt;
        host_name                       openvz-server&lt;br /&gt;
        service_description             Virtual Machines Limits&lt;br /&gt;
        check_command                   check_snmp_openvz_on_port!161!my_username!my_password&lt;br /&gt;
        max_check_attempts              1&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== nagios plugin ===&lt;br /&gt;
It is shell script:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# cat /usr/local/bin/check_snmp_openvz.sh&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
HOST=$1&lt;br /&gt;
PORT=$2&lt;br /&gt;
USER=$3&lt;br /&gt;
PASS=$4&lt;br /&gt;
export FILE=/tmp/$HOST.beancounters&lt;br /&gt;
RET=0&lt;br /&gt;
&lt;br /&gt;
DATA_TMP=`snmpwalk   -v 3  -u $USER -l authPriv   -a MD5 -A $PASS -x DES -X $PASS $HOST:$PORT .1.3.6.1.4.1.2021.51.4`&lt;br /&gt;
if [ &amp;quot;$?&amp;quot; != &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
        echo &amp;quot;Unknown snmp error&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
DATA=`echo &amp;quot;$DATA_TMP&amp;quot;| perl -ne '/&amp;quot;(.*)&amp;quot;/ ; print &amp;quot;$1\n&amp;quot; ;'`&lt;br /&gt;
&lt;br /&gt;
if [ -f $FILE ]; then&lt;br /&gt;
echo &amp;quot;$DATA&amp;quot; | perl  -n -e'&lt;br /&gt;
use Data::Dumper;&lt;br /&gt;
my $file=$ENV{&amp;quot;FILE&amp;quot;};&lt;br /&gt;
my $ret=0 ;&lt;br /&gt;
my $vid ;&lt;br /&gt;
my $resource ;&lt;br /&gt;
my $held ;&lt;br /&gt;
my $maxheld ;&lt;br /&gt;
my $barrier ;&lt;br /&gt;
my $limit ;&lt;br /&gt;
my $failcnt ;&lt;br /&gt;
my %beancounters ;&lt;br /&gt;
my %beancounters_old ;&lt;br /&gt;
while(&amp;lt;STDIN&amp;gt;){&lt;br /&gt;
        my %vmachine;&lt;br /&gt;
        if ( /\D*(\d+):.*/ ){ $vid=$1; $beancounters{$vid}=\%vmachine ; }&lt;br /&gt;
        if ( /^[\W\d]+([a-z]+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+).*/ ) {&lt;br /&gt;
                $resource=$1 ;&lt;br /&gt;
                $held=$2 ;&lt;br /&gt;
                $maxheld=$3 ;&lt;br /&gt;
                $barrier=$4 ;&lt;br /&gt;
                $limit=$5 ;&lt;br /&gt;
                $failcnt=$6 ;&lt;br /&gt;
                ${beancounters{$vid}}{$resource}=[$held , $maxheld , $barrier , $limit ,$failcnt ];&lt;br /&gt;
                if ( ($held  &amp;gt; $barrier) &amp;amp;&amp;amp; ($barrier != 0) ) {&lt;br /&gt;
                        print &amp;quot;WARNING: Limits on $vid: $resource  held-&amp;gt;$held , barrier-&amp;gt;$barrier ( limit-&amp;gt;$limit ) &amp;quot; ;&lt;br /&gt;
                        $ret=1;&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# read and parse old data&lt;br /&gt;
open(MYINPUTFILE, &amp;quot;&amp;lt;$file&amp;quot;);&lt;br /&gt;
while(&amp;lt;MYINPUTFILE&amp;gt;){&lt;br /&gt;
        my %vmachine;&lt;br /&gt;
        if ( /\D*(\d+):.*/ ){ $vid=$1; $beancounters_old{$vid}=\%vmachine ; }&lt;br /&gt;
        if ( /^[\W\d]+([a-z]+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+).*/ ) {&lt;br /&gt;
                $resource=$1 ;&lt;br /&gt;
                $held=$2 ;&lt;br /&gt;
                $maxheld=$3 ;&lt;br /&gt;
                $barrier=$4 ;&lt;br /&gt;
                $limit=$5 ;&lt;br /&gt;
                $failcnt=$6 ;&lt;br /&gt;
                ${beancounters_old{$vid}}{$resource}=[$held , $maxheld , $barrier , $limit ,$failcnt ];&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
foreach my $vmachine_id (keys %beancounters) {&lt;br /&gt;
        foreach my $resource (keys %{$beancounters{$vmachine_id}} ) {&lt;br /&gt;
                if ( defined($beancounters{$vmachine_id}{$resource}[4]) &amp;amp;&amp;amp; defined($beancounters_old{$vmachine_id}{$resource}[4]) ){&lt;br /&gt;
                        my $failcnt=$beancounters{$vmachine_id}{$resource}[4];&lt;br /&gt;
                        my $failcnt_old=$beancounters_old{$vmachine_id}{$resource}[4];&lt;br /&gt;
                        my $held=$beancounters{$vmachine_id}{$resource}[0];&lt;br /&gt;
                        my $maxheld=$beancounters{$vmachine_id}{$resource}[1];&lt;br /&gt;
                        my $barrier=$beancounters{$vmachine_id}{$resource}[2];&lt;br /&gt;
                        my $limit=$beancounters{$vmachine_id}{$resource}[3];&lt;br /&gt;
                        if ( $failcnt_old &amp;lt; $failcnt ){&lt;br /&gt;
                                print &amp;quot;CRITICAL: Incrased failcnt  $vmachine_id: $resource from $failcnt_old to $failcnt (held-&amp;gt;$held , maxheld-&amp;gt;$maxheld , barrier-&amp;gt;$barrier , limit-&amp;gt;$limit ) &amp;quot; ;&lt;br /&gt;
                                $ret=2;&lt;br /&gt;
                        }&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# if ($ret == 0 ) { print &amp;quot;Ok. \n&amp;quot; ; }&lt;br /&gt;
# print Dumper(%beancounters_old) ;&lt;br /&gt;
# print &amp;quot;\n&amp;quot;;&lt;br /&gt;
exit($ret);&lt;br /&gt;
'&lt;br /&gt;
&lt;br /&gt;
RET1=$?&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;$DATA&amp;quot; &amp;gt; $FILE&lt;br /&gt;
#####################################################################################&lt;br /&gt;
######### quota check&lt;br /&gt;
#####################################################################################&lt;br /&gt;
&lt;br /&gt;
DATA=`snmpwalk   -v 3  -u $USER -l authPriv   -a MD5 -A $PASS -x DES -X $PASS $HOST:$PORT .1.3.6.1.4.1.2021.52.4 \&lt;br /&gt;
|  perl -ne '/&amp;quot;(.*)&amp;quot;/ ; print &amp;quot;$1\n&amp;quot; ;'`&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$?&amp;quot; != &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
        echo &amp;quot;Unknown snmp error&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;$DATA&amp;quot; | perl  -n -e'&lt;br /&gt;
my $vid ;&lt;br /&gt;
my $ret=0 ;&lt;br /&gt;
while(&amp;lt;STDIN&amp;gt;){&lt;br /&gt;
        my %vid;&lt;br /&gt;
        if ( /\D*(\d+):.*/ ){ $vid=$1; }&lt;br /&gt;
        if ( /\s*(\S+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+).*/ ){&lt;br /&gt;
                $resource=$1 ;&lt;br /&gt;
                $usage=$2 ;&lt;br /&gt;
                $softlimit=$3 ;&lt;br /&gt;
                $hardlimit=$4 ;&lt;br /&gt;
                $time=$5 ;&lt;br /&gt;
                $expire=$6 ;&lt;br /&gt;
                if ( $usage &amp;gt;= $softlimit ){&lt;br /&gt;
                        print &amp;quot;WARNING: VZquota limit exceeded on $vid: $resource  usage-&amp;gt;$usage, softlimit-&amp;gt;$softlimit, hardlimit-&amp;gt;$hardlimit, time-&amp;gt;$time, expire-&amp;gt;$expire  &amp;quot; ;&lt;br /&gt;
                        $ret=1;&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
exit($ret);&lt;br /&gt;
'&lt;br /&gt;
RET2=$?&lt;br /&gt;
&lt;br /&gt;
#####################################################################################&lt;br /&gt;
########### return&lt;br /&gt;
#####################################################################################&lt;br /&gt;
&lt;br /&gt;
if [  $RET1  -gt $RET2  ]; then&lt;br /&gt;
        RET=$RET1&lt;br /&gt;
        else&lt;br /&gt;
        RET=$RET2&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if [  $RET  = 0  ]; then&lt;br /&gt;
        echo Ok.&lt;br /&gt;
fi&lt;br /&gt;
exit $RET&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
=== check_vzquota Without SNMP ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
RET=0&lt;br /&gt;
DATA=`echo;sudo /usr/sbin/vzlist -1 | xargs -I {} bash -c &amp;quot;echo {}:;sudo /usr/sbin/vzquota stat {}&amp;quot;`&lt;br /&gt;
echo &amp;quot;$DATA&amp;quot; | perl  -n -e'&lt;br /&gt;
my $vid ;&lt;br /&gt;
my $ret=0 ;&lt;br /&gt;
while(&amp;lt;STDIN&amp;gt;){&lt;br /&gt;
        my %vid;&lt;br /&gt;
        if ( /^(\d+):.*/ ){ $vid=$1; }&lt;br /&gt;
        if ( /\D*(\d+):.*/ ){ $vid=$1; }&lt;br /&gt;
        if ( /\s*(\S+)\s+(\d+)\s+(\d+)\s+(\d+).*/ ){&lt;br /&gt;
                $resource=$1 ;&lt;br /&gt;
                $usage=$2 ;&lt;br /&gt;
                $softlimit=$3 ;&lt;br /&gt;
                $hardlimit=$4 ;&lt;br /&gt;
                if ( $usage &amp;gt;= $softlimit ){&lt;br /&gt;
                        print &amp;quot;WARNING: VZquota limit exceeded on $vid: $resource  usage-&amp;gt;$usage, softlimit-&amp;gt;$softlimit, hardlimit-&amp;gt;$hardlimit, time-&amp;gt;$time, expire-&amp;gt;$expire  &amp;quot; ;&lt;br /&gt;
                        $ret=1;&lt;br /&gt;
                }&lt;br /&gt;
                                print &amp;quot;$vid:$resource $usage/$softlimit &amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
exit($ret);&lt;br /&gt;
'&lt;br /&gt;
RET=$?&lt;br /&gt;
echo&lt;br /&gt;
exit $RET&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== check_ubc Without SNMP ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
export FILE=/tmp/check_ubc&lt;br /&gt;
RET=0&lt;br /&gt;
&lt;br /&gt;
DATA=`cat /proc/user_beancounters`&lt;br /&gt;
&lt;br /&gt;
if [ -f $FILE ]; then&lt;br /&gt;
echo &amp;quot;$DATA&amp;quot; | perl  -n -e'&lt;br /&gt;
use Data::Dumper;&lt;br /&gt;
my $file=$ENV{&amp;quot;FILE&amp;quot;};&lt;br /&gt;
my $ret=0 ;&lt;br /&gt;
my $vid ;&lt;br /&gt;
my $resource ;&lt;br /&gt;
my $held ;&lt;br /&gt;
my $maxheld ;&lt;br /&gt;
my $barrier ;&lt;br /&gt;
my $limit ;&lt;br /&gt;
my $failcnt ;&lt;br /&gt;
my %beancounters ;&lt;br /&gt;
my %beancounters_old ;&lt;br /&gt;
while(&amp;lt;STDIN&amp;gt;){&lt;br /&gt;
        my %vmachine;&lt;br /&gt;
        if ( /\D*(\d+):.*/ ){ $vid=$1; $beancounters{$vid}=\%vmachine ; }&lt;br /&gt;
        if ( /^[\W\d]+([a-z]+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+).*/ ) {&lt;br /&gt;
                $resource=$1 ;&lt;br /&gt;
                $held=$2 ;&lt;br /&gt;
                $maxheld=$3 ;&lt;br /&gt;
                $barrier=$4 ;&lt;br /&gt;
                $limit=$5 ;&lt;br /&gt;
                $failcnt=$6 ;&lt;br /&gt;
                ${beancounters{$vid}}{$resource}=[$held , $maxheld , $barrier , $limit ,$failcnt ];&lt;br /&gt;
                if ( ($held  &amp;gt; $barrier) &amp;amp;&amp;amp; ($barrier != 0) ) {&lt;br /&gt;
                        print &amp;quot;WARNING: Limits on $vid: $resource  held-&amp;gt;$held , barrier-&amp;gt;$barrier ( limit-&amp;gt;$limit ) &amp;quot; ;&lt;br /&gt;
                        $ret=1;&lt;br /&gt;
                }&lt;br /&gt;
                                #print &amp;quot;$vid:$resource $held Barrier:$barrier &amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# read and parse old data&lt;br /&gt;
open(MYINPUTFILE, &amp;quot;&amp;lt;$file&amp;quot;);&lt;br /&gt;
while(&amp;lt;MYINPUTFILE&amp;gt;){&lt;br /&gt;
        my %vmachine;&lt;br /&gt;
        if ( /\D*(\d+):.*/ ){ $vid=$1; $beancounters_old{$vid}=\%vmachine ; }&lt;br /&gt;
        if ( /^[\W\d]+([a-z]+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+).*/ ) {&lt;br /&gt;
                $resource=$1 ;&lt;br /&gt;
                $held=$2 ;&lt;br /&gt;
                $maxheld=$3 ;&lt;br /&gt;
                $barrier=$4 ;&lt;br /&gt;
                $limit=$5 ;&lt;br /&gt;
                $failcnt=$6 ;&lt;br /&gt;
                ${beancounters_old{$vid}}{$resource}=[$held , $maxheld , $barrier , $limit ,$failcnt ];&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
foreach my $vmachine_id (keys %beancounters) {&lt;br /&gt;
        foreach my $resource (keys %{$beancounters{$vmachine_id}} ) {&lt;br /&gt;
                if ( defined($beancounters{$vmachine_id}{$resource}[4]) &amp;amp;&amp;amp; defined($beancounters_old{$vmachine_id}{$resource}[4]) ){&lt;br /&gt;
                        my $failcnt=$beancounters{$vmachine_id}{$resource}[4];&lt;br /&gt;
                        my $failcnt_old=$beancounters_old{$vmachine_id}{$resource}[4];&lt;br /&gt;
                        my $held=$beancounters{$vmachine_id}{$resource}[0];&lt;br /&gt;
                        my $maxheld=$beancounters{$vmachine_id}{$resource}[1];&lt;br /&gt;
                        my $barrier=$beancounters{$vmachine_id}{$resource}[2];&lt;br /&gt;
                        my $limit=$beancounters{$vmachine_id}{$resource}[3];&lt;br /&gt;
                        if ( $failcnt_old &amp;lt; $failcnt ){&lt;br /&gt;
                                print &amp;quot;CRITICAL: Incrased failcnt  $vmachine_id: $resource from $failcnt_old to $failcnt (held-&amp;gt;$held , maxheld-&amp;gt;$maxheld , barrier-&amp;gt;$barrier , limit-&amp;gt;$limit ) &amp;quot; ;&lt;br /&gt;
                                $ret=2;&lt;br /&gt;
                        }&lt;br /&gt;
                                                #print &amp;quot;$vmachine_id: Old_Failcnt: $failcnt_old Failcnt: $failcnt \n&amp;quot;;&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if ($ret == 0 ) { print &amp;quot;OK. \n&amp;quot; ; }&lt;br /&gt;
# print Dumper(%beancounters_old) ;&lt;br /&gt;
# print &amp;quot;\n&amp;quot;;&lt;br /&gt;
exit($ret);&lt;br /&gt;
'&lt;br /&gt;
&lt;br /&gt;
RET=$?&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;$DATA&amp;quot; &amp;gt; $FILE&lt;br /&gt;
exit $RET&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Justhamade</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.openvz.org/index.php?title=Monitoring_openvz_resources_using_nagios_and_snmp&amp;diff=5868</id>
		<title>Monitoring openvz resources using nagios and snmp</title>
		<link rel="alternate" type="text/html" href="https://wiki.openvz.org/index.php?title=Monitoring_openvz_resources_using_nagios_and_snmp&amp;diff=5868"/>
		<updated>2008-05-08T15:51:14Z</updated>

		<summary type="html">&lt;p&gt;Justhamade: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== snmpd configuration ==&lt;br /&gt;
Debian Etch example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install snmpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
edit '''/etc/default/snmpd''' : remove ''-u snmp'' and replace ''127.0.0.1'' with your ip, Full'''/etc/default/snmpd''' example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export MIBDIRS=/usr/share/snmp/mibs&lt;br /&gt;
SNMPDRUN=yes&lt;br /&gt;
SNMPDOPTS='-Lsd -Lf /dev/null  -I -smux -p /var/run/snmpd.pid 207.46.250.119'&lt;br /&gt;
TRAPDRUN=no&lt;br /&gt;
TRAPDOPTS='-Lsd -p /var/run/snmptrapd.pid'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For Debian 4.x:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export MIBDIRS=/usr/share/snmp/mibs&lt;br /&gt;
SNMPDRUN=yes&lt;br /&gt;
SNMPDOPTS='-Lsd -Lf /dev/null  -I -smux -p /var/run/snmpd.pid'&lt;br /&gt;
TRAPDRUN=no&lt;br /&gt;
TRAPDOPTS='-Lsd -p /var/run/snmptrapd.pid'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create user(my_username) and add new mib. Password need a min. of 8 charactes. Username only characters:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/init.d/snmpd stop&lt;br /&gt;
echo rouser my_username priv &amp;gt; /etc/snmp/snmpd.conf&lt;br /&gt;
echo &amp;quot;extend  .1.3.6.1.4.1.2021.51  beancounters  /bin/cat /proc/user_beancounters&amp;quot; &amp;gt;&amp;gt; /etc/snmp/snmpd.conf&lt;br /&gt;
echo &amp;quot;extend  .1.3.6.1.4.1.2021.52  vzquota  /bin/cat /proc/vz/vzquota&amp;quot; &amp;gt;&amp;gt; /etc/snmp/snmpd.conf&lt;br /&gt;
echo  createUser my_username MD5 my_password DES &amp;gt;&amp;gt; /var/lib/snmp/snmpd.conf&lt;br /&gt;
/etc/init.d/snmpd start &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Testing snmp:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snmpwalk   -v 3  -u my_usrname -l authPriv   -a MD5 -A my_password -x DES -X my_password  207.46.250.119&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Warning: the minimum pass phrase length is 8 characters.&lt;br /&gt;
&lt;br /&gt;
== nagios configuration ==&lt;br /&gt;
=== example nagios configuration ===&lt;br /&gt;
add to configuration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define command {&lt;br /&gt;
command_name check_snmp_openvz_on_port&lt;br /&gt;
# command_line /usr/local/bin/check_snmp_openvz.sh  $HOSTADDRESS$ PORT    USER    PASSWORD&lt;br /&gt;
command_line /usr/local/bin/check_snmp_openvz.sh  $HOSTADDRESS$ $ARG1$  $ARG2$  $ARG3$&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define host {&lt;br /&gt;
        host_name   openvz-server&lt;br /&gt;
        alias       Serwer Openvz&lt;br /&gt;
        address     207.46.250.119&lt;br /&gt;
        use         generic-host&lt;br /&gt;
        contact_groups  admins&lt;br /&gt;
        }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
define service{&lt;br /&gt;
        use                             generic-service&lt;br /&gt;
        host_name                       openvz-server&lt;br /&gt;
        service_description             Virtual Machines Limits&lt;br /&gt;
        check_command                   check_snmp_openvz_on_port!161!my_username!my_password&lt;br /&gt;
        max_check_attempts              1&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== nagios plugin ===&lt;br /&gt;
It is shell script:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# cat /usr/local/bin/check_snmp_openvz.sh&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
HOST=$1&lt;br /&gt;
PORT=$2&lt;br /&gt;
USER=$3&lt;br /&gt;
PASS=$4&lt;br /&gt;
export FILE=/tmp/$HOST.beancounters&lt;br /&gt;
RET=0&lt;br /&gt;
&lt;br /&gt;
DATA_TMP=`snmpwalk   -v 3  -u $USER -l authPriv   -a MD5 -A $PASS -x DES -X $PASS $HOST:$PORT .1.3.6.1.4.1.2021.51.4`&lt;br /&gt;
if [ &amp;quot;$?&amp;quot; != &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
        echo &amp;quot;Unknown snmp error&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
DATA=`echo &amp;quot;$DATA_TMP&amp;quot;| perl -ne '/&amp;quot;(.*)&amp;quot;/ ; print &amp;quot;$1\n&amp;quot; ;'`&lt;br /&gt;
&lt;br /&gt;
if [ -f $FILE ]; then&lt;br /&gt;
echo &amp;quot;$DATA&amp;quot; | perl  -n -e'&lt;br /&gt;
use Data::Dumper;&lt;br /&gt;
my $file=$ENV{&amp;quot;FILE&amp;quot;};&lt;br /&gt;
my $ret=0 ;&lt;br /&gt;
my $vid ;&lt;br /&gt;
my $resource ;&lt;br /&gt;
my $held ;&lt;br /&gt;
my $maxheld ;&lt;br /&gt;
my $barrier ;&lt;br /&gt;
my $limit ;&lt;br /&gt;
my $failcnt ;&lt;br /&gt;
my %beancounters ;&lt;br /&gt;
my %beancounters_old ;&lt;br /&gt;
while(&amp;lt;STDIN&amp;gt;){&lt;br /&gt;
        my %vmachine;&lt;br /&gt;
        if ( /\D*(\d+):.*/ ){ $vid=$1; $beancounters{$vid}=\%vmachine ; }&lt;br /&gt;
        if ( /^[\W\d]+([a-z]+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+).*/ ) {&lt;br /&gt;
                $resource=$1 ;&lt;br /&gt;
                $held=$2 ;&lt;br /&gt;
                $maxheld=$3 ;&lt;br /&gt;
                $barrier=$4 ;&lt;br /&gt;
                $limit=$5 ;&lt;br /&gt;
                $failcnt=$6 ;&lt;br /&gt;
                ${beancounters{$vid}}{$resource}=[$held , $maxheld , $barrier , $limit ,$failcnt ];&lt;br /&gt;
                if ( ($held  &amp;gt; $barrier) &amp;amp;&amp;amp; ($barrier != 0) ) {&lt;br /&gt;
                        print &amp;quot;WARNING: Limits on $vid: $resource  held-&amp;gt;$held , barrier-&amp;gt;$barrier ( limit-&amp;gt;$limit ) &amp;quot; ;&lt;br /&gt;
                        $ret=1;&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# read and parse old data&lt;br /&gt;
open(MYINPUTFILE, &amp;quot;&amp;lt;$file&amp;quot;);&lt;br /&gt;
while(&amp;lt;MYINPUTFILE&amp;gt;){&lt;br /&gt;
        my %vmachine;&lt;br /&gt;
        if ( /\D*(\d+):.*/ ){ $vid=$1; $beancounters_old{$vid}=\%vmachine ; }&lt;br /&gt;
        if ( /^[\W\d]+([a-z]+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+).*/ ) {&lt;br /&gt;
                $resource=$1 ;&lt;br /&gt;
                $held=$2 ;&lt;br /&gt;
                $maxheld=$3 ;&lt;br /&gt;
                $barrier=$4 ;&lt;br /&gt;
                $limit=$5 ;&lt;br /&gt;
                $failcnt=$6 ;&lt;br /&gt;
                ${beancounters_old{$vid}}{$resource}=[$held , $maxheld , $barrier , $limit ,$failcnt ];&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
foreach my $vmachine_id (keys %beancounters) {&lt;br /&gt;
        foreach my $resource (keys %{$beancounters{$vmachine_id}} ) {&lt;br /&gt;
                if ( defined($beancounters{$vmachine_id}{$resource}[4]) &amp;amp;&amp;amp; defined($beancounters_old{$vmachine_id}{$resource}[4]) ){&lt;br /&gt;
                        my $failcnt=$beancounters{$vmachine_id}{$resource}[4];&lt;br /&gt;
                        my $failcnt_old=$beancounters_old{$vmachine_id}{$resource}[4];&lt;br /&gt;
                        my $held=$beancounters{$vmachine_id}{$resource}[0];&lt;br /&gt;
                        my $maxheld=$beancounters{$vmachine_id}{$resource}[1];&lt;br /&gt;
                        my $barrier=$beancounters{$vmachine_id}{$resource}[2];&lt;br /&gt;
                        my $limit=$beancounters{$vmachine_id}{$resource}[3];&lt;br /&gt;
                        if ( $failcnt_old &amp;lt; $failcnt ){&lt;br /&gt;
                                print &amp;quot;CRITICAL: Incrased failcnt  $vmachine_id: $resource from $failcnt_old to $failcnt (held-&amp;gt;$held , maxheld-&amp;gt;$maxheld , barrier-&amp;gt;$barrier , limit-&amp;gt;$limit ) &amp;quot; ;&lt;br /&gt;
                                $ret=2;&lt;br /&gt;
                        }&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# if ($ret == 0 ) { print &amp;quot;Ok. \n&amp;quot; ; }&lt;br /&gt;
# print Dumper(%beancounters_old) ;&lt;br /&gt;
# print &amp;quot;\n&amp;quot;;&lt;br /&gt;
exit($ret);&lt;br /&gt;
'&lt;br /&gt;
&lt;br /&gt;
RET1=$?&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;$DATA&amp;quot; &amp;gt; $FILE&lt;br /&gt;
#####################################################################################&lt;br /&gt;
######### quota check&lt;br /&gt;
#####################################################################################&lt;br /&gt;
&lt;br /&gt;
DATA=`snmpwalk   -v 3  -u $USER -l authPriv   -a MD5 -A $PASS -x DES -X $PASS $HOST:$PORT .1.3.6.1.4.1.2021.52.4 \&lt;br /&gt;
|  perl -ne '/&amp;quot;(.*)&amp;quot;/ ; print &amp;quot;$1\n&amp;quot; ;'`&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$?&amp;quot; != &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
        echo &amp;quot;Unknown snmp error&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;$DATA&amp;quot; | perl  -n -e'&lt;br /&gt;
my $vid ;&lt;br /&gt;
my $ret=0 ;&lt;br /&gt;
while(&amp;lt;STDIN&amp;gt;){&lt;br /&gt;
        my %vid;&lt;br /&gt;
        if ( /\D*(\d+):.*/ ){ $vid=$1; }&lt;br /&gt;
        if ( /\s*(\S+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+).*/ ){&lt;br /&gt;
                $resource=$1 ;&lt;br /&gt;
                $usage=$2 ;&lt;br /&gt;
                $softlimit=$3 ;&lt;br /&gt;
                $hardlimit=$4 ;&lt;br /&gt;
                $time=$5 ;&lt;br /&gt;
                $expire=$6 ;&lt;br /&gt;
                if ( $usage &amp;gt;= $softlimit ){&lt;br /&gt;
                        print &amp;quot;WARNING: VZquota limit exceeded on $vid: $resource  usage-&amp;gt;$usage, softlimit-&amp;gt;$softlimit, hardlimit-&amp;gt;$hardlimit, time-&amp;gt;$time, expire-&amp;gt;$expire  &amp;quot; ;&lt;br /&gt;
                        $ret=1;&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
exit($ret);&lt;br /&gt;
'&lt;br /&gt;
RET2=$?&lt;br /&gt;
&lt;br /&gt;
#####################################################################################&lt;br /&gt;
########### return&lt;br /&gt;
#####################################################################################&lt;br /&gt;
&lt;br /&gt;
if [  $RET1  -gt $RET2  ]; then&lt;br /&gt;
        RET=$RET1&lt;br /&gt;
        else&lt;br /&gt;
        RET=$RET2&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if [  $RET  = 0  ]; then&lt;br /&gt;
        echo Ok.&lt;br /&gt;
fi&lt;br /&gt;
exit $RET&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
=== check_vzquota Without SNMP ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
RET=0&lt;br /&gt;
&lt;br /&gt;
echo `cat /proc/vz/vzquota` | perl  -n -e'&lt;br /&gt;
my $vid ;&lt;br /&gt;
my $ret=0 ;&lt;br /&gt;
while(&amp;lt;STDIN&amp;gt;){&lt;br /&gt;
        my %vid;&lt;br /&gt;
        if ( /\D*(\d+):.*/ ){ $vid=$1; }&lt;br /&gt;
        if ( /\s*(\S+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+).*/ ){&lt;br /&gt;
                $resource=$1 ;&lt;br /&gt;
                $usage=$2 ;&lt;br /&gt;
                $softlimit=$3 ;&lt;br /&gt;
                $hardlimit=$4 ;&lt;br /&gt;
                $time=$5 ;&lt;br /&gt;
                $expire=$6 ;&lt;br /&gt;
                if ( $usage &amp;gt;= $softlimit ){&lt;br /&gt;
                        print &amp;quot;WARNING: VZquota limit exceeded on $vid: $resource  usage-&amp;gt;$usage, softlimit-&amp;gt;$softlimit, hardlimit-&amp;gt;$hardlimit, time-&amp;gt;$time, expire-&amp;gt;$expire  &amp;quot; ;&lt;br /&gt;
                        $ret=1;&lt;br /&gt;
                }&lt;br /&gt;
                                print &amp;quot;$vid:$resource Usage: $usage Softlimit: $softlimit &amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
exit($ret);&lt;br /&gt;
'&lt;br /&gt;
RET=$?&lt;br /&gt;
echo&lt;br /&gt;
exit $RET&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
=== check_ubc Without SNMP ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
export FILE=/tmp/check_ubc&lt;br /&gt;
RET=0&lt;br /&gt;
&lt;br /&gt;
DATA=`cat /proc/user_beancounters`&lt;br /&gt;
&lt;br /&gt;
if [ -f $FILE ]; then&lt;br /&gt;
echo &amp;quot;$DATA&amp;quot; | perl  -n -e'&lt;br /&gt;
use Data::Dumper;&lt;br /&gt;
my $file=$ENV{&amp;quot;FILE&amp;quot;};&lt;br /&gt;
my $ret=0 ;&lt;br /&gt;
my $vid ;&lt;br /&gt;
my $resource ;&lt;br /&gt;
my $held ;&lt;br /&gt;
my $maxheld ;&lt;br /&gt;
my $barrier ;&lt;br /&gt;
my $limit ;&lt;br /&gt;
my $failcnt ;&lt;br /&gt;
my %beancounters ;&lt;br /&gt;
my %beancounters_old ;&lt;br /&gt;
while(&amp;lt;STDIN&amp;gt;){&lt;br /&gt;
        my %vmachine;&lt;br /&gt;
        if ( /\D*(\d+):.*/ ){ $vid=$1; $beancounters{$vid}=\%vmachine ; }&lt;br /&gt;
        if ( /^[\W\d]+([a-z]+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+).*/ ) {&lt;br /&gt;
                $resource=$1 ;&lt;br /&gt;
                $held=$2 ;&lt;br /&gt;
                $maxheld=$3 ;&lt;br /&gt;
                $barrier=$4 ;&lt;br /&gt;
                $limit=$5 ;&lt;br /&gt;
                $failcnt=$6 ;&lt;br /&gt;
                ${beancounters{$vid}}{$resource}=[$held , $maxheld , $barrier , $limit ,$failcnt ];&lt;br /&gt;
                if ( ($held  &amp;gt; $barrier) &amp;amp;&amp;amp; ($barrier != 0) ) {&lt;br /&gt;
                        print &amp;quot;WARNING: Limits on $vid: $resource  held-&amp;gt;$held , barrier-&amp;gt;$barrier ( limit-&amp;gt;$limit ) &amp;quot; ;&lt;br /&gt;
                        $ret=1;&lt;br /&gt;
                }&lt;br /&gt;
                                #print &amp;quot;$vid:$resource $held Barrier:$barrier &amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# read and parse old data&lt;br /&gt;
open(MYINPUTFILE, &amp;quot;&amp;lt;$file&amp;quot;);&lt;br /&gt;
while(&amp;lt;MYINPUTFILE&amp;gt;){&lt;br /&gt;
        my %vmachine;&lt;br /&gt;
        if ( /\D*(\d+):.*/ ){ $vid=$1; $beancounters_old{$vid}=\%vmachine ; }&lt;br /&gt;
        if ( /^[\W\d]+([a-z]+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+).*/ ) {&lt;br /&gt;
                $resource=$1 ;&lt;br /&gt;
                $held=$2 ;&lt;br /&gt;
                $maxheld=$3 ;&lt;br /&gt;
                $barrier=$4 ;&lt;br /&gt;
                $limit=$5 ;&lt;br /&gt;
                $failcnt=$6 ;&lt;br /&gt;
                ${beancounters_old{$vid}}{$resource}=[$held , $maxheld , $barrier , $limit ,$failcnt ];&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
foreach my $vmachine_id (keys %beancounters) {&lt;br /&gt;
        foreach my $resource (keys %{$beancounters{$vmachine_id}} ) {&lt;br /&gt;
                if ( defined($beancounters{$vmachine_id}{$resource}[4]) &amp;amp;&amp;amp; defined($beancounters_old{$vmachine_id}{$resource}[4]) ){&lt;br /&gt;
                        my $failcnt=$beancounters{$vmachine_id}{$resource}[4];&lt;br /&gt;
                        my $failcnt_old=$beancounters_old{$vmachine_id}{$resource}[4];&lt;br /&gt;
                        my $held=$beancounters{$vmachine_id}{$resource}[0];&lt;br /&gt;
                        my $maxheld=$beancounters{$vmachine_id}{$resource}[1];&lt;br /&gt;
                        my $barrier=$beancounters{$vmachine_id}{$resource}[2];&lt;br /&gt;
                        my $limit=$beancounters{$vmachine_id}{$resource}[3];&lt;br /&gt;
                        if ( $failcnt_old &amp;lt; $failcnt ){&lt;br /&gt;
                                print &amp;quot;CRITICAL: Incrased failcnt  $vmachine_id: $resource from $failcnt_old to $failcnt (held-&amp;gt;$held , maxheld-&amp;gt;$maxheld , barrier-&amp;gt;$barrier , limit-&amp;gt;$limit ) &amp;quot; ;&lt;br /&gt;
                                $ret=2;&lt;br /&gt;
                        }&lt;br /&gt;
                                                #print &amp;quot;$vmachine_id: Old_Failcnt: $failcnt_old Failcnt: $failcnt \n&amp;quot;;&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if ($ret == 0 ) { print &amp;quot;OK. \n&amp;quot; ; }&lt;br /&gt;
# print Dumper(%beancounters_old) ;&lt;br /&gt;
# print &amp;quot;\n&amp;quot;;&lt;br /&gt;
exit($ret);&lt;br /&gt;
'&lt;br /&gt;
&lt;br /&gt;
RET=$?&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;$DATA&amp;quot; &amp;gt; $FILE&lt;br /&gt;
exit $RET&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Justhamade</name></author>
		
	</entry>
</feed>