DBA com Informações de Administrador de Redes

Bem, na maioria das empresas existe um DBA e um Sysadmin, cada um cuidando da sua parte.

Geralmente o DBA não tem senha de root nas maquinas e não tem acesso a N informações gerenciais do Sistema Operacional por ser um dever do Sysadmin.

Porém nós DBAs temos apenas os servidores de banco para cuidar, e os Sysadmins tem apenas TODOS os servidores para cuidar, seja ele qual for (Eu já fui Sysadmin, acredite .. a coisa é feia !!!).

Muitas vezes temos problemas de lentidão no banco ou alguma coisa que empaca no meio do caminho, ai perdemos um considerável tempo no banco procurando o motivo, quando na verdade pode ser falta de espaço em disco ou a memória que já foi … e da-lhe swap (que deixa o servidor mais lento).

Pois bem em alguns casos é mais dificil conseguir esse tipo de informação do Sysadmim, pois o volume de trabalho do mesmo não é pouco não é?

Para facilitar a vida, segue 2 scripts bem simples que nos envia por email uma mensagem com o espaçamento em disco e o consumo de memória. Com isso temos a informação que precisamos sem ter que depender do Sysadmin, basta colocar o script para se executado no cron e pronto !!!!!

espaco_disco.sh

#!/bin/bash
#Cria as variáveis com a informação de uma coluna específica
#do comando df (Exibe o espaço em disco), nesse caso a coluna
#contendo o nome da partição
pgbackup_desc=`df -h /dev/sda5 | tail -1 |awk ‘{print $6}’`
pgteste_desc=`df -h /dev/sda6 | tail -1 |awk ‘{print $6}’`
postgres_desc=`df -h /dev/sdb1 | tail -1 |awk ‘{print $6}’`

#Cria as variáveis com a informação de uma coluna específica
#do comando df, nesse caso a coluna contendo o espaço livre em
#MB da partição

pgbackup_livre=`df -h /dev/sda5 | tail -1 | awk ‘{print $4}’`
p
gteste_livre=`df -h /dev/sda6 | tail -1 | awk ‘{print $4}’`
p
ostgres_livre=`df -h /dev/sdb1 | tail -1 | awk ‘{print $4}’`

#Cria as variáveis com a informação de uma coluna específica
#do comando df, nesse caso a coluna contendo o espaço utilizado
#em % partição

pgbackup_porc=`df -h /dev/sda5 | tail -1 | awk ‘{print $5}’`
p
gteste_porc=`df -h /dev/sda6 | tail -1 | awk ‘{print $5}’`
p
ostgres_porc=`df -h /dev/sdb1 | tail -1 | awk ‘{print $5}’`

#Cria as variáveis com a informação de uma coluna específica
#do comando df, nesse caso a coluna contendo o espaço utilizado
# em MB

pgbackup_usado=`df -h /dev/sda5 | tail -1 | awk ‘{print $3}’`
p
gteste_usado=`df -h /dev/sda6 | tail -1 | awk ‘{print $3}’`
p
ostgres_usado=`df -h /dev/sdb1 | tail -1 | awk ‘{print $3}’`

tamanho_maximo=”80%”
host=`hostname`

#Se o valor do resultado da % usada for maior que o limite
#estipulado, é enviado um email notificando a situação crítica,
#com os valores dos tamanhos atuais

if [ $pgbackup_porc \> $tamanho_maximo ] ;
then
echo `date` > mail.txt
echo “Espaço na partição $pgbackup_desc no servidor $host está
crítico” >> mail.txt
echo “Permissão máxima de utilização = 80% ” >> mail.txt
echo “Espaço Utilizado = $pgbackup_porc ($pgbackup_usado) ” >>
mail.txt
echo “Espaço disponível = $pgbackup_livre” >> mail.txt

elif [ $pgteste_porc \> $tamanho_maximo ] ;
then
echo `date` > mail.txt
echo “Espaço na partição $pgteste_desc no servidor $host está
crítico” >> mail.txt
echo “Permissão máxima de utilização = 80% ” >> mail.txt
echo “Espaço Utilizado = $pgteste_porc ($pgteste_usado) ” >>
mail.txt
echo “Espaço disponível = $pgteste_livre” >> mail.txt

elif [ $postgres_porc \> $tamanho_maximo ] ;
t
hen
e
cho `date` > mail.txt
e
cho “Espaço na partição $postgres_desc no servidor $host está
crítico” >> mail.txt
e
cho “Permissão máxima de utilização = 80% ” >> mail.txt
e
cho “Espaço Utilizado = $postgres_porc ($postgres_usado) ” >>
mail.txt
e
cho “Espaço disponível = $postgres_livre” >> mail.txt
mail -s “ESPAÇO EM DISCO NO SERVIDOR $host ESTÁ CRÍTICO” dba@dominio.com.br < mail.txt

else

echo `date` > mail.txt
echo “O Espaço nas partições $pgbackup_desc, $pgteste_desc,
$postgres_desc no servidor $host estão OK” >> mail.txt
echo “Permissão máxima de utilização = 80% ” >> mail.txt
echo “Espaço Utilizado em $pgbackup_desc = $pgbackup_porc
($pgbackup_usado) ” >> mail.txt
echo “Espaço Utilizado em $pgteste_desc = $pgpgteste_porc
($pgteste_usado) ” >> mail.txt
echo “Espaço Utilizado em $postgres_desc = $postgres_porc
($postgres_usado) ” >> mail.txt
echo “Espaço disponível em $pgbackup_desc = $pgbackup_livre” >>
mail.txt
echo “Espaço disponível em $pgteste_desc = $pgteste_livre” >>
mail.txt
echo “Espaço disponível em $postgres_desc = $postgres_livre” >>
mail.txt

fi

ger_memoria.sh

#!/bin/bash
#Cria as variáveis com a informação de uma coluna específica
#do comando free (Exibe a memória ram usada e a memória SWAP)

free -m > memoria.txt
swap_usada=`awk ‘NR == 4 {print $3}’ memoria.txt`
swap_livre=`awk ‘NR == 4 {print $4}’ memoria.txt`
ram_usada=`awk ‘NR == 2 {print $3}’ memoria.txt`
ram_livre=`awk ‘NR == 2 {print $4}’ memoria.txt`
ram_total=`awk ‘NR == 2 {print $2}’ memoria.txt`
swap_total=`awk ‘NR == 4 {print $2}’ memoria.txt`
ram_minima=`expr $ram_total / 4`
ram_limite=`expr $ram_total – $ram_minima`

# Se a memória usada for maior que a estipulada, envia um email
# com os valores atuais
if [ $ram_usada \> $ram_limite ] ;
then
echo `date` > mail2.txt
echo “Uso da Memória Ultrapassou 75%” >> mail2.txt
echo “Permissão máxima de utilização = 75% ” >> mail2.txt
echo “Memória Total = $ram_total MB” >> mail2.txt
echo “Memória Utilizada = $ram_usada MB” >> mail2.txt
echo “Memória Livre = $ram_livre MB” >> mail2.txt
echo “Swap Usada = $swap_usada (Total da Swap = $swap_total MB)” >> mail2.txt
mail -s “USO DE MEMÓRIA ULTRAPASSOU 75%” dba@dominio.com.br <
mail2.txt

else
echo `date` > mail2.txt
echo “Uso da Memória OK” >> mail2.txt
echo “Permissão máxima de utilização = 75% ” >> mail2.txt
echo “Memória Total = $ram_total MB” >> mail2.txt
echo “Memória Utilizada = $ram_usada MB” >> mail2.txt
echo “Memória Livre = $ram_livre MB” >> mail2.txt
echo “Swap Usada = $swap_usada (Total da Swap = $swap_total
MB)” >> mail2.txt

fi

Espero que tenha ajudado!!
Kenia Milene