En este tema, aprenderás cómo utilizar Bash para monitorear sistemas y registrar eventos importantes. El monitoreo y registro son esenciales para mantener la salud y el rendimiento de los sistemas, así como para la resolución de problemas.

Conceptos Clave

  1. Monitoreo: Proceso de supervisar el estado y el rendimiento de un sistema.
  2. Registro (Logging): Proceso de capturar y almacenar eventos o mensajes generados por el sistema o aplicaciones.

Herramientas Comunes para Monitoreo y Registro

  • top: Muestra los procesos en ejecución y su uso de recursos.
  • htop: Una versión mejorada de top con una interfaz más amigable.
  • vmstat: Muestra estadísticas del sistema como memoria, procesos y CPU.
  • iostat: Muestra estadísticas de entrada/salida del sistema.
  • dmesg: Muestra mensajes del kernel.
  • journalctl: Muestra y gestiona los registros del sistema (usado en sistemas con systemd).

Ejemplo Práctico: Monitoreo de Recursos del Sistema

Monitoreo de CPU y Memoria

#!/bin/bash

# Monitorear el uso de CPU y memoria cada 5 segundos
while true; do
    echo "-----------------------------"
    echo "Fecha y Hora: $(date)"
    echo "Uso de CPU:"
    mpstat 1 1 | grep "all" | awk '{print "Usuario: "$3"%\nSistema: "$5"%\nIdle: "$12"%"}'
    echo "Uso de Memoria:"
    free -h | grep "Mem" | awk '{print "Usada: "$3"\nLibre: "$4}'
    sleep 5
done

Explicación del Código

  1. Bucle Infinito: while true; do ... done ejecuta el bloque de código indefinidamente.
  2. Fecha y Hora: date muestra la fecha y hora actuales.
  3. Uso de CPU: mpstat 1 1 muestra estadísticas de CPU cada segundo durante 1 segundo. grep "all" filtra la línea con el resumen de todos los CPUs. awk extrae y formatea los datos relevantes.
  4. Uso de Memoria: free -h muestra el uso de memoria en formato legible. grep "Mem" filtra la línea con la información de la memoria. awk extrae y formatea los datos relevantes.
  5. Pausa: sleep 5 pausa la ejecución durante 5 segundos antes de repetir el bucle.

Ejemplo Práctico: Registro de Eventos

Registro de Eventos del Sistema

#!/bin/bash

# Archivo de registro
LOGFILE="/var/log/custom_monitor.log"

# Función para registrar eventos
log_event() {
    local MESSAGE=$1
    echo "$(date +'%Y-%m-%d %H:%M:%S') - $MESSAGE" >> $LOGFILE
}

# Monitorear el uso de CPU y memoria cada 5 segundos
while true; do
    CPU_USAGE=$(mpstat 1 1 | grep "all" | awk '{print $3}')
    MEM_USAGE=$(free -h | grep "Mem" | awk '{print $3}')
    log_event "CPU Usage: $CPU_USAGE%, Memory Usage: $MEM_USAGE"
    sleep 5
done

Explicación del Código

  1. Archivo de Registro: LOGFILE="/var/log/custom_monitor.log" define la ubicación del archivo de registro.
  2. Función de Registro: log_event() toma un mensaje como argumento y lo escribe en el archivo de registro con una marca de tiempo.
  3. Monitoreo de Recursos: Similar al ejemplo anterior, pero en lugar de imprimir los resultados, se registran en el archivo de registro usando la función log_event().

Ejercicio Práctico

Ejercicio: Crear un Script de Monitoreo y Registro

Objetivo: Crear un script que monitoree el uso de disco y registre los eventos en un archivo de registro.

Requisitos:

  1. Monitorear el uso de disco cada 10 segundos.
  2. Registrar el uso de disco en un archivo de registro con una marca de tiempo.
  3. El archivo de registro debe estar ubicado en /var/log/disk_monitor.log.

Solución:

#!/bin/bash

# Archivo de registro
LOGFILE="/var/log/disk_monitor.log"

# Función para registrar eventos
log_event() {
    local MESSAGE=$1
    echo "$(date +'%Y-%m-%d %H:%M:%S') - $MESSAGE" >> $LOGFILE
}

# Monitorear el uso de disco cada 10 segundos
while true; do
    DISK_USAGE=$(df -h / | grep "/" | awk '{print $5}')
    log_event "Disk Usage: $DISK_USAGE"
    sleep 10
done

Explicación del Código

  1. Archivo de Registro: Define la ubicación del archivo de registro.
  2. Función de Registro: Toma un mensaje y lo escribe en el archivo de registro con una marca de tiempo.
  3. Monitoreo de Disco: df -h / muestra el uso de disco del sistema de archivos raíz. grep "/" filtra la línea relevante. awk extrae el porcentaje de uso de disco.
  4. Pausa: sleep 10 pausa la ejecución durante 10 segundos antes de repetir el bucle.

Conclusión

En esta sección, has aprendido cómo monitorear recursos del sistema y registrar eventos utilizando Bash. Estas habilidades son cruciales para mantener la salud y el rendimiento de los sistemas, así como para la resolución de problemas. En el siguiente módulo, exploraremos cómo automatizar tareas utilizando Bash.

© Copyright 2024. Todos los derechos reservados