Pular para o conteúdo principal

Capítulo 11.1 - Monitoramento de Sistema

Objetivos de Aprendizagem​

Ao final deste capítulo, você será capaz de:

  • Monitorar CPU, memória, disco
  • Utilizar top, htop, iotop
  • Compreender as métricas do sistema
  • Utilizar vmstat e iostat
  • Configurar alertas básicos

Ferramentas de Monitoramento​

top - Tempo Real​

# Interface interativa
top

# Opções
top -u user1 # Por usuário
top -p 1234 # Processo específico
top -d 2 # Atualização a cada 2 segundos

Métricas exibidas:

  • Load average
  • Uso de CPU
  • Memória (RAM, swap)
  • Processos

htop - Versão Aprimorada​

# Interface colorida
htop

# Instalar se necessário
sudo apt install htop

Vantagens:

  • Interface intuitiva
  • Navegação fácil
  • Barras de progresso
  • Filtragem

iotop - I/O por Processo​

# Monitorar I/O de disco
sudo iotop

# Opções
sudo iotop -o # Somente ativos
sudo iotop -a # Acumulado

Métricas do Sistema​

CPU​

# Uso de CPU
top
htop

# Estatísticas de CPU
cat /proc/stat
mpstat # sysstat

# Load average
uptime
cat /proc/loadavg

# Interpretação:
# < número de CPUs: OK
# = número de CPUs: Uso total
# > número de CPUs: Sobrecarga

Memória​

# Visão geral
free -h

# Detalhes
cat /proc/meminfo

# Por processo
ps aux --sort=-%mem | head

# Estatísticas
vmstat -s

Disco​

# Espaço em disco
df -h

# Uso por diretório
du -sh /home/*

# Estatísticas de I/O
iostat -x 1

# Por processo
sudo iotop

Ferramentas Avançadas​

vmstat - Estatísticas do Sistema​

# Estatísticas a cada segundo
vmstat 1

# Colunas importantes:
# r: Processos aguardando CPU
# b: Processos bloqueados
# swpd: Swap utilizado
# free: Memória livre
# si/so: Swap in/out
# us/sy/id: CPU user/system/idle

iostat - Estatísticas de I/O​

# Instalar
sudo apt install sysstat

# Estatísticas de I/O
iostat -x 1

# Colunas:
# %util: Utilização do disco
# r/s, w/s: Leituras/gravações por segundo
# rkB/s, wkB/s: KB/s

sar - System Activity Reporter​

# Histórico de CPU
sar -u

# Histórico de memória
sar -r

# Histórico de I/O
sar -b

# Em tempo real
sar -u 1 10 # CPU, 1 segundo, 10 vezes

Scripts de Monitoramento​

Monitoramento Básico​

#!/bin/bash
# Script de monitoramento simples

echo "=== CPU ==="
top -bn1 | grep "Cpu(s)" | awk '{print $2}'

echo "=== Memória ==="
free -h | grep Mem

echo "=== Disco ==="
df -h / | tail -1

echo "=== Load Average ==="
uptime

Monitoramento com Alertas​

#!/bin/bash
# Monitoramento com alertas

THRESHOLD_CPU=80
THRESHOLD_MEM=80
THRESHOLD_DISK=80

# CPU
CPU=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | sed 's/%us,//')
if (( $(echo "$CPU > $THRESHOLD_CPU" | bc -l) )); then
echo "ALERTA: CPU em ${CPU}%"
fi

# Memória
MEM=$(free | grep Mem | awk '{printf "%.0f", $3/$2 * 100}')
if [ "$MEM" -gt "$THRESHOLD_MEM" ]; then
echo "ALERTA: Memória em ${MEM}%"
fi

# Disco
DISK=$(df -h / | tail -1 | awk '{print $5}' | sed 's/%//')
if [ "$DISK" -gt "$THRESHOLD_DISK" ]; then
echo "ALERTA: Disco em ${DISK}%"
fi

Monitoramento com Cron​

Tarefa Agendada​

# /etc/cron.d/monitoring
# Monitoramento a cada 5 minutos
*/5 * * * * root /usr/local/bin/monitor.sh >> /var/log/monitoring.log 2>&1

Script com Logging​

#!/bin/bash
# /usr/local/bin/monitor.sh

LOG="/var/log/monitoring.log"
DATE=$(date '+%Y-%m-%d %H:%M:%S')

{
echo "=== $DATE ==="
echo "CPU: $(top -bn1 | grep 'Cpu(s)' | awk '{print $2}')"
echo "Memória: $(free -h | grep Mem | awk '{print $3"/"$2}')"
echo "Disco: $(df -h / | tail -1 | awk '{print $5}')"
echo "Load: $(uptime | awk -F'load average:' '{print $2}')"
echo "---"
} >> "$LOG"

Resumo​

Neste capítulo, você aprendeu:

Ferramentas: top, htop, iotop, vmstat, iostat, sar
Métricas: CPU, memória, disco, load average
Monitoramento: Scripts automáticos, alertas
Cron: Agendamento de monitoramento regular
Prática: Monitoramento contínuo, detecção de problemas


Próximos Passos​

Capítulo 11.2: Gestão de Logs
Capítulo 11.3: Monitoramento de Crons e Alertas


Capítulo criado em: Dezembro 2024