miércoles, 11 de febrero de 2009

Utilizar WMIC en Zabbix

Windows Management Instrumentation Command-line (WMIC) nos revela una gran cantidad de información sobre los sistemas Windows y hardware subyacente, mediante el uso de Windows Management Instrumentation (WMI). El primer propósito de WMIC es facilitar administración de tareas automáticas y de script.

Por ejemplo, para mostrar los procesos activos tenemos que ejecutar bajo windows este commando:

WMIC process GET Name

Ahora vamos a implementar esta funcionalidad en Zabbix.

Zabbix tiene la posibilidad de ejecutar items mediante comandos externos a nuestros hosts utilizando el comando system.run.

Como requisito en los host tiene que estar habilitado el EnableRemoteCommands=1 en nuestro archivo de configuración del agente (zabbix_agentd.conf)

PRIMER EJEMPLO. Number of Stopped Auto Services

En este ejemplo veremos como enumerara los servicios de Windows configurados en estado automático y que estén parados.

Posteriormente si el número de servicios en estado automático y parados cambiara nos avisará con un trigger.

Esto es muy práctico para controlar si se para algún servicio que tendría que estar iniciado.

Configuración del Item:

Description: Number of Stopped Auto Services
Type: ZABBIX agent
Key: system.run[WMIC service WHERE "State="Stopped" AND StartMode="Auto"" GET Name /FORMAT:list find "Name" /c]
Type of information: Numeric (integer 64bit)

Configuración del Trigger:

Name: Number of Stopped Auto Services has Changed
Expression: {HOST:system.run[WMIC service WHERE "State="Stopped" AND StartMode="Auto"" GET Name /FORMAT:list find "Name" /c].change(0)}#0



SEGUNDO EJEMPLO: Number of Software Installed

En este ejemplo veremos como enumerara los programas instalados en Windows y que nos avise si se desinstala o instala alguno de nuevo.

Configuración del Item:

Description: Number of Stopped Auto Services
Type: ZABBIX agent
Key: system.run[WMIC product GET Name /FORMAT:list find "Name" /c]
Type of information: Numeric (integer 64bit)

Configuración del Trigger:

Name: Number of Software Installed has Changed
Expression: {HOST:system.run[WMIC product GET Name /FORMAT:list find "Name" /c].change(0)}#0

En este último ejemplo seguramente tendremos que cambiar el timeout del Servidor de Zabbix ya que WMIC tarda un poco en hacer la consulta.

sudo nano /etc/zabbix/zabbix_server.conf

# Specifies how long we wait for agent response (in sec)
# Must be between 1 and 30
Timeout=30

Zabbix 1.6.2 SO: Ubuntu 8.10

4 comentarios:

  1. Gracias por la info!
    A ver si alguien se curra un manual en castellano para despues de instalarlo empezar a usarlo...

    ResponderEliminar
  2. Muito bom, meu parabéns, conteúdo que estava procurando há muito tempo e que somente agora encontrei!! meus parabéns!!!

    ResponderEliminar
  3. Hola a Todos,
    Solo indicar que actualmente este mandato:
    "WMIC product GET Name /FORMAT:list find "Name" /c"
    A mi no me ha funcionado en W7 ni en W10, imagino que debido a las nuevas versiones, para que funcione correctamente el mandato sería:
    "WMIC PRODUCT GET NAME /FORMAT:list | FIND "Name" /c"

    Un saludo.

    ResponderEliminar
  4. Hola, le agradeceré mucho que me indiquen Cual es el equivalente para linux por ejemplo de
    system.run[WMIC product GET Name /FORMAT:list find "Name" /c]

    ResponderEliminar