Welcome to Pandora FMS Community!

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

  • Ayuda con consulta WMI

    Posted by premier on June 1, 2011 at 18:21

    Estimados

    Estoy monitoreando el estado de servicio McShield de mcafee en servdidores Windows. Para esto lo he efectuado con Generic String, WMI donde la consulta es select Name, State from Win32_Service where name = “McShield” y me trae el valor OK.

    Lo que necesito es que cuando me traiga un valor de fallo o Stoped, pueda alarmarlo. Tengo esta duda porque solo veo que puedo alarmar estados con solo numeros minimos o maximos.

    Gracias.

    alumbreras replied 13 years, 6 months ago 4 Members · 11 Replies
  • 11 Replies
  • tpalacios

    Member
    June 1, 2011 at 19:31
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    Hola de nuevo 😉

    Cuidado a la hora de distinguir entre estado normal, advertencia y crítico y las alarmas asociadas a módulos… son una cosa muy distinta. Puedes definir alarmas en módulos independientemente del estado en el que se encuentra.

    No hace falta que un módulo tenga que entrar en estado crítico para activar una alarma… ese es solo uno de los disparadores posibles para la alarma asociada al módulo.

    Hay otros disparadores más específicos que tienen más que ver con tu caso concreto.

    Tal vez te ayude un poco en este tema una discusión previa que tuve con otro usuario a la hora de definir alertas, pues el modo de alerta que tratamos en ese tema es uno de los que te convienen:

    Definiendo alertas On Change

    En tu caso, crea una plantilla de alerta nueva para este evento, usando una accion y comandos existentes o crea unos nuevos, lo que te venga mejor.

    Para saber como, te recomiendo una lectura previa de:

    Guía rápida de configuración de alertas en Pandora FMS

    Puedes definir el disparador de la alerta en la plantilla bien cuando el valor cambie (On Change), aunque si quieres recibir la alerta no cada vez que cambie sino unicamente cuando ponga FAIL o STOPPED, usa un disparador para expresiones regulares con este formato:

    Value: palabra1|palabra2|…|palabraN

    Una vez creada la alerta, asóciala al módulo en cuestión y ahí lo tienes.

    Si tienes más dudas tan solo sigue escribiendo. 😉

    Saludos.

  • premier

    Member
    June 3, 2011 at 20:06
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    Si,  ahora entiendo los “tipos” de alarmas que pueden ser buenas o malas y veo que me he expresado de forma erronea. Lo correcto es que cuando el modulo me traiga el texto PAUSSED, esto pase a estado critico y asi se pueda reflejar en mi mapa Visual.
    Claro, cuando tengo modulos PING (como me trae numeros) le puedo asociar los rangos de un estado normal, de advertencia o critico, pero cuando no traigo numeros y en este caso texto?.

    Ahh esto te puede servir. Esto lo necesito para mi mapa visual debido a que a los agentes les tengo asociada una animacion en donde el estado normal es una figura verde y el estado critico es rojo. Me funciona de maravillas con PING.

    Gracias! 🙂

  • tpalacios

    Member
    June 6, 2011 at 11:58
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    De nada! 🙂

    Otra solución sería probar a escribir un script que procese esa salida y parsearlo de forma que a cada uno se le asocie un valor numérico (OK = 1, STOPPED, PAUSED = 0), y sea ese el valor que muestre a la salida, para así definir un módulo booleano y que entre en estado crítico si el elemento en cuestión está parado.

    Un saludo!

  • premier

    Member
    June 6, 2011 at 22:31
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    De nada! 🙂

    Otra solución sería probar a escribir un script que procese esa salida y parsearlo de forma que a cada uno se le asocie un valor numérico (OK = 1, STOPPED, PAUSED = 0), y sea ese el valor que muestre a la salida, para así definir un módulo booleano y que entre en estado crítico si el elemento en cuestión está parado.

    Un saludo!

    MM, esa es la solución, pero me puedes orientar con el script?.

    Saludos!

  • aitor

    Member
    June 17, 2011 at 13:42
    7 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    Seria ideal, que para la proxima version, los umbrales de  estado tambien pudieran ser en formato texto.

  • tpalacios

    Member
    June 17, 2011 at 15:43
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    Sobre la orientación con el script premier… tienes la solución al problema y que es lo que tiene que hacer dicho script para que funcione como quieres… respecto al código o la metodología sobre como hacerlo, te recomiendo que busques ejemplos varios en la web, y toma de ellos lo que necesites para hacerlo… te aseguro que hay cientos y que muchos sirven para tu propósito. 😉

    Y sobre definir umbrales de estado en los módulos en formato texto… por favor podrías explicarme en que caso concreto eso podría ser necesario? Porque hasta ahora es posible definir alertas basandose en expresiones regulares que se disparen cuando el string valga esto o esto o esto… etc.

    Saludos!

  • alumbreras

    Member
    June 23, 2011 at 10:31
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    hola, buenos dias

    lo del script para parsear los resultados lo puedes hacer en vbs. En internet hay multitud de ejemplos para ejecutar consultas wmi por vbs. Entonces cuando tengas el resultado de la consulta wmi puedes preguntar con un if por el valor del resultado y alli retornar el resultado que te interese.

    si necesitas algun ejemplo me avisas que lo busco de algun modulo que tenga hecho y te lo cuelgo aqui.

    gracias

  • premier

    Member
    July 15, 2011 at 19:00
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    hola, buenos dias

    lo del script para parsear los resultados lo puedes hacer en vbs. En internet hay multitud de ejemplos para ejecutar consultas wmi por vbs. Entonces cuando tengas el resultado de la consulta wmi puedes preguntar con un if por el valor del resultado y alli retornar el resultado que te interese.

    si necesitas algun ejemplo me avisas que lo busco de algun modulo que tenga hecho y te lo cuelgo aqui.

    gracias

    Gracias a ti. Espero el ejemplo. 🙂

  • alumbreras

    Member
    July 21, 2011 at 15:39
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    Hola de nuevo,

    Te paso el ejemplo.

    
    Option Explicit
    Dim objWMIService, objItem, colItems
    Dim strComputer, strList
    
    strComputer = "."
    
    
    Set objWMIService = GetObject("winmgmts:\" & strComputer & "rootcimv2")
    
    
    Set colItems = objWMIService.ExecQuery("Select * from Win32_Service where Name = 'AppMgmt'")
    
    
    For Each objItem in colItems
    
    if objItem.State = "Running" then 
    	WScript.StdOut.WriteLine "1" 
    else
    	WScript.StdOut.WriteLine "0" 
    end if
    
    Next
    
    WSCript.Quit
    
    

    Para crear el modulo lo tienes que hacer con :

    module_exec cscript.exe -nologo nombrefichero.vbs 

    * Asegurate que la ruta donde esta el cscript.exe esta dentro del path, si no la tienes debes poner la ruta completa

    si necesitas alguna aclaracion del script me lo comentas

    gracias

  • premier

    Member
    July 21, 2011 at 17:59
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    Hola de nuevo,

    Te paso el ejemplo.

    
    Option Explicit
    Dim objWMIService, objItem, colItems
    Dim strComputer, strList
    
    strComputer = "."
    
    
    Set objWMIService = GetObject("winmgmts:\" & strComputer & "rootcimv2")
    
    
    Set colItems = objWMIService.ExecQuery("Select * from Win32_Service where Name = 'AppMgmt'")
    
    
    For Each objItem in colItems
    
    if objItem.State = "Running" then 
    	WScript.StdOut.WriteLine "1" 
    else
    	WScript.StdOut.WriteLine "0" 
    end if
    
    Next
    
    WSCript.Quit
    
    

    Para crear el modulo lo tienes que hacer con :

    module_exec cscript.exe -nologo nombrefichero.vbs 

    * Asegurate que la ruta donde esta el cscript.exe esta dentro del path, si no la tienes debes poner la ruta completa

    si necesitas alguna aclaracion del script me lo comentas

    gracias

    Para hacer esto, es obligatorio tener el agente pandora instalado en cada equipo?. La verdad esta consulta la estoy haciendo en mas de 200 equipos y no seria recomendable instalar el agente pandora en todos los equipos.

    Muchas Gracias por tu ayuda.

  • alumbreras

    Member
    July 22, 2011 at 10:25
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    Hola de nuevo,

    No, no es necesario instalar el agente en los equipos. Si te fijas, dentro del script hay una variable que se llama strcomputer y que esta assignada a “.”. El punto indica la máquina actual. Pero si pones el nombre de cualquier otra máquina, te va a ejecutar el script igualmente.

    Para hacer esto hay que tener en cuenta un par de cosas. La primera es que el usuario que debe ejecutar esto debe tener permisos sobre las otras máquinas, es decir que el servicio de pandora no lo debe ejecutar localsystem sino un usuario del dominio. Prueba a ver si con un usuario generico puedes y si no te deja, deberias poner un administrador.

    Con lo del usuario administrador hay otro problema de seguridad. Hay que ser consciente que vas a dejar ejecutar el script ( o sea, cualquier cosa si te modifican el fichero ) con código a nivel de administrador. Deberias protejer el archivo de solo lectura para todo el mundo.

    Nos vemos por aqui