Welcome to Pandora FMS Community!

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

  • Pandora e Hyper-V

    Posted by jfcarpi on March 14, 2013 at 16:48

    Hola, he instalado una maquina virtual en Hyper-V a partir del CD de instalacion basado en SuSE, y la verdad el producto me ha dejado maravillado.

    Actualmente estoy monitorizando varios servidores Hyper-V tanto 2.0 como 3.0.
    Entre dos servidores Windows 2012 estoy monitorizando la replicacion de diferentes maquinas virtuales con el siguiente script:

    ‘ WMIEstatHyperVReplica.vbs
    ‘ Check health of Hyper-V virtual machines with replica enabled.

    Option Explicit
    On Error Resume Next

    ‘ Variables
    Dim strComputer, objWMIService, objItem, colItems, argc, argv, i

    ‘ Parse command line parameters
    ‘argc = Wscript.Arguments.Count
    ‘Set argv = CreateObject(“Scripting.Dictionary”)
    ‘For i = 0 To argc – 1
    ‘    argv.Add Wscript.Arguments(i), i
    ‘Next

    strComputer = “.”
    Set objWMIService = GetObject(“winmgmts:\” & strComputer & “rootvirtualizationv2”)
    Set colItems = objWMIService.ExecQuery( “SELECT * FROM Msvm_ComputerSystem”,,48)
    For Each objItem in colItems
    If objItem.ReplicationMode = 1 Then
    Wscript.StdOut.WriteLine “
    Wscript.StdOut.WriteLine ”   
    Wscript.StdOut.WriteLine ”   
    Wscript.StdOut.WriteLine ”   
    Wscript.StdOut.WriteLine “

            Wscript.StdOut.flush
    End If
    Next

    Estableciendo los min/max del Warning/Critical segun el valor de objItem.ReplicationHealth podemos disparar las alertas cuando una maquina deja de replicarse.

    El resto de las maquinas virtuales que no se estan replicando, las monitorizo para saber si estan encendidas o apagadas con el siguiente script:

    ‘ WMIEstatHyperVM.vbs
    ‘ Check if Hyper-V virtual machines is running.

    Option Explicit
    On Error Resume Next

    ‘ Variables
    Dim strComputer, objWMIService, objItem, colItems, argc, argv, i

    strComputer = “.”
    Set objWMIService = GetObject(“winmgmts:\” & strComputer & “rootvirtualizationv2”)
    Set colItems = objWMIService.ExecQuery( “SELECT * FROM Msvm_ComputerSystem”,,48)
    For Each objItem in colItems
    If objItem.ReplicationMode = 0 Then
    Wscript.StdOut.WriteLine “
    Wscript.StdOut.WriteLine ”   
    Wscript.StdOut.WriteLine ”   
    Wscript.StdOut.WriteLine ”   

    ‘Wscript.StdOut.WriteLine ”   
    ‘If objItem.EnabledState = 2 Then
    ‘ Wscript.StdOut.WriteLine ”   
    ‘Else If objItem.EnabledState = 3 Then
    ‘ Wscript.StdOut.WriteLine ”   
    ‘Else
    ‘ Wscript.StdOut.WriteLine ”   
    ‘End if

    Wscript.StdOut.WriteLine “”

            Wscript.StdOut.flush
    End If
    Next

    El asunto es que no encuentro la forma de pasar como dato un texto, en vez de un valor, ya que en la documentacion no hay informacion al respecto, pues me gustaria saber de manera legible (como aparece en la parte del script comentada) el estado de cada maquina.

    Alguna idea?
    Gracias

    jfcarpi replied 11 years, 11 months ago 2 Members · 3 Replies
  • 3 Replies
  • darode

    Member
    March 14, 2013 at 17:01
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    Hola jfcarpi,

    Antes de nada muy buen aporte tus scripts!

    Respecto al segundo script, puedes enviar datos de tipo cadena de texto si pones como tipo de módulo generic_data_string , todos los tipos de módulos están aquí:

    http://www.openideas.info/wiki/index.php?title=Pandora:Documentation_es:Configuracion#module_type_.3Ctipo.3E

    Si no te funciona prueba a quitar los tags <![CDATA[ a ver si es ese el problema.

    Con esta modificación el módulo recibirá datos de tipo cadena de texto. Si el módulo existe previamente a la modificación del script deberás borrarlo ya que no se acepta que nos módulos cambien su tipo de datos.

    Un saludo, espero que te ayude.

    Dario.

  • jfcarpi

    Member
    March 14, 2013 at 18:38
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    Hola darode,
    Como puedes ver en el script tenia lineas al respecto comentadas, ya que lo habia probado sin exito.
    He repetido las pruebas con:

    If objItem.ReplicationMode = 0 Then
    Wscript.StdOut.WriteLine “”
    Wscript.StdOut.WriteLine ”    ”
    Wscript.StdOut.WriteLine ”    ”

    ‘Wscript.StdOut.WriteLine ”    ”

    Wscript.StdOut.WriteLine ”    ”

    If objItem.EnabledState = 2 Then
    Wscript.StdOut.WriteLine ”    ”
    Else If objItem.EnabledState = 3 Then
    Wscript.StdOut.WriteLine ”    ”
    Else
    Wscript.StdOut.WriteLine ”    ”
    End if

    Wscript.StdOut.WriteLine “”

            Wscript.StdOut.flush
    End If

    tambien lo he hecho quitando CDATA de las lineas donde paso la cadena, incluso acabo de probar a modificar el fichero pandora_agent.conf y poner:

    # Modul control maquines HyperV
    module_begin
    module_type generic_data_string
    module_plugin cscript.exe //B “%ProgramFiles%Pandora_AgentutilWMIEstatHyperVM.vbs”
    module_end

    en vez de solo la linea
    module_plugin cscript.exe //B “%ProgramFiles%Pandora_AgentutilWMIEstatHyperVM.vbs”

    y he borrado los modulos desde la consola, pues no funciona en ninguno de los casos y en todos ellos en el archivo pandora_agent.log aparece

    2013-03-14 15:26:15 Pandora agent stopped
    2013-03-14 15:26:16 Pandora agent started
    2013-03-14 15:26:22 Pandora_Module_Exec: plugin did not executed well (retcode: 1)

    Un saludo

  • jfcarpi

    Member
    March 15, 2013 at 16:10
    0 Karma points
    Community rank: tentacle-noob-1 Tentacle noob
    Like it
    Up
    0
    Down
    Drop it
    ::

    Bueno, pues al final solucionado, el script no se ejecutaba correctamente y de ahi venia el no poder pasar la cadena.
    Quedaria de la siguiente manera:

    En Windows Server 2012, para que diga el estado de las maquinas que no tienen habilitada la replicacion:

    ‘ WMIEstatHyperVM.vbs
    ‘ Check if Hyper-V virtual machines is running.

    Option Explicit
    On Error Resume Next

    ‘ Variables
    Dim strComputer, objWMIService, objItem, colItems, argc, argv, i

    strComputer = “.”
    Set objWMIService = GetObject(“winmgmts:\” & strComputer & “rootvirtualizationv2”)
    Set colItems = objWMIService.ExecQuery( “SELECT * FROM Msvm_ComputerSystem”,,48)

    For Each objItem in colItems
    If objItem.ReplicationMode = 0 Then
    Wscript.Stdout.WriteLine “”
    Wscript.Stdout.WriteLine ”    ”
    Wscript.Stdout.WriteLine ”    ”
    Wscript.Stdout.WriteLine ”    ”

    Select Case objItem.EnabledState
    Case 2 : Wscript.Stdout.WriteLine ”    ”
    Case 3 : Wscript.Stdout.WriteLine ”    ”
    Case Else
    Wscript.Stdout.WriteLine ”    ”
    End Select

    Wscript.Stdout.WriteLine “”
    End If
    Next

    En Windows Server 2008 R2 o Hyper-V Server 2008 R2, que no hay replicacion, para saber el estado de las maquinas:

    ‘ WMIEstatHyperVM.vbs
    ‘ Check if Hyper-V virtual machines is running.

    Option Explicit
    On Error Resume Next

    ‘ Variables
    Dim strComputer, objWMIService, objItem, colItems, argc, argv, i

    strComputer = “.”

    Set objWMIService = GetObject(“winmgmts:\” & strComputer & “rootvirtualization”)
    Set colItems = objWMIService.ExecQuery( “SELECT * FROM Msvm_ComputerSystem”,,48)

    For Each objItem in colItems

    Wscript.Stdout.WriteLine “”
    Wscript.Stdout.WriteLine ”    ”
    Wscript.Stdout.WriteLine ”    ”

    Wscript.Stdout.WriteLine ”    ”

    Select Case objItem.EnabledState
    Case 2 : Wscript.Stdout.WriteLine ”    ”
    Case 3 : Wscript.Stdout.WriteLine ”    ”
    Case Else
    Wscript.Stdout.WriteLine ”    ”
    End Select

    Wscript.Stdout.WriteLine “”
    Next

    Probado en ambos.
    Un saludo