Lab ObservaSistemas.com

Tecnología, automatización y observabilidad de sistemas.

Stress-ng: Simulación de Carga para Validar tu Monitorización

Como especialista en sistemas Linux y observabilidad, una de las tareas más importantes es validar que nuestras herramientas de monitorización (Dynatrace, Grafana/Prometheus) funcionan correctamente y que las alertas se disparan cuando deben hacerlo. Para esto, stress-ng es la herramienta perfecta.

Instalación en Ubuntu Server

sudo apt update
sudo apt install stress-ng -y

Casos de Uso Prácticos

1. Saturar CPU al 100%

# Estresar todos los cores durante 5 minutos
stress-ng --cpu 0 --cpu-load 100 --timeout 5m

# Estresar 4 cores específicos
stress-ng --cpu 4 --cpu-load 100 --timeout 2m

Qué observar en Grafana/Dynatrace:

  • Métrica node_cpu_seconds_total (Prometheus) o CPU usage
  • El porcentaje debe acercarse al 100%
  • Las alertas de CPU > 80% deberían dispararse

2. Consumir Memoria RAM

# Consumir 2GB de RAM
stress-ng --vm 1 --vm-bytes 2G --timeout 3m

# Consumir el 80% de la RAM disponible
stress-ng --vm 2 --vm-bytes 80% --timeout 5m

Qué observar:

  • Métrica node_memory_MemAvailable_bytes bajando
  • Swap usage aumentando si se agota la RAM
  • Alertas de memoria > 85% utilizadas

3. Aumentar el Load Average

# Generar carga combinada que eleva el load
stress-ng --cpu 4 --io 2 --vm 1 --vm-bytes 1G --timeout 5m

Qué observar:

  • Métrica node_load1, node_load5, node_load15
  • El load promedio debería superar el número de cores
  • Alerta cuando load > número de cores * 1.5

4. Simular un Escenario Crítico Completo

# Este comando es ideal para pruebas de alertas críticas
stress-ng --cpu 0 --cpu-load 95 \
          --vm 2 --vm-bytes 75% \
          --io 4 \
          --timeout 10m \
          --metrics-brief

Validación en Prometheus/Grafana

Mientras ejecutas stress-ng, verifica estas queries en Prometheus:

# CPU usage
100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[1m])) * 100)

# Memoria disponible
node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100

# Load average 1 minuto
node_load1

Verificación en Dynatrace

En Dynatrace, navega a:

  1. Infrastructure → Hosts → Selecciona tu servidor
  2. Observa en tiempo real los gráficos de CPU, Memory y Load
  3. Verifica en Problems si se generan eventos críticos
  4. Revisa Settings → Anomaly detection para ajustar umbrales si es necesario

Buenas Prácticas

  • Ejecuta las pruebas fuera de horario productivo para evitar afectar servicios reales
  • Documenta los umbrales que deberían generar alertas
  • Verifica que las notificaciones lleguen (email, Slack, PagerDuty)
  • Usa --timeout siempre para que el stress termine automáticamente

Conclusión

Stress-ng es esencial para validar que tu stack de observabilidad funciona correctamente. No esperes a un incidente real para descubrir que tus alertas no funcionan. Con estas pruebas controladas, garantizas que cuando surja un problema real, tu equipo será notificado a tiempo.

# Comando recomendado para prueba completa
stress-ng --cpu 0 --vm 2 --vm-bytes 70% --io 2 --timeout 5m --metrics

¿El resultado? Confianza total en tu monitorización y alertas bien calibradas.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies