IFPR-Labtelecom: CMS (Discos)

O Labtelecom possui 5 servidores de rede com o sistema operacional GNU/Linux Debian. Todos esses servidores formam um cluster e diversos parâmetros são monitorados pelo projeto CMS - Nuvem. O servidor principal (Amanda Linux Server) realiza diversas funções de gerenciamento da rede e captura de imagem de 3 câmeras IPs e eventualmente a captura programada das imagens da impressora 3D com os softwares VLC ou ffmpeg. Essas tarefas exigem a captura de milhares de fotos para geração de videos. Por esse motivo é fundamental gerenciar o espaço disponível para armazenamento no servidor de rede. Logo abaixo é apresentado o monitoramento da ocupação de discos do servidor principal e na sequência são mostradas as técnicas utilizadas.

No terminal do Linux com o comando df -h é possível obter um resumo dos discos de armazenamento utilizados no servidor. Por exemplo, para Amanda Linux Server foi obtido o resultado abaixo. Importante salientar que esse servidor tem 6 HDs de 67 G divididos e na instalação foram configurados 3 conjuntos com RAID 1 formando 3 partições com o sistema operacional (md0), diretório com dados do usuário (md1) e diretório com dados do Servidor Web Apache (md2), respectivamento.

Filesystem Size Used Avail Use% Mounted on /dev/md0 64G 8,1G 53G 14% / /dev/md1 67G 9,3G 55G 15% /home /dev/md2 67G 49G 15G 78% /var

Com base na resposta acima, o objetivo é extrair a quinta coluna que fornece o resultado do percentual utilizado de cada disco. Para isso são realizados sequenciamente dos comandos:

(df -h | grep md) > Disk_acc1.txt

que armazena o resultado acima no arquivo Disk_acc1.txt. O comando

Disk_1=$(awk '{print $5} ' Disk_acc1.txt)

extrai com o awk apenas a quinta coluna do arquivo e armazena na varíavel Disk_1. O comando

echo $(date +%Y)/$(date +%m)/$(date +%d)-$(date +%H):$(date +%M) $Disk_1 > Disk_acc2.txt;

salva no arquivo Disk_acc2.txt o resultado filtrado com a data horário de aquisicao no formado ano/mês/dia-hora:minuto. Com o comando sed é retirado o símbolo % e o resultado é anexado ao arquivo Disk_data.txt.

sed -e 's/%//g' Disk_acc2.txt>>Disk_data.txt;

No gráfico acima é plotado periodicamente as últimas 1200 amostras, para isso é utilizado o comando tail -n 1200 para criar um buffer com as amostras mais recentes.

tail -n 1200 Disk_data.txt > Disk_data_buffer.txt;

O resultado final é plotado como GNUPlot conforme script abaixo.

gnuplot -e "set title ''; set key top center horizontal outside; set xlabel 'Tempo - Mês/Dia - Hora:Minuto' offset 0,-1; set ylabel 'Amanda Linux Server - Ocupação do disco [%]'; set xdata time; set timefmt '%Y/%m/%d-%H:%M'; set yrange [0:100]; set ytics 10; set style data lines; set autoscale xfix; set linetype 1 lw 2 lc rgb 'blue'; set linetype 2 lw 2 lc rgb 'red';set linetype 3 lw 2 lc rgb 'black';set linetype 4 lw 2 lc rgb 'orange';set linetype 5 lw 2 lc rgb 'black';set linetype 6 lw 2 lc rgb 'red'; set timestamp; set grid; set terminal png size 750,440; plot 'Disk_data_buffer.txt' i 0 using 1:2 title'md0 (/)','Disk_data_buffer.txt' i 0 using 1:4 title'md1 (/home)','Disk_data_buffer.txt' i 0 using 1:3 title'md2(/var)'" > /home/cluster/Disk.png;