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:21Buenos 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
-
::
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:
– Y por último, creas la alerta para que cuando se modifique muestre la última linea de texto de archivo:
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
-
-
::
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:
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.
-
::
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_endCon 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
-
::
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
-
::
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_endPoniendo 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
-
::
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 argumentCada 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 argumentEl 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
-
::
En este caso sería:
module_begin
module_name Cuantas lineas
module_type generic_data
module_exec type C:cosa.txt | wc -l
module_endLo 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!
-
-
::
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_endY la alerta está configurada simplemente como un cambio de estado…
-
-
::
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.
-