Difference between revisions of "Talk:Monitoring /proc/user beancounters with nagios"

From OpenVZ Virtuozzo Containers Wiki
Jump to: navigation, search
(New page: {{DISPLAYTITLE:Monitoring /proc/user_beancounters with email}} To be added locally on the VZ HN to Works as nagios-plugin with option '-f' or reports an increase of a failcnt-value by ma...)
 
m (Reverted edits by 121.12.175.21 (Talk) to last revision by Mgual)
 
(11 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
{{DISPLAYTITLE:Monitoring /proc/user_beancounters with email}}
 
{{DISPLAYTITLE:Monitoring /proc/user_beancounters with email}}
To be added locally on the VZ HN to
 
  
Works as nagios-plugin with option '-f' or reports an increase of a failcnt-value by mail if run e.g. as a cronjob with option '-t'. We use it with both cases to be sure that we see a peak in case it happened between the nagios-checks.
+
== Introduction ==
  
<source lang=python>
+
This script gives a warning if any parameter in a virtual environment (VZ) exceeds 80% of resources.
#!/usr/bin/python
 
# Copyright (C) 2008 Christian Benke
 
# Distributed under the terms of the GNU General Public License v2
 
# v0.2 2008-04-04
 
# Christian Benke <benkokakao  gmail  com>
 
  
import string
+
== packages basic installation ==
import pickle
+
<pre>
import sys
+
  aptitude install nail gawk
import getopt
+
</pre>
import re
 
  
veid=''
+
== nail configuration ==
current_data=dict()
+
  Configures  <code> /etc/nailrc </code> or <code> ~/.mailrc </code> files.
 +
<pre>
 +
set smtp=smtp.server.org
 +
set from=nail@smtp.server.org
 +
set charset=iso-8859-1
 +
</pre>
 +
 
 +
== configuration ==
 +
 
 +
Copy the script and configure the <code> /etc/crontab </code>
 +
 
 +
== Script resource ==
 +
 
 +
<source lang=bash>
 +
#!/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

Latest revision as of 17:16, 12 October 2010


Introduction[edit]

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

packages basic installation[edit]

  aptitude install nail gawk 

nail configuration[edit]

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

configuration[edit]

Copy the script and configure the /etc/crontab

Script resource[edit]

<source lang=bash>

  1. !/bin/bash resource.sh
  2. Copyright (C) 2008 Mgual
  3. Distributed under to GNU General Public License v2
  4. v0.1 2008-08-13
  5. Ajuntament de Benicarló


  1. !/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"
               }
       '


  1. 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 wc -l)" != "5"  ; then

       cat /tmp/beancounters   |  nail -s "Server:resource.sh Warning " user@smtp-server.org

fi