BASH – SCRIPT para monitoreo de archivo LOG.-

Con este SCRIPT monitoreo en linea un archivo LOG, en el cual se controlan los tiempos de ejecución de las distintas fases, contranstandolas contra los tiempos estimados de ejecución de cada una de la fases. Si alguna es excedida en el tiempo de ejecución, el SCRIPT procede a emitir una alerta, la cual puede consistir en enviar un MAIL o grabar la información en un archivo de registro.- Probado en servidor AIX.

Esta entrada fue publicada en Unix - Linux. Guarda el enlace permanente.

8 respuestas a BASH – SCRIPT para monitoreo de archivo LOG.-

  1. Gustavo Adolfo dijo:

    Estimados , como podría monitorear , cuando un logs no está escribiendo , por medio de un sh y que me mande un corrreo?

    • Existen muchas formas de realizar, por ejemplo en un SCRIPT infinito, cada cierta cantidad de minutos puede chequear el tamaño, fecha y hora del archivo log. En el próximo chequeo enviaría un correo informando que no esta escribiendo. Otra forma forma en LINUX existe un comando SUM, que también tengo un script en mi pagina. Este entrega un numero que corresponde a la marca del archivo. Al cambiar esta marca también cambia. Tratare de realizar y subir un SCRIPT para esto con diferentes formas de realizarlo… saludos.

  2. Juan Issai Benitez de la Cruz dijo:

    Buenas tardes, me gustaria ver si es posible hacer un script de bash que pueda acceder al contenido de un log y buscar un parametro en especifico que se llama f039 y ese parametro siempre tiene el valor 0 que significa un estatus correcto de servicio pero cuando se detone algo diferente de 0 enviar una alerta por correo electronico

    • Hola Juan, podría ser algo como lo que indico a continuación, aqui supongo que el codigo tiene esta forma f039=[numero]
      Lo puedes modificar, en todo caso hare algo similar y lo probare para publicarlo en mi sitio… saludos… espero te sirva

      #!/bin/bash
      # Nombre del archivo de log que deseas verificar
      LOG_FILE=»/ruta/al/archivo.log»
      # Buscar las líneas que contienen el parámetro f039=
      while read -r linea; do
      if [[ «$linea» =~ f039=([0-9]+) ]]; then
      valor=»${BASH_REMATCH[1]}»
      if [ «$valor» != «0» ]; then
      # Dirección de correo electrónico a la que se enviará la notificación
      DESTINATARIO=»tu-correo-electronico@example.com»
      # Asunto del correo electrónico
      ASUNTO=»Advertencia: El valor del parámetro f039 no es 0″
      # Cuerpo del correo electrónico
      CUERPO=»El valor del parámetro f039 es $valor en la siguiente línea del archivo de log $LOG_FILE: \n\n $linea»
      # Envío del correo electrónico
      echo -e «$CUERPO» | mail -s «$ASUNTO» «$DESTINATARIO»
      fi
      fi
      done < "$LOG_FILE"

      • Anónimo dijo:

        Para eso necesito configurar un demonio o servicio que envie el correo o que tenga las credenciales de acceso para poder enviar el correo de manera automatica con la sintaxis que tienes arriba. Supongamos que no quiero configurar el servicio de envio de correo pero si enviarlo por correo smtp al vuelo en el mismo script.
        Ya probe la sintaxis y solo modifique una linea ya que no funcionaba la parte de LOG_FILE=»/ruta/al/archivo.log»

      • Anónimo dijo:

        #!/bin/bash
        # Nombre del archivo de log que deseas verificar
        archivo_log=»Core.log.2023-04-25-13″
        # Buscar las líneas que contienen el parámetro f039=
        while read -r linea; do
        if [[ «$linea» =~ f039=([0-9]+) ]]; then
        valor=»${BASH_REMATCH[1]}»
        if [ «$valor» != «0» ]; then
        # Dirección de correo electrónico a la que se enviará la notificación
        DESTINATARIO=»correo@dominio»
        # Asunto del correo electrónico
        ASUNTO=»Advertencia: El valor del parámetro f039 no es 0″
        # Cuerpo del correo electrónico
        CUERPO=»El valor del parámetro f039 es $valor en la siguiente línea del archivo de log $LOG_FILE: \n\n $linea»
        # Envío del correo electrónico
        echo -e «$CUERPO» | mail -s «$ASUNTO» «$DESTINATARIO»
        fi
        fi
        done < "$archivo_log"

Deja una respuesta

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