Monitoring /proc/user_beancounters with email

From OpenVZ Linux Containers Wiki

Jump to: navigation, search


Contents

[edit] Introduction

This script gives a warning if any parameter in a virtual environment (VZ) exceeds 80% of resources.

[edit] packages basic installation

  aptitude install nail gawk 

[edit] nail configuration

 Configures    /etc/nailrc  or  ~/.mailrc  files.
set smtp=smtp.server.org
set from=nail@smtp.server.org
set charset=iso-8859-1

[edit] configuration

Copy the script and configure the /etc/crontab

[edit] Script resource

#!/bin/bash resource.sh
# Copyright (C) 2008 Mgual
# Distributed under to GNU General Public License v2
# v0.1 2008-08-13
# Ajuntament de Benicarló
 
 
 
#!/bin/bash
 
 
 
gawk ' BEGIN {
                printf "%3s %-20s %3s %3s \n", "ID", "Parameter", "%bar", "%lim" > "/tmp/beancounters"
        }
 
        /dummy/||/Version/||/uid/ { next }
        ! /:/ {
                RESOURCE=$1
                MAXHELD=$3
                BARRIER=$4
                LIMIT=$5
              }
        /:/  {  gsub(/:/, "", $1)
                printf "------- %s ------- \n",$1
                VZ=$1
                RESOURCE=$2
                MAXHELD=$4
                BARRIER=$5
                LIMIT=$6
              }
        {
                #printf "R=%s M=%s B=%s L=%s ", RESOURCE, MAXHELD, BARRIER, LIMIT
                if (BARRIER>0) {
                        PBARRIER=MAXHELD*100/BARRIER
                } else {
                        PBARRIER=0
                }
                if (LIMIT>0) {
                        PLIMIT=MAXHELD*100/LIMIT
                } else {
                        PLIMIT=0
                }
                printf "%-20s %3d %3d ", RESOURCE , PBARRIER, PLIMIT
                if (PBARRIER>=80)  {
                        printf " Warning "
                        printf "%3d %-20s %3d %3d Perill\n", VZ, RESOURCE , PBARRIER, PLIMIT >> "/tmp/beancounters"
                }
                printf "\n"
        }
        ' /proc/user_beancounters
 
echo "---------------------------------------------------" >> /tmp/beancounters
echo "" | gawk -vVZ='ID' -vRESOURCE='Use Disc%' '
               {
                        printf "%3s %-20s \n", VZ, RESOURCE  >> "/tmp/beancounters"
                }
        '
 
 
# Quota Disc
 
for i in $(vzlist | cut -d" " -f 8)
do
        vzctl exec $i df -h |  gawk -vVEID=$i '/^simfs/ { if ($5 > "80%") { printf "%s %s\n", VEID, $5 }  }' >>/tmp/beancounters
 
done
 
echo "---------------------------------------------------" >> /tmp/beancounters
echo "" | gawk -vVZ='ID' -vRESOURCE='IUse Disc%' '
               {
                        printf "%3s %-20s \n", VZ, RESOURCE  >> "/tmp/beancounters"
                }
        '
for i in $(vzlist | cut -d" " -f 8)
do
        vzctl exec $i df -i |  gawk -vVEID=$i '/^simfs/ { if ($5 > "80%") { printf "%s %s\n", VEID, $5 }  }' >>/tmp/beancounters
 
done
 
 
if [[ "$(cat /tmp/beancounters | wc -l)" != "5"  ]] ; then
        cat /tmp/beancounters   |  nail -s "Server:resource.sh Warning " user@smtp-server.org
fi
Personal tools
Namespaces
Variants
Actions
Navigation
Sites
Toolbox