Oracle Live

07/08/2013

Filesystem Monitor

Filed under: Scripts — mogukiller @ 10:16 am
Tags: ,

Script que monitoriza los filesystem de un backend, refrescando y almacenando la salida. Parametrizable con el umbral de aviso.

/* Ejemplo salida
Fecha: 2016/03/07 12:39:41

Mounted                                 Size    Used    Avail   Use%    
/                                       32G     19G     12G     64%     
/dev/shm                                542G    23G     520G    5%      
/boot                                   529M    42M     461M    9%      
/u01                                    106G    65G     36G     65%     
/apps                                   508M    18M     465M    4%      
/aplicaciones                           508M    18M     465M    4%      
/apps/users                             3.2G    81M     3.0G    3%      
/apps/backup                            5.4G    1.7G    3.4G    33%     
/apps/OEMAgent                          6.4G    1.1G    5.1G    18%     
/apps/oradb/audit                       11G     424M    9.7G    5%      
/apps/oradb/trc                         43G     1.2G    40G     3%      
/apps/security/seos                     1.1G    450M    562M    45%     

WARNING: / (64%) 
WARNING: /u01 (65%) 
*/


#!/bin/ksh

#------------------------------------------------------------------------
# Script: Monitor_FileSystem.ksh
#
# INFO:   Monitoriza los filesystem de un BE
#           
# Fecha: 22/01/2013
# Autor: lmds
#------------------------------------------------------------------------

verde='\033[1;32m'
rojo='\033[1;31m'
normal='\033[m'

##------------------------------------------------##
## Function: Despliega_Script
## Despliega script de monitorizacion
##------------------------------------------------##

Despliega_Script()
{	
    NOMBRE_UTIL=Monitor_Filesystem.ksh
    MY_SCRIPT=`pwd`/$(basename $0)
    # obtengo la linea de inicio del fichero de extraccion
    linea_inicio=`grep -n ^#-#-#-# $MY_SCRIPT | grep $NOMBRE_UTIL | cut -d: -f1`
    [ -z "$linea_inicio" ] && Error "no se ha encontrado fichero $NOMBRE_UTIL"
    linea_inicio=`expr $linea_inicio + 1`
    # creo el fichero de extraccion de los datos de una tabla
    tail -n +$linea_inicio $MY_SCRIPT | awk 'BEGIN {imprime=1}
	{ if (imprime==1) print $0;
	  if (($0 == "/") || ($0 ~ /^#-#-#-#/)) imprime=0;
	}' > $NOMBRE_UTIL
	
	chmod 755 Monitor_Filesystem.ksh
}

##------------------------------------------------##
## Function: Visualiza_traza
## Despliega script de monitorizacion
##------------------------------------------------##
Visualiza_traza()
{	
	FICH_LOG=`ls -1rt monitor_${ORACLE_SID}_* | tail -1`
	while true
			do	
				clear
				linea_inicio=`grep -n ^Fecha: ${FICH_LOG}| tail -1 | cut -d: -f1`	
				tail -n +$linea_inicio $FICH_LOG
				sleep 20
			done
}
##------------------------------------------------##
## Main
## 
##------------------------------------------------##

	procesos=`ps -fea | grep Monitor_Filesystem | grep -v grep | wc -l`
	if [ ${procesos} -ne 0 ];then
			doContinue=n
			echo -n "Monitorizacion Activa, paramos? (y/n) " 
			read doContinue
			if [ "$doContinue" = "y" ]; then
				ps -fea | grep Monitor_Filesystem | grep -v grep | awk '{ print $2 }' | xargs kill -9
				echo "Parando..."
				exit
			fi
			Visualiza_traza
	fi
	if [ ! -f "Monitor_FileSystem.ksh" ]; then
		Despliega_Script		
	fi
	
	nohup ./Monitor_Filesystem.ksh &
	
	clear
	
	echo "Esperando ..."
	sleep 10
	
	Visualiza_traza
	
	exit
# ----------------------------------------------------------------------------------
# - Codigo del escript de monitorizacion                                       -
# ----------------------------------------------------------------------------------
#-#-#-#-#-# Codigo del fichero "Monitor_Filesystem.ksh_tmp" #-#-#-#-# NO BORRAR #-#-#-#-#-#
	
		
		fec=`date +%Y%m%d_%H%M%S`
		FICH_LOG=monitor_${ORACLE_SID}_$fec.log
		THRESHOLD=90
		ftmp=/tmp/.$$_${RANDOM}.tmp

		echo "#---------------------------------------------------#" >$FICH_LOG
		echo "# Monitor FileSystems"  >>$FICH_LOG
		echo "#---------------------------------------------------#" >>$FICH_LOG
		echo ""	>>$FICH_LOG
		while true; do
			hora=`date +'%Y/%m/%d %H:%M:%S'`
			echo "Fecha: ${hora}" >>$FICH_LOG
			echo "" >>$FICH_LOG
			df -H -P | awk '{printf ("%-40s%-8s%-8s%-8s%-8s\n",$6,$2,$3,$4,$5)}' >> $FICH_LOG
			echo "" >>$FICH_LOG
			df -H -P | grep -vE '^Filesystem|tmpfs' | awk '{ print $5 " " $6 }' | grep -v docs | while read output
			do
			  fspace=$(echo $output | awk '{ print $1}' | cut -d'%' -f1  )
			  fs=$(echo $output | awk '{ print $2 }' )
			  if [ $fspace -ge $THRESHOLD ]; then
				echo "WARNING: $fs (${fspace}%) " >>$FICH_LOG
			  fi
			done
			echo "" >>$FICH_LOG
			sleep 10
		done
exit		
		
		

Dejar un comentario »

Aún no hay comentarios.

RSS feed for comments on this post. TrackBack URI

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Crea un blog o un sitio web gratuitos con WordPress.com.

A %d blogueros les gusta esto: