Estudo de Caso V – Monitoramento Contínuo

Utilizar-se apenas do monitoramento pontual apresentado em post’s anteriores não é suficiente, pois apenas saber o que esta acontecendo no momento sem ter um histórico de como era o comportamento anterior pode não dizer nada. Suponha que seu banco esta apresentando lentidão, suspeita-se dos discos, porem ao verificar com “iostat” não é possível tirar conclusões pois não se sabe como eram as métricas do banco em momento “bom”.

O monitoramento continuo é fundamental não só para detectar causa de problemas e auxiliar no tuning, mas também para conhecer o crescimento do banco e tomar medidas necessárias para evitar problemas futuros.

SAR

O sar é uma antiga ferramenta UNIX, é muito eficiente e atualmente está presente na maioria dos sistemas UNIX-like, inclusive no Linux. Extremamente leve em consumo de recursos, foi desenhado para ter um impacto marginal enquanto coleta dados de CPU, memória, I/O, rede, interrupções e paginação, entre outras, com data e hora de cada informação coletada, em intervalos flexíveis.

O sar coleta informações a partir dos arquivos disponíveis no diretório /proc. Para utilizá-lo é necessário executar um dos utilitários (sadc ou sa1) para coleta periódica de dados. A execução desses utilitários pode ser disparada manualmente ou por um agendador de tarefas como o cron. Os dados são gravados em arquivos de log no formato binário e, para lê-los, utiliza-se o utilitário sar.

O arquivo binário de dados deve ser lido pelo sar na mesma arquitetura em que foi gerado, preferencialmente na mesma máquina. O arquivo de texto gerado pelo utilitário sar pode ser então copiado para outro local para ser analisado.

Em distribuições Debian e derivados o sar pode ser instalado e ativado na CRON através dos seguintes comandos:

# aptitude install sysstat
# dpkg – reconfigure sysstat

Para visualizar os dados coletados basta executar o comando abaixo:

# sar -A
Linux 2.6.32 -5 – amd64 ( debian ) 05/09/2013 _x86_64_ (1 CPU )

09:24:02 AM LINUX RESTART

09:25:01 AM CPU % usr % nice % sys % iowait % steal % irq % soft % guest % idle
09:35:01 AM all 1.57 0.12 1.01 5.08 0.00 0.09 0.03 0.00 92.11
09:35:01 AM 0 1.57 0.12 1.01 5.08 0.00 0.09 0.03 0.00 92.11

09:35:01 AM CPU % usr % nice % sys % iowait % steal % irq % soft % guest % idle
09:45:01 AM all 1.53 0.02 0.88 0.37 0.00 0.07 0.02 0.00 97.11
09:45:01 AM 0 1.53 0.02 0.88 0.37 0.00 0.07 0.02 0.00 97.11

Average : CPU % usr % nice % sys % iowait % steal % irq % soft % guest % idle
Average : all 1.53 0.04 0.87 1.26 0.00 0.08 0.02 0.00 96.19
Average : 0 1.53 0.04 0.87 1.26 0.00 0.08 0.02 0.00 96.19

09:25:01 AM proc / s cswch / s
09:35:01 AM 0.57 106.30
09:45:01 AM 0.24 86.32
09:55:01 AM 0.23 86.51
10:05:01 AM 0.22 85.90
10:15:01 AM 0.24 86.19
Average : 0.30 90.24

ksar

Para facilitar a leitura dos dados coletados pelo sar, existe uma ferramenta chamada “ksar”, pois como visto acima, o sar coleta muitos dados, e pode ser tornar trabalhoso e difícil extrair informações sobre os dados coletados. O ksar é feito Java, e pode ser obtido através do seguinte endereço: http://sourceforge.net/projects/ksar/

Conclusão

Neste post de hoje, vimos a ferramenta sar que é responsável por coletar informações, também vimos a ferramenta ksar que pega as informações do sar e as transforma em gráficos para se tornar mais fácil a leitura dos dados. Com essas informações em mãos é possível identificar momentos de pico e situações onde a hardware está no limite.