Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Monitorización de contenido de archivo
#1
Buenos días,

Necesito crear un agente/monitor que se conecte a un servidor windows cada x tiempo y compruebe si el contenido de cierto archivo ha cambiado, y si se ha modificado que lance una alerta mostrando la última línea introducida en el archivo, pero no veo la manera de hacerlo...

Mi servidor de Pandora está montado en un Suse....

¿Me podríais echar una mano?

Muchas gracias

 Reply
#2
Buenas vdelburgo66,

¿Qué tipo de monitorización habias pensado, local o remota?

Si la monitorización fuese local el proceso sería el siguiente:

Te descargas e instalas el agente software de:

- http://pandorafms.com/Community/download/es

- Creas un módulo tipo generic_proc que compruebe si el archivo ha cambiado:

http://wiki.pandorafms.com/index.php?tit...e_software

- Y por último, creas la alerta para que cuando se modifique muestre la última linea de texto de archivo:

http://wiki.pandorafms.com/index.php?tit...andora_FMS


En cambio, si lo que quieres es hacer el mismo proceso pero remotamente a un servidor Windows, tendrías que crear los módulos y la alerta como en los pasos anteriores pero con la diferencia que deberías crear un script dentro de los módulos para que se conectase por ssh al servidor Windows.

Personalmente veo mucho menos costoso la opción de instalar un agente software (monitorización local) en el servidor a monitorizar.

Un saludo,

Roberto
 Reply
#3
Gracias Roberto, las dudas ahora son...
¿cómo compruebo que el contenido del archivo ha cambiado? y ¿cuál sería el campo en la alerta para que en el campo de la alerta se muestre el contenido del archivo?

Saludos
 Reply
#4
Hola vdelburgo66,

Para comprobar que el contenido del archivo ha cambiado tendrías que poner instrucción unix que ejecute esa acción dentro del módulo en el parámetro module_exec. Con el comando "find" y sus parámetros puedes averiguar si un archivo ha sido o no modificado.

En el caso de mostrar la última linea, deberías crear la alerta, tal y como te he descrito en el post anterior y luego asignar dicha alerta al módulo:

http://wiki.pandorafms.com/index.php?tit...C3.B3dulos

En tu caso la mejor opción sería escribir dicha línea en un fichero .log para poder visualizarlo posteriormente. Por lo que dentro del campo de la alerta al crearla tendrías que poner la instruccion unix para crear un fichero y así poder guardar dentro de él la linea deseada.

Un saludo,

Roberto.
 Reply
#5
Hola Roberto,

He creado un módulo de la siguiente forma:

module_begin
module_name Info6300
module_type generic_data_string
module_exec find /I "Error" D:\info\info6300.log
module_description Verificación Errores Info6300
module_end

Con esto puedo ver si tiene la cadena 'Error', pero no si ha sido modificado dicho archivo... a la hora de crear la alerta, he creado una con 'Cambio de estado', pero no me funciona...

Estoy un poco perdido
 Reply
#6
Hola buenos días,

para ver si el archivo modificado, también puedes "monitorizar" la fecha de la última modificación del archivo log.

Puedes crear un módulo para monitorizar el ERROR que tú dices, y otro módulo para monitorizar de modo asíncrono cuando se ha modificado dicho fichero.

Un saludo!!!

Sergio
 Reply
#7
Hola!

También puedes agregar un módulo en la configuración del agente que te devuelva la fecha de modificación del archivo (agrégalo al final del pandora_agent.conf en el agente Windows):

module_begin
module_name Fecha modificacion archivo
module_type generic_data_string
module_exec FOR /F "tokens=1 delims='M'" %G IN ('dir /T:W  C:\miarchivo ^| findstr miarchivo') do @echo %GM
module_end

Poniendo en vez de C:\miarchivo la ruta completa a tu fichero de log y tras el findstr el nombre del fichero, debería llegar a Pandora un resultado similar al siguiente:

03/25/2015 05:19 PM

Así ya tienes alguna punto más por el que seguir

Gracias! Wink

Salu2
 Reply
#8
Muchas gracias a todos por las respuestas, pero no es 'exactamente' lo que necesito, no me he explicado bien....

Tengo una tarea programada que actualiza un archivo cada cinco minutos, pero sólamente le añade información si se dan ciertos requisitos. Es decir, el contenido del archivo es este:

835129        243 2015-03-25 02:55:55.453      2 ERROR: Autocsrv(-2147220955): error solicitando datos - Autocsrv(-2147220958): error: Getdata retorno el error: 5 - Invalid procedure call or argument
835129        243 2015-03-25 02:55:51.983      2 ERROR: Autocsrv(-2147220955): error solicitando datos - Autocsrv(-2147220958): error: Getdata retorno el error: 5 - Invalid procedure call or argument

Cada cinco minutos, se actualiza, pero si no hay una entrada nueva en el contenido, lo único que cambia es la fecha de modificación, pero el contenido sigue siendo el mismo. Por ejemplo, en otro ciclo, cambia el contenido a este:

848540        243 2015-03-25 15:51:35.853      2 ERROR: Autocsrv(-2147220889): Iniciando entorno: ruta UNC no establecida
835129        243 2015-03-25 02:55:55.453      2 ERROR: Autocsrv(-2147220955): error solicitando datos - Autocsrv(-2147220958): error: Getdata retorno el error: 5 - Invalid procedure call or argument
835129        243 2015-03-25 02:55:51.983      2 ERROR: Autocsrv(-2147220955): error solicitando datos - Autocsrv(-2147220958): error: Getdata retorno el error: 5 - Invalid procedure call or argument

El objetivo del módulo es detectar una línea nueva en el fichero, y en caso de que la haya, enviar alerta con la nueva línea....

Tengo muy poca experiencia creando módulos, por eso os pido ayuda... Wink

Un saludo
 Reply
#9
En este caso sería:

module_begin
module_name Cuantas lineas
module_type generic_data
module_exec type C:\cosa.txt | wc -l
module_end

Lo que te devuelve el número de líneas,

puedes hacer dos módulos (agregarles al final del fichero de configuración en el agente Windows - en la propia máquina windows, Inicio -> todos los programas -> Pandora FMS Agent -> Edit configuration y agregar al final)

los programas de tal manera que uno se ejecute 2 minutos antes y otro dos minutos después, y comparas sus resultados, si son distintos, simplemente generas la alerta y si son iguales a esperar la siguiente ejecución Big Grin


Salu2!

****************** EDITADO ******************

Otra opción más, para no ir contando líneas:

Crear un pequeño script llamado

  comprueba_cambios.cmd

Con el siguiente código

Code:
@echo OFF
REM Argumento 1: nombre de fichero

if "%1" == "" (
    echo 0
    GOTO END )
for /F "tokens=1" %%s in ('md5 %1') do set t=%%s
if NOT EXIST %1_chk (
    echo 0
    echo %t% > %1_chk
    GOTO END )
for /F "tokens=1" %%s in ('type %1_chk') do if %t% == %%s (
        echo 1
    ) else (
        echo 0
        echo %t% > %1_chk
    )
)
:END

Y el módulo (esta vez solo uno) que meteríamos en el agente Windows sería el siguiente:

Code:
module_begin
module_name name
module_type generic_proc
module_exec comprueba_cambios.cmd fichero_de_logs_a_comprobar
module_end

Espero que te sirva,

salu2!
 Reply
#10
Muchas gracias fborja, voy a probarlo y te cuento....

Saludos
 Reply


Users browsing this thread: 1 Guest(s)


(c) 2006-2018 Artica Soluciones Tecnológicas. Contents of this wiki are under Create Common Attribution v3 licence. | pandorafms.com | pandorafms.org

Theme © MyBB Themes