Welcome to Pandora FMS Community › Forums › Soporte de la comunidad › Ayuda con consulta WMI
-
Ayuda con consulta WMI
Posted by premier on June 1, 2011 at 18:21Estimados
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
-
::
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:
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.
-
::
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! 🙂
-
::
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!
-
::
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!
-
-
::
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!
-
::
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
-
::
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. 🙂
-
::
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
-
::
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.
-
::
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