Oracle Live

11/04/2016

CPU Parsea sar file

Filed under: Scripts — mogukiller @ 10:40 pm
Tags:

El script ofrece un menu en el que se puede configurar la fecha de inicio y fin, la hora de inicio y fin y la granularidad de los datos. El resultado es el parseo de los ficheros .sar del sistema operativo.


/*
2016-03-24:

        ------------- ------------ ------------ ------------ 
        |HORA        |%user       |%iowait     |%idle       |
        ------------- ------------ ------------ ------------ 
        |  00:10:01  |  3.09      |  0.01      |  94.10     |
        |  00:20:01  |  3.45      |  0.01      |  93.44     |
        |  00:30:01  |  2.70      |  0.01      |  94.70     |
        |  00:40:01  |  3.06      |  0.00      |  94.20     |
        |  00:50:01  |  2.96      |  0.01      |  94.31     |
        |  01:00:01  |  2.92      |  0.01      |  94.39     |
        |  01:10:01  |  2.93      |  0.01      |  94.27     |
        |  01:20:01  |  3.00      |  0.01      |  94.23     |
        |  01:30:01  |  2.98      |  0.01      |  94.35     |
        |  01:40:01  |  3.00      |  0.00      |  94.17     |
		.....
		------------- ------------ ------------ ------------
        |  Average:  |  2.54      |  0.03      |  94.63     |
        ------------- ------------ ------------ ------------ 
*/

/* EJ. EJECUCION
~/lmds$ ./parsera_sar.sh 
Fechas disponibles: 2016/02/25 al 2016/03/25
Fecha inicio (YYYY/MM/DD) [2016/02/25]: 2016/03/24
Fecha fin (YYYY/MM/DD) [2016/03/25]: 
Hora Inicio (hh:mm:ss) [todo]: 
Hora Fin         (hh:mm:ss) [todo]: 
Intervalo        (seg) [default]: 300
Parametros:   -i 300
*/

#!/bin/bash
 
#set -x
#===============================================================================
#   parsea_sar.sh
#
#   Parsea los ficheros de sar dejandolos en formato cvs
#   Opciones de sar:
#       -f: Obtiene los datos desde fichero 
#
#   Autor: lmds
#   Fecha: 2013/05/07
#   Version: 1.0
#===============================================================================
 
rm -f .tmp*.tmp 2>/dev/null
ftmp=.tmp_${RANDOM}.tmp
export S_TIME_FORMAT=ISO
export LC_TIME="POSIX"
 
FICHERO="$(ls -lrt --time-style='+%Y/%m/%d' /var/log/sa |grep -v ^total)"
FECH_START=$(echo "$FICHERO" |head -1|awk '{print $6}')
FECH_END=$( echo "$FICHERO" |tail -1|awk '{print $6}')
 
clear 
 
 echo "Fechas disponibles: ${FECH_START} al ${FECH_END}"
 read -p "Fecha inicio (YYYY/MM/DD) [${FECH_START}]: " fecha_inicio
 fecha_inicio=${fecha_inicio:-"$FECH_START"}
 read -p "Fecha fin (YYYY/MM/DD) [${FECH_END}]: " fecha_fin
 fecha_fin=${fecha_fin:-"$FECH_END"}
 read -p "Hora Inicio (hh:mm:ss) [todo]: " hora_inicio
 read -p "Hora Fin   (hh:mm:ss) [todo]: " hora_fin
 read -p "Intervalo      (seg) [default]: " intervalo
 
FICH_SALIDA=cpu_parse_$(date -d "$fecha_inicio" '+%m%d')_$(date -d "$fecha_fin" '+%m%d').csv
 
 
[[ -n $hora_inicio ]] && hora_inicio="-s ${hora_inicio}"
[[ -n $hora_fin ]] && hora_fin="-e ${hora_fin}"
[[ -n $intervalo ]] && intervalo="-i ${intervalo}"
 
param="${hora_inicio} ${hora_fin} ${intervalo}"
 
echo "Parametros: $param"
 
for file in `ls -1tr /var/log/sa/sa[0-9][0-9]`
do
        fecha_fichero="$(ls -lrt --time-style='+%Y/%m/%d' ${file}|awk '{print $6}')"
        if (( $(date -d "$fecha_fichero" '+%s') >= $(date -d "$fecha_inicio" '+%s') )) && (( $(date -d "$fecha_fichero" '+%s') <= $(date -d "$fecha_fin" '+%s') )); then
                 
                sar ${param} -f $file | egrep -v "%user">$ftmp
                v_dia=`head -1 $ftmp | awk '{print $4}'`
                echo -e "\n${v_dia}:\n"
                awk 'BEGIN {
                printf "\t%s\n","------------- ------------ ------------ ------------ ";
                printf "\t|%-12s|%-12s|%-12s|%-12s|\n","HORA","%user","%iowait","%idle";
                printf "\t%s\n","------------- ------------ ------------ ------------ "} 
                { if ($1 == "Average:")
                 {
                        printf "\t%s\n","------------- ------------ ------------ ------------";
                        printf "\t|  %-10s|  %-10s|  %-10s|  %-10s|\n", $1, $3, $6,$8 ;
                 }
                 else if ($1 ~ /^[0-9][0-9]/)
                    printf "\t|  %-10s|  %-10s|  %-10s|  %-10s|\n", $1, $3, $6,$8 
                }
                END {printf "\t%s\n","------------- ------------ ------------ ------------ ";}
                ' $ftmp             
        fi
done

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

Blog de WordPress.com.

A %d blogueros les gusta esto: