Consultas WMI desde Linux

Ya llevo tiempo trabajando con la herramienta Nagios WSC que me permite monitorizar en Nagios los equipos Windows, sin desarrollar los incómodos scripts en Windows e invocarlos del port NRPE que existe para ellos, gracias a WMI. En los servidores Nagios, desarrollo unos pequeños scripts, que invocan las URLs del Web Service de Nagios-WSC que publico en IIS en un servidor Windows (habitualmente llamo a estos equipos Wagios), y transforman la salida del servicio web para al final tener una respuesta válida interpretable por Nagios.

Esta mañana me he planteado solucionar la monitorización de los clusters Microsoft a través de WMI. Para investigar que consulta realizar y qué clases consultar, siempre utilizo WMI Explorer, una pequeña utilidad Windows, que sin necesidad de instalar mucha cosa, me permite navegar por las clases. Para ello, lo primero que hay que hacer es tener claro el namespace que tenemos que consultar, y NameSpaces hay varios: root\aspnet, root\CIMV2, root\Cli, root\DEFAULT, root\directory, root\Microsoft, root\MicrosoftActiveDirectory, root\MicrosoftIISv2, root\MicrosoftNLB, root\MSCluster, root\perfmon, root\Policy, root\RSOP, root\SECURITY, root\subscription, root\WMI. Si no se tiene ni idea de WMI, como yo, se tarda un rato en descubrirlo :).

El NameSpace que aparece siempre seleccionado por defecto, y en que el que se basan la mayoría de ejemplos es root\cimv2, pero el que a mí interesaba era root\MSCluster. He realizado varias consultas y al final he comprobado que la clase que tenía los datos que me interesaban consultar era MSCluster_NodeToActiveGroup. Cuando he ido a Nagios WSC para cambiar el namespace, me he encontrado que no era posible, o yo no he sabido encontrar la forma de poder cambiarlo.

He empezado a buscar clientes para Linux (con idea de usarlos desde el propio servidor Nagios, en vez de usar el equipo intermediario Windows, wagios), y me he encontrado que tog-pegassus incorpora el comando wbemexec, pero después de leerme el manual tampoco he sabido construir un fichero XML con una petición que me funcionara, lo más cerca que he estado ha sido tener un fichero peticion.xml con este contenido,

<?xml version="1.0" ?>
<CIM CIMVERSION="2.0" DTDVERSION="2.0">
<MESSAGE ID="51000" PROTOCOLVERSION="1.0">
<SIMPLEREQ>
<IMETHODCALL NAME="EnumerateInstances">
<LOCALNAMESPACEPATH>
<NAMESPACE NAME="root"/>
<NAMESPACE NAME="MSCluster"/>
</LOCALNAMESPACEPATH>
<IPARAMVALUE NAME="PartComponent">
<CLASSNAME NAME="MSCluster_NodeToActiveGroup"/>
</IPARAMVALUE>
</IMETHODCALL>
</SIMPLEREQ>
</MESSAGE>
</CIM>
y luego ejecutar:
wbemexec -h vip-cluster -p 5989 -u 'DOM\\user' -w contraseña peticion.xml
wbemexec: Unable to use requested input file: file does not exist
pero no me ha funcionado :(. Al final he encontrado este otro cliente WMI, SBLIM (pronunciado "sublime"), que me permite ejecutar:
wbemcli ein -nl -noverify 'https://DOM\user:contraseña@vip-cluster:5989/root/MSCluster:MSCluster_NodeToActiveGroup'
y que sí funciona al pelo.

1 comentario:

Anónimo dijo...

Te puedo decir que también estuve un tiempo investigando exactamente lo mismo que tu: monitorizar con nagios servidores en cluster de MS sin la necesidad de instalar nada adicional en dichos servers.
También opté por wmi. Primero probé con pegasus y wbemcli, pero al final me encontré con una utilidad que me funciona de maravilla, y es wmic. En los repositorios de Ubuntu se puede encontrar como wmi-client.
Super sencillo y práctico que no veas!