Welcome to Pandora FMS Community!

Find answers, ask questions, and connect with our community around the world.

Welcome to Pandora FMS Community Forums Soporte de la comunidad Monitorización de contenido de archivo

  • Monitorización de contenido de archivo

    Posted by vdelburgo66 on March 24, 2015 at 14:21

    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

    vdelburgo66 replied 9 years, 10 months ago 4 Members · 13 Replies
  • 13 Replies
  • roberto

    Member
    March 24, 2015 at 18:09
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    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?title=Pandora:Documentation_es:Operacion#Monitorizaci.C3.B3n_con_agente_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?title=Pandora:Documentation_es:Alertas#Configuraci.C3.B3n_de_alertas_en_Pandora_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

  • vdelburgo66

    Member
    March 24, 2015 at 18:14
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    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

  • roberto

    Member
    March 24, 2015 at 19:14
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    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?title=Pandora:Documentation_es:Alertas#Asignar_Plantillas_de_alerta_a_los_m.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.

  • vdelburgo66

    Member
    March 25, 2015 at 16:01
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    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:infoinfo6300.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

  • smartin

    Member
    March 25, 2015 at 16:14
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    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

  • fborja

    Member
    March 25, 2015 at 18:37
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    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! 😉

    Salu2

  • vdelburgo66

    Member
    March 25, 2015 at 19:01
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    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… 😉

    Un saludo

  • fborja

    Member
    March 25, 2015 at 19:29
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    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 😀

    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

    
    @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:

    
    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!

  • vdelburgo66

    Member
    March 30, 2015 at 11:51
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    Muchas gracias fborja, voy a probarlo y te cuento….

    Saludos

  • vdelburgo66

    Member
    March 30, 2015 at 13:42
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    Nada, según el pandora_agent.log del servidor, no funciona:

    2015-03-30 11:41:04 Pandora_Module_Exec: InfoAlerta did not executed well (retcode: 1)

    En el pandora_agent.conf está configurado de la siguiente forma:

    module_begin
    module_name InfoAlerta
    module_type generic_proc
    module_exec C:Archivos de programaPandora_Agentscriptscomprueba_cambios.cmd D:infoinfo
    module_end

    Y la alerta está configurada simplemente como un cambio de estado…

  • vdelburgo66

    Member
    April 7, 2015 at 12:59
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    Resuelto, el problema estaba en los espacios en blanco de ‘C:Archivos de programa’… he metido el archivo en otra ruta y listo…

    ¿Hay alguna forma de mostrar el contenido del archivo al disparar la alerta? Es una alerta de cambio de estado…

  • roberto

    Member
    April 7, 2015 at 14:20
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    Buenas, vdelburgo66!

    Lo que podrías hacer es crear un módulo nuevo que fuese de tipo asynchronous string data ( ya que no se puede editar el tipo de módulo una vez creado), luego modificas el archivo comprueba_cambios.cmd para que cuando no haya ninguna modificación no muestre nada (un 0) y cuando se modifique muestre el contenido (un 1).

    Luego configuras la alerta para que se dispare siempre.

    ¿Qué es lo que conseguimos con esto?. Al haber creado un módulo del tipo asynchronous string data y haber modificado el archivo comprueba_cambios.cmd conseguimos mostrar la información que necesitamos solo cuando haya habido algún tipo de modificación. Al haber configurado la alerta de esta forma sobre un módulo de tipo asíncrono, conseguiríamos que solo saltase cuando el archivo ha sido modificado.

    Un saludo!,

    Roberto.

  • vdelburgo66

    Member
    April 8, 2015 at 15:38
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    Perfecto Roberto, justo lo que estaba buscando

    Muchas gracias por tu ayuda