El comando sar en Linux: rendimiento histórico del sistema

El comando sar en Linux: rendimiento histórico del sistema

El comando sar (System Activity Reporter) forma parte del paquete sysstat y permite recopilar, reportar y guardar información sobre la actividad del sistema a lo largo del tiempo. A diferencia de herramientas que muestran un instante, sar guarda datos históricos que pueden consultarse posteriormente para identificar tendencias, cuellos de botella o problemas esporádicos.

Sar fue desarrollado originalmente por Sebastien Godard y se distribuye bajo la licencia GPL. Está incluido en la mayoría de distribuciones Linux mediante el paquete sysstat, que también proporciona los demonios sa1 y sa2 encargados de la toma periódica de muestras y su almacenamiento en archivos binarios bajo /var/log/sa/.

En distribuciones basadas en Debian/Ubuntu se instala con sudo apt-get install sysstat. En RHEL, CentOS o Fedora se usa sudo dnf install sysstat o yum. Tras la instalación, el archivo /etc/default/sysstat permite activar la recopilación estableciendo ENABLED=»true» y definiendo el intervalo de muestreo (por defecto 10 minutos).

El formato general es sar [opciones] [intervalo [recuentos]]. Sin argumentos, sar muestra los datos del día actual. Los parámetros más habituales incluyen -u para CPU, -r para memoria, -B para paginación, -n para redes, -d para discos y -A para obtener todos los reportes disponibles.

  • -u: muestra porcentaje de tiempo de CPU en modo usuario, nice, sistema, iowait, robado y idle.
  • -r: reporta memoria libre y usada, así como buffers y cache.
  • -B: detalla actividades de paginación y swap, incluyendo pgpgin/pgpgout y fault/s.
  • -n: con subopciones como DEV para tráfico de interfaces, EERROR para errores y FCOLL para colisiones.
  • -d: estadísticas por dispositivo de bloque, como tps, kB_read/s y kB_wrtn/s.
  • -A: equivalente a especificar todas las opciones anteriores, útil para una visión completa.

Para observar la utilización de la CPU cada dos segundos durante diez iteraciones se ejecuta sar -u 2 10. El output muestra columnas como %user, %nice, %system, %iowait, %steal y %idle, permitiendo detectar picos de consumo o esperas en I/O.

Cada línea corresponde a un intervalo de muestreo; los valores son promedios sobre ese período. Un %iowait sostenido alto indica que la CPU está esperando operaciones de disco, mientras que un %system elevado puede señalar actividad excesiva de llamadas al sistema o interrupciones.

El demonio sa1 se ejecuta vía cron cada 10 minutos (configurable) y guarda datos binarios en /var/log/sa/saDD, donde DD es el día del mes. Posteriormente, sa2 genera un resumen diario en formato legible y lo almacena en el mismo directorio, facilitando la generación de reportes mensuales.

En /etc/cron.d/sysstat se encuentra la tarea que llama a /usr/lib/sysstat/sa1 1 1 para tomar muestras y a /usr/lib/sysstat/sa2 6 0 0 para crear el resumen. Modificar estos archivos permite cambiar la frecuencia o retener más días de historial según las necesidades de auditoría.

Los archivos binarios pueden leerse nuevamente con sar -f /var/log/sa/saDD para obtener el reporte de un día específico. Herramientas como ksar (KDE System Activity Reporter) o scripts con gnuplot transforman esos datos en gráficas de tendencia, facilitando la presentación a equipos de operaciones o gerencia.

Es recomendable ajustar el intervalo de muestreo según la carga: en servidores de producción críticos un intervalo de 30 segundos ofrece mayor detalle, mientras que en sistemas menos exigentes 5-10 minutos reduce el uso de disco. Además, sar no captura eventos esporádicos de menos de un intervalo, por lo que se complementa con herramientas como perf o eBPF para análisis más fino.

Para analizar cuellos de botella en E/S de disco, se puede combinar sar -d con sar -u y observar si el %iowait aumenta mientras el %user y %system permanecen bajos. Un ejemplo típico es ejecutar sar -d 1 5 para ver las transferencias por segundo (tps) y los kilobytes leídos y escritos. Asimismo, sar -n DEV muestra el tráfico de cada interfaz de red; si se detectan colisiones (FCOLL) o errores (EERROR) elevados, podría indicar problemas de cableado o configuración del duplex. Estos cruces de métricas permiten identificar si la limitación proviene del almacenamiento, la red o la propia CPU.

Muchos entornos de producción integran sar con sistemas de monitoreo continuo para crear dashboards históricos. Los datos binarios de sa1 pueden exportarse a CSV usando sar -A -f /var/log/sa/saDD > metrics.csv y luego ser ingestados por herramientas como Prometheus mediante un exporter custom o por medio de scripts que ejecuten sar cada minuto y envíen los valores a un Pushgateway. En Grafana, se pueden crear paneles que muestren la evolución del uso de CPU, memoria y ancho de red a lo largo de semanas, facilitando la detección de tendencias de crecimiento y la planificación de capacidad basada en evidencia.

El comando sar constituye una herramienta esencial para cualquier administrador Linux que necesite entender el comportamiento histórico del sistema. Su capacidad para almacenar y consultar métricas de CPU, memoria, E/S y red a lo largo de días o meses permite realizar análisis de capacidad, planificación de upgrades y detección proactiva de anomalías.

Esta obra está bajo una Licencia Creative Commons Atribución 4.0 Internacional para Francesc Roig francesc@vivaldi.net .

EspañolesEspañolEspañol