Como monitorear cambios en un directorio

David Gatica -

1. Introducción

Este documento explica como instalar la herramienta incrond para monitorear los cambios realizados en un directorio del sistema operativo Linux. Estos cambios se relacionan con archivos dentro del directorio y pueden ser: creación, edición, actualización, eliminación, etc.

También se incluye un script para que enviar una notificación por correo electrónico avisando que ha ocurrido una modificación en el directorio monitoreado.

2. Implementación de incrond

2.1. Instalación

Si estas usando un sistema basado en Red Hat o Debian, puedes instalar el paquete utilizando el gestor de paquetes que viene incluído:

# Basados en Red Hat
$> sudo yum install incron
# Basados en Debian
$> sudo apt-get install incron 

 

Si estás usando SLES 11 se recomienda descargar el paquete rpm desde el siguiente enlace:

http://download.opensuse.org/repositories/utilities/SLE_11_SP1/x86_64/incron-0.5.10-2.1.x86_64.rpm

 

Luego se debe instalar con el comando rpm:

$> rpm -Uvh --force incron-0.5.10-2.1.x86_64.rpm

 

Finalmente debemos iniciar el servicio incrond y habilitarlo para que arranque cuando el sistema operativo inicie:

$> service incron start
$> chkconfig incron on

 

2.2. Configuración

La configuración global se realiza en el archivo /etc/incron.conf y el monitoreo de archivos lo realizamos agregando configuraciones en el directorio /etc/incron.d/

Supongamos que queremos registrar en el log /var/log/messages los cambios ocurridos en el directorio /tmp/test. Para esto crearemos el archivo /etc/incron.d/test:

# contenido del archivo /etc/incron.d/test
# <directorio> <cambio a monitorear> <comando que se debe ejecutar> <parámetros del comando>
/tmp/test IN_ALL_EVENTS logger "$% archivo $#"

 

Para probar que haya funcionado correctamente creamos un archivo en el directorio "/tmp/test" y revisamos que se haya registrado en el archivo /var/log/messages.

$> touch /tmp/test/ARCHIVO # creamos archivo
$> tail /var/log/messages # revisamos el log

 

La documentación de los campos y diferentes cambios monitoreados está detalla en el siguiente enlace: http://inotify.aiken.cz/?section=incron&page=doc&lang=en 

  • <directorio> - es la ruta completa del directorio que queremos monitorear
  • <cambio a monitorear> - Es el tipo de cambio en el directorio que cuando ocurra ejecutará un comando:
    • IN_ACCESS - Se leyó el archivo
    • IN_ATTRIB - Se actualizó su información (permissions, timestamps, extended attributes, etc.)
    • IN_CLOSE_WRITE - Archivo abierto para escritura fue cerrado
    • IN_CLOSE_NOWRITE - Archivo abierto fue cerrado
    • IN_CREATE - Se creo un archivo o directorio
    • IN_DELETE - Se borró un archivo o directorio
    • IN_DELETE_SELF - Watched file/directory was itself deleted
    • IN_MODIFY - El archivo fue modificado
    • IN_MOVE_SELF - Watched file/directory was itself moved
    • IN_MOVED_FROM - Se movió un archivo de este directorio a otro
    • IN_MOVED_TO - Se movió un archivo de otro directorio
    • IN_OPEN - El archivo fue abierto
    • The IN_ALL_EVENTS - Todos los eventos anteriores
  • <comando que se debe ejecutar> - Comando a ejecutar cuando ocurra un evento
  • variables especiales - Esta variables pueden ser pasadas como parámetros al comando
    1. $$ - representa un signo de dolar
    2. $@ - es la ruta completa del directorio monitoreado
    3. $# - archivo que produjo el evento
    4. $% - nombre del evento, de la lista de arriba
    5. $& - número del evento

2.3. Envío de Alertas vía correo electrónico

Instalación de script de alertas

Debe descargar el archivo rpm adjunto llamado pos_directory_monitor-1.0-1.noarch.rpm y luego instalarlo:

# Para SuSE
$> zypper install perl-MailTools perl-Config-IniFiles # Dependencias

$> rpm -Uvh pos_directory_monitor-1.0-1.noarch.rpm

 

Una vez instalado debe modificar el archivo /etc/pos_directory_monitor.conf y ajustar las variables

[GLOBAL]
FROM_EMAIL = monitor@example.com
TO_EMAIL = soporte@example.com
MAIL_SERVER_ADDRESS = 10.10.10.2 

 

Configuración de envío de alertas

Para enviar una alerta por correo electrónico cuando se cree o modifique un archivo vamos a modificar el archivo de configuración que acabamos de crear para que ejecute nuestro script:

# <directorio> <cambio a monitorear> <comando que se debe ejecutar> <parámetros del comando>
/tmp/test IN_CREATE,IN_DELETE,IN_DELETE_SELF,IN_MOVED_FROM,IN_MOVED_TO /usr/local/bin/pos_directory_monitor.pl -p $@ -f $# -e $%

 

y luego se debe reiniciar el servicio incrond:

$> rcincron restart

 

 

¿Tiene más preguntas? Enviar una solicitud

0 Comentarios

Inicie sesión para dejar un comentario.
Tecnología de Zendesk