Coleta de Performance com SAR (systat package)
Publicado por Hertz Raya Zocolan Silva (última atualização em 06/07/2018)
[ Hits: 3.434 ]
Download coleta_performance.sh
Script para coleta de dados de performance. Pode ser inserido na cron do root. Necessita o pacote sysstat.
Informações levantadas:
Data;
Hora;
Total Memoria (Mb)
Memoria Utilizada (Mb)
Memoria Livre (Mb)
Total Swap (Mb)
Swap Utilizado (Mb)
Swap Livre (Mb)
CPU Livre
CPU USER
CPU SYSTEM
Transac P/Seg Disco
Total de Arqs em Aberto
Total de Inodes Utilizados
Tempo do Servidor Ligado
Formato do arquivo de saída: CSV com (;) separando os campos
#!/bin/bash
#
# Script : /usr/local/scripts/coleta_performance.sh
# Feito : Hertz S. ( 11/04/2016 )
# Obs : Script para coleta de informacoes de performance
# e gera dados estatisticos em arquivo
#
#exec 1>/dev/null
#exec 2>&1
#
# Rotina de Inclusao de Variaveis Globais -------------------------------------
#
PROCESS_NAME="Coleta de Informacoes de Performance"
export PATH=$PATH:/usr/bin
SERVER="`hostname`"
IP_LOCAL="`/sbin/ifconfig | grep \"cast\" | head -1 | awk '{print $2}' | cut -d\: -f2,2`"
DT_FULL="`date +%d/%m/%Y`"
DT_DT="`date +%d%m%Y`"
DT_HORA="`date +%H:%M:%S`"
DT_HR="`date +%H%M%S`"
DT_MES="`date +%m_%Y`"
DT_ano="`date +%Y`"
DT_mes="`date +%m`"
DT_DIA="`date +%a`"
if [ "${DT_DIA}" = "Sun" ] ; then DT_DIA="Domingo" ; fi
if [ "${DT_DIA}" = "Mon" ] ; then DT_DIA="Segunda" ; fi
if [ "${DT_DIA}" = "Tue" ] ; then DT_DIA="Terca" ; fi
if [ "${DT_DIA}" = "Wed" ] ; then DT_DIA="Quarta" ; fi
if [ "${DT_DIA}" = "Thu" ] ; then DT_DIA="Quinta" ; fi
if [ "${DT_DIA}" = "Fri" ] ; then DT_DIA="Sexta" ; fi
if [ "${DT_DIA}" = "Sat" ] ; then DT_DIA="Sabado" ; fi
if [ "${DT_mes}" = "01" ] ; then DT_MES_NAME="Janeiro" ; fi
if [ "${DT_mes}" = "02" ] ; then DT_MES_NAME="Fevereiro" ; fi
if [ "${DT_mes}" = "03" ] ; then DT_MES_NAME="Marco" ; fi
if [ "${DT_mes}" = "04" ] ; then DT_MES_NAME="Abril" ; fi
if [ "${DT_mes}" = "05" ] ; then DT_MES_NAME="Maio" ; fi
if [ "${DT_mes}" = "06" ] ; then DT_MES_NAME="Junho" ; fi
if [ "${DT_mes}" = "07" ] ; then DT_MES_NAME="Julho" ; fi
if [ "${DT_mes}" = "08" ] ; then DT_MES_NAME="Agosto" ; fi
if [ "${DT_mes}" = "09" ] ; then DT_MES_NAME="Setembro" ; fi
if [ "${DT_mes}" = "10" ] ; then DT_MES_NAME="Outubro" ; fi
if [ "${DT_mes}" = "11" ] ; then DT_MES_NAME="Novembro" ; fi
if [ "${DT_mes}" = "12" ] ; then DT_MES_NAME="Dezembro" ; fi
# Declaracao de Variaveis -----------------------------------------------------
DIRCOL="/usr/local/coleta_`hostname`/performance/${DT_MES}"
mkdir -p ${DIRCOL}
#
# Inicio do Script ------------------------------------------------------------
#
#
# Variavel de UPTIME da maquina : Tempo que ela esta ligada -------------------
#
# # uptime
# 17:13:29 up 8:11, 9 users, load average: 0.04, 0.08, 0.05
UPTIME="`uptime | cut -d\, -f1,1 | awk '{print $2,$3,$4,$5}'`"
#
# Descricao das Variaveis relacionadas abaixo --[ free -b ]--------------------
#
# MEM_TOT --> Total de Memoria
# MEM_USED --> Total de Memoria Utilizada
# MEM_FREE --> Total de Memoria Livre
# SWP_TOT --> Total de Swap
# SWP_USED --> Total de Swap utilizado
# SWP_FREE --> Total de Swap Livre
#
free -m > /tmp/tmp.$$
MEM_TOT="`cat /tmp/tmp.$$ | grep Mem | awk '{print $2}'`"
MEM_USED="`cat /tmp/tmp.$$ | grep Mem | awk '{print $3}'`"
MEM_FREE="`cat /tmp/tmp.$$ | grep Mem | awk '{print $4}'`"
SWP_TOT="`cat /tmp/tmp.$$ | grep Swap | awk '{print $2}'`"
SWP_USED="`cat /tmp/tmp.$$ | grep Swap | awk '{print $3}'`"
SWP_FREE="`cat /tmp/tmp.$$ | grep Swap | awk '{print $4}'`"
rm /tmp/tmp.$$
#
# Descricao das Variaveis relacionadas abaixo --[ sar -u 1 3 ]-----------------
#
# CPU_IDLE --> Porcentagem de Utilizacao de CPU
# CPU_USER --> Porcentagem de Utilizacao de USER LEVEL ( Aplicacao )
# CPU_SYST --> Porcentagem de Utilizacao de SYSTEM LEVEL ( Kernel )
#
sar -u 1 3 | tail -1 > /tmp/tmp.$$
CPU_IDLE="`cat /tmp/tmp.$$ | awk '{print $8}'`"
CPU_USER="`cat /tmp/tmp.$$ | awk '{print $3}'`"
CPU_SYST="`cat /tmp/tmp.$$ | awk '{print $5}'`"
rm /tmp/tmp.$$
#
# Descricao das Variaveis relacionadas abaixo --[ sar -b 1 3 ]-----------------
#
# DSK_TPS --> Total de Transferencias por segundo em disco
#
sar -b 1 3 | tail -1 > /tmp/tmp.$$
DSK_TPS="`cat /tmp/tmp.$$ | awk '{print $2}'`"
rm /tmp/tmp.$$
#
# Descricao das Variaveis relacionadas abaixo --[ sar -v 1 3 ]-----------------
#
# FILE_SZ --> Total de Arquivos Abertos
# INODE_SZ --> Total de Inodes Utilizados
#
sar -v 1 3 | tail -1 > /tmp/tmp.$$
FILE_SZ="`cat /tmp/tmp.$$ | awk '{print $3}'`"
INODE_SZ="`cat /tmp/tmp.$$ | awk '{print $4}'`"
rm /tmp/tmp.$$
#
# Criacao do Arquivo de Coleta de Performance ---------------------------------
#
MEM_TOT_X="Total Memoria (Mb)" #--> 01
MEM_USED_X="Memoria Utilizada (Mb)" #--> 02
MEM_FREE_X="Memoria Livre (Mb)" #--> 03
SWP_TOT_X="Total Swap (Mb)" #--> 04
SWP_USED_X="Swap Utilizado (Mb)" #--> 05
SWP_FREE_X="Swap Livre (Mb)" #--> 06
CPU_IDLE_X="CPU Livre" #--> 07
CPU_USER_X="CPU USER" #--> 08
CPU_SYST_X="CPU SYSTEM" #--> 09
DSK_TPS_X="Transac P/Seg Disco" #--> 10
FILE_SZ_X="Total de Arqs em Aberto" #--> 11
INODE_SZ_X="Total de Inodes Utilizados" #--> 12
UPTIME_X="Tempo do Servidor Ligado" #--> 13
#
# Descomentar estas linhas para Debug -----------------------------------------
#
# echo " MEM_TOT --> $MEM_TOT"
# echo "MEM_USED --> $MEM_USED"
# echo "MEM_FREE --> $MEM_FREE"
# echo " SWP_TOT --> $SWP_TOT"
# echo "SWP_USED --> $SWP_USED"
# echo "SWP_FREE --> $SWP_FREE"
# echo "CPU_IDLE --> $CPU_IDLE"
# echo "CPU_USER --> $CPU_USER"
# echo "CPU_SYST --> $CPU_SYST"
# echo " DSK_TPS --> $DSK_TPS"
# echo " FILE_SZ --> $FILE_SZ"
# echo "INODE_SZ --> $INODE_SZ"
#
# Gravacao dos Dados da Coleta em Arquivo -------------------------------------
#
PERFTXT="${DIRCOL}/${DT_DT}.txt"
if [ -f ${PERFTXT} ]
then
echo $PERFTXT existe > /dev/null
echo "${DT_FULL};${DT_HORA};${MEM_TOT};${MEM_USED};${MEM_FREE};${SWP_TOT};${SWP_USED};${SWP_FREE};${CPU_IDLE};${CPU_USER};${CPU_SYST};${DSK_TPS};${FILE_SZ};${INODE_SZ};${UPTIME}" >> ${PERFTXT}
else
echo $PERFTXT nao > /dev/null
echo "[ ${SERVER} ${IP_LOCAL} ] - ${DT_MES_NAME} de ${DT_ano}" > ${PERFTXT}
echo "" >> ${PERFTXT}
echo "Data;Hora;${MEM_TOT_X};${MEM_USED_X};${MEM_FREE_X};${SWP_TOT_X};${SWP_USED_X};${SWP_FREE_X};${CPU_IDLE_X};${CPU_USER_X};${CPU_SYST_X};${DSK_TPS_X};${FILE_SZ_X};${INODE_SZ_X};${UPTIME_X}" >> ${PERFTXT}
echo "${DT_FULL};${DT_HORA};${MEM_TOT};${MEM_USED};${MEM_FREE};${SWP_TOT};${SWP_USED};${SWP_FREE};${CPU_IDLE};${CPU_USER};${CPU_SYST};${DSK_TPS};${FILE_SZ};${INODE_SZ};${UPTIME}" >> ${PERFTXT}
fi
#
# Final do Script ------------------------------------------------------------
#
Desativando mapas que não possuem bots no CS
Selecionar wallpaper no Fluxbox (baseado no Xdialog)
Script para montar compartilhamento de uma estação Windows
Script simple backup em Fita DAT
Script para atualização do UVSCAN
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Atualizar Linux Mint 22.2 para 22.3 beta
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux
Conky, alerta de temperatura alta (10)
Assisti Avatar 3: Fogo e Cinzas (3)
Duas Pasta Pessoal Aparecendo no Ubuntu 24.04.3 LTS (42)









