>_Nagios service_top.sh – script para checar processos, memória e cpu

O Script abaixo tem como função checar o consumo de um determinado serviço. Ele trás os resultados da quantidade de processos atual, consumo da memória e cpu. Sua utilização é bem simples, basta passar os parâmetros para realização da consulta.

Exemplo:

# ./service_top.sh --help
Options:
  -p|--pid-path)
  -n|--pid-name)
  -s|--service_name)
  -w|--warning_valor)
  -c|--critical_valor)
./service_top.sh -p /var/run -n httpd.pid -s apache -w 70 -c 150
OK - Total de Processos=19|memoria=2.1% cpu=22.6% Processos=19;70;150
#!/bin/bash

RESULT_OK=0
RESULT_WR=1
RESULT_CR=2
RESULT_UK=3

print_help() {
    echo ""
    echo "Options:"
    echo "  -p|--pid-path)"
    echo "  -n|--pid-name)"
    echo "  -s|--service_name)"
    echo "  -w|--warning_valor)"
    echo "  -c|--critical_valor)"
    exit $RESULT_UK
}

while test -n "$1"; do
    case "$1" in
	--help|-h)
            print_help
            exit
            ;;
        --binary_path|-b)
            path_binary=$2
            shift
            ;;
        --pid_path|-p)
            path_pid=$2
            shift
            ;;
        --pid_name|-n)
            name_pid=$2
            shift
            ;;
	--service_name|-s)
            service_name=$2
            shift
            ;;
	 --critical_valor|-c)
	    critical_valor=$2
	    shift
	    ;;
	 --warning_valor|-w)
	   warning_valor=$2
           shift
	   ;;
        *)
            echo "Argumento desconhecido: $1"
            print_help
	    exit $RESULT_UK
            ;;
    esac
    shift
done

check_memoria () {
	var1=$(ps aux | /bin/grep $service_name | /bin/awk '{print $4}')
	MEM=`echo ${var1} | /bin/sed 's/ /+/g' | bc -l`
	MEM=`echo ${MEM} | /bin/sed 's/^./0./g'`
	echo $MEM%
}

check_cpu () {
	var1=$(ps aux | /bin/grep $service_name | /bin/awk '{print $3}')
	CPU=`echo ${var1} |  /bin/sed 's/ /+/g' | bc -l`
	CPU=`echo ${CPU} | /bin/sed 's/^./0./g'`
	echo $CPU%
}

check_process () {
	TOTAL_PROCS=$(ps -fu $service_name | /bin/grep -v grep | /bin/grep -iw $service_name | wc -l )
	if [ $TOTAL_PROCS -lt $warning_valor ]; then
   		echo "OK - Total de Processos=$TOTAL_PROCS
|memoria=`check_memoria` cpu=`check_cpu` Processos=$TOTAL_PROCS;$warning_valor;$critical_valor"
		exit $RESULT_OK
	elif [ $TOTAL_PROCS -ge $warning_valor ] && [ $TOTAL_PROCS -le $critical_valor ]; then
   		echo "WARNING - Total de Processos=$TOTAL_PROCS
|memoria=`check_memoria` cpu=`check_cpu` Processos=$TOTAL_PROCS;$warning_valor;$critical_valor"
   		exit $RESULT_WR
	else
		echo "CRITICAL - Total de Processos=$TOTAL_PROCS
|memoria=`check_memoria` cpu=`check_cpu` Processos=$TOTAL_PROCS;$warning_valor;$critical_valor"
   		exit $RESULT_CR
	fi
}

if  test -e "$path_pid/$name_pid"
then
	check_process
else
     	echo "error verifique"
      	exit $RESULT_UK
fi

Exemplo:

1

Captura de tela de 2012-12-28 16:26:05

Link para download do script:
services_top.sh

>_Nagios service_top.sh – script para checar processos, memória e cpu
Tagged on:

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

%d blogueiros gostam disto: