Monitorizar Servicios Windows con WMI

CNM permite monitorizar equipos Windows mediante WMI. En esta nota técnica vamos a ver a modo de ejemplo cómo monitorizar el estado de los servicios definidos en el sistema operativo.

El primer paso es definir en CNM la credencial necesaria para permitir el acceso WMI. Una vez hecho esto, se debe asociar  al dispositivo que vamos a monitorizar. Esto permite que al pulsar el botón de Modificar dispositivo, si el acceso es correcto se disponga de las aplicaciones y métricas WMI en el asistente y la solapa de aplicaciones.

CNM incluye por defecto dos métricas para monitorizar servicios:

  • WMI-SERVICIO (con instancias)
  • WMI-SERVICIO SNMP (sin instancias)

Ambas utilizan el script linux_metric_wmi_services.pl incluido en el sistema. Veamos cuáles son las diferencias.

USO DE MÉTRICA CON INSTANCIAS 

Si se utiliza la métrica WMI-SERVICIO, el sistema calculará cada una de las instancias de la misma que en este caso serán los servicios disponibles en el equipo. El usuario puede seleccionar sólo aquellos que quiera monitorizar o todos si fuera el caso.

Puede ser una buena solución cuando no se busca un servicio concreto sino un grupo de servicios de los que posiblemente tampoco se sepa exactamente cuales son y donde la inspección de las instancias reportadas permitan simplificar el proceso.

Notar que si se asocia en la métrica como tal desde el asistente se van a monitorizar todos los servicios de la máquina.

 

USO DE MÉTRICA SIN INSTANCIAS 

Otro enfoque es utilizar una métrica sin instancias. Esto permite definir métricas específicas para monitorizar un servicio concreto, lo que proporciona un mayor detalle en informes y monitores a la vez que identifica de forma más clara los servicios que son críticos en nuestro entorno.

Para ello se incluye la métrica WMI-SERVICIO SNMP a modo de ejemplo, bastaría duplicar dicha métrica y modificarla según nuestras intenciones. Para ello habría que hacer dos cambios sobre la nueva métrica:

Modificar el Nombre de la métrica

Se sustituye el nombre WMI-SERVICIO SNMP - COPIA por WMI-SERVICIO xxx Siendo xxx elnombre que del servicio monitorizado. En este caso es descriptivo y no es indispensable que sea el nombre que Windows asigna a dicho servicio.

Modificar el campo tag que permite identificar el dato devuelto por el script.

El campo tag permite identificar el dato devuelto por el script. Para ello debemos saber el nombre que windows asigna a dicho servicio que podemos obtener de varias formas:

  • Utilizando la aplicación "OBTENER LOS SERVICIOS WINDOWS" sobre el dispositivo y mirarlo en la columna Name.

Detalle aplicacion CNM de Estado de servicios WMI

 

  • Ver el nombre desde la ventana de propiedades del servicio en el equipo Windows.

SO Windows - Propiedades de servicio

Una vez identificado dicho nombre sustituiremos en el tag inicial 200.SNMP el texto SNMP por el texto del nombre del servicio a monitorizar. Si fuera por ejemplo el planificador de tareas de Windows tendríamos que poner: 200.Schedule 

Para entender esto sólo hay que saber cuáles son los datos que devuelve el script que estamos usando para definir estas métricas. Recordad que para que un script sea válido para definir métricas debe tener una salida del tipo:

<tag> Texto = valor

<tag.instancia> Texto = valor 

En este caso por ser una métrica con instancias el resultado es del tipo:

<200.RemoteRegistry> State = 1
<200.RpcEptMapper> State = 1
<200.RpcLocator> State = 3
<200.RpcSs> State = 1
<200.RSoPProv> State = 3
<200.sacsvr> State = 3
<200.SamSs> State = 1
<200.SCardSvr> State = 3
<200.Schedule> State = 1
<200.SCPolicySvc> State = 3
<200.seclogon> State = 3
<200.SENS> State = 1
<200.SessionEnv> State = 1
<200.SharedAccess> State = 3
<200.ShellHWDetection> State = 1                 
<200.SNMP> State = 1
<200.SNMPTRAP> State = 3
<200.Spooler> State = 1
<200.sppsvc> State = 1
<200.sppuinotify> State = 1
<200.SSDPSRV> State = 3
<200.SstpSvc> State = 3

Donde el valor del tag es 200, que en este caso indica el valor del estado del servicio y el nombre de la instancia aparece a continuación. por ello si queremos monitorizar el servicio Schedule debemos poner 200.Schedule como aparece en la salida del script.