Skip to content
Extraits de code Groupes Projets
check_mem 3,79 ko
Newer Older
  • Learn to ignore specific revisions
  • Benjamin's avatar
    Benjamin a validé
    #!/usr/bin/env bash
    
    #Set script name
    SCRIPT=`basename ${BASH_SOURCE[0]}`
    
    #Set default values
    optMW=95
    optMC=98
    optSW=95
    optSC=98
    
    # help function
    function printHelp {
      echo -e \\n"Help for $SCRIPT"\\n
      echo -e "Basic usage: $SCRIPT -w {warning} -c {critical} -W {warning} -C {critical}"\\n
      echo "Command switches are optional, default values for warning is 95% and critical is 98%"
      echo "-w - Sets warning value for Memory Usage. Default is 95%"
      echo "-c - Sets critical value for Memory Usage. Default is 98%"
      echo "-W - Sets warning value for Swap Usage. Default is 95%"
      echo "-C - Sets critical value for Swap Usage. Default is 98%"
      echo -e "-h  - Displays this help message"\\n
      echo -e "Example: $SCRIPT -w 80 -c 90 -W 40 -C 60"\\n
      echo -e \\n\\n"Author: Lukasz Gogolin, lukasz.gogolin@gmail.com"
      echo -e "Git: http://bitbucket.org/lgogolin/nagios_plugins"
      exit 1
    }
    
    # regex to check is OPTARG an integer
    re='^[0-9]+$'
    
    while getopts :w:c:W:C:h FLAG; do
      case $FLAG in
        w)
          if ! [[ $OPTARG =~ $re ]] ; then
            echo "error: Not a number" >&2; exit 1
          else
            optMW=$OPTARG
          fi
          ;;
        c)
          if ! [[ $OPTARG =~ $re ]] ; then
            echo "error: Not a number" >&2; exit 1
          else
            optMC=$OPTARG
          fi
          ;;
        W)
          if ! [[ $OPTARG =~ $re ]] ; then
            echo "error: Not a number" >&2; exit 1
          else
            optSW=$OPTARG
          fi
          ;;
        C)
          if ! [[ $OPTARG =~ $re ]] ; then
            echo "error: Not a number" >&2; exit 1
          else
            optSC=$OPTARG
          fi
          ;;
        h)
          printHelp
          ;;
        \?)
          echo -e \\n"Option - $OPTARG not allowed."
          printHelp
          exit 2
          ;;
      esac
    done
    
    shift $((OPTIND-1))
    
    array=( $(cat /proc/meminfo | egrep 'MemTotal|MemFree|Buffers|Cached|SwapTotal|SwapFree' |awk '{print $1 " " $2}' |tr '\n' ' ' |tr -d ':' |awk '{ printf("%i %i %i %i %i %i %i", $2, $4, $6, $8, $10, $12, $14) }') )
    
    memTotal_k=${array[0]}
    memTotal_b=$(($memTotal_k*1024))
    memFree_k=${array[1]}
    memFree_b=$(($memFree_k*1024))
    memBuffer_k=${array[2]}
    memBuffer_b=$(($memBuffer_k*1024))
    memCache_k=${array[3]}
    memCache_b=$(($memCache_k*1024))
    memTotal_m=$(($memTotal_k/1024))
    memFree_m=$(($memFree_k/1024))
    memBuffer_m=$(($memBuffer_k/1024))
    memCache_m=$(($memCache_k/1024))
    memUsed_b=$(($memTotal_b-$memFree_b-$memBuffer_b-$memCache_b))
    memUsed_m=$(($memTotal_m-$memFree_m-$memBuffer_m-$memCache_m))
    memUsedPrc=$((($memUsed_b*100)/$memTotal_b))
    
    swapTotal_k=${array[5]}
    swapTotal_b=$(($swapTotal_k*1024))
    swapFree_k=${array[6]}
    swapFree_b=$(($swapFree_k*1024))
    swapUsed_k=$(($swapTotal_k-$swapFree_k))
    swapUsed_b=$(($swapUsed_k*1024))
    swapTotal_m=$(($swapTotal_k/1024))
    swapFree_m=$(($swapFree_k/1024))
    swapUsed_m=$(($swapTotal_m-$swapFree_m))
    
    if [ $swapTotal_k -eq 0 ]; then
        swapUsedPrc=0
    else
        swapUsedPrc=$((($swapUsed_k*100)/$swapTotal_k))
    fi
    
    message="[MEMORY] Utilisation : $memUsedPrc%  ---  $memUsed_m / $memTotal_m MB  \n[SWAP] Utilisation : $swapUsedPrc%  ---  $swapUsed_m / $swapTotal_m MB  \n\nMTOTAL=$memTotal_b;;;; MUSED=$memUsed_b;;;; MCACHE=$memCache_b;;;; MBUFFER=$memBuffer_b;;;; STOTAL=$swapTotal_b;;;; SUSED=$swapUsed_b;;;;"
    
    
    if [ $memUsedPrc -ge $optMC ] || [ $swapUsedPrc -ge $optSC ]; then
        swapUsedPrc=0
    else
        swapUsedPrc=$((($swapUsed_k*100)/$swapTotal_k))
    fi
    
    message="[MEMORY] Utilisation : $memUsedPrc%  ---  $memUsed_m / $memTotal_m MB  \n[SWAP] Utilisation : $swapUsedPrc%  ---  $swapUsed_m / $swapTotal_m MB  \n\nMTOTAL=$memTotal_b;;;; MUSED=$memUsed_b;;;; MCACHE=$memCache_b;;;; MBUFFER=$memBuffer_b;;;; STOTAL=$swapTotal_b;;;; SUSED=$swapUsed_b;;;;"
    
    
    if [ $memUsedPrc -ge $optMC ] || [ $swapUsedPrc -ge $optSC ]; then
      echo -e $message
      $(exit 2)
    elif [ $memUsedPrc -ge $optMW ] || [ $swapUsedPrc -ge $optSW ]; then
      echo -e $message
      $(exit 1)
    else
      echo -e $message
      $(exit 0)
    fi