[Xymon] Windows services on a cluster.

Gautier Begin gbegin at csc.com
Tue Sep 18 17:32:29 CEST 2012


Hello,

You can also use this VBS script with BBWin:

Just modify the array Lst_Srv and put there the list of the service you 
want to monitor and value Cluster should be the name of the cluster you 
want to monitore.


'''''''''''''''''''''''
'
' VBS template for BBWin
'
'
' Gautier BEGIN
' CSC Luxembourg
' 11/02/2010
'
'
' The XYMON server name, the debug level, the test/column name and the 
LifeTime are read from the BBWin.cfg file
'
' An execution log is created in the BBWin\logs\<Column>.log file. The VBS 
object associated is ObjectFileLog.
'
'
' You have to fill the value of Msg_KO and Msg_OK according your own 
custom test.
'
'
' You can use the ERROR variable to send your error message (0=> MSG_OK, 
1=> MSG_KO)
'
'
'''''''''''''''''''''''

'''''''''''''''''''''''
'
' VBS std Variables
'
'''''''''''''''''''''''
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim Obj_FSO, WshShell, WshNetwork, xmlDoc

set Obj_FSO     = CreateObject("Scripting.FileSystemObject")
Set WshShell    = WScript.CreateObject("WScript.Shell")
Set WshNetwork  = WScript.CreateObject("WScript.Network")
Set xmlDoc      = CreateObject("Microsoft.XMLDOM")
xmlDoc.async    = "false"               ' permit to load the document in 
memory before computing


'''''''''''''''''''''''
'
' BBWin Variables 
'
'''''''''''''''''''''''
Dim Cmd, BB, PathBBWin, LOG, LifeTime, DebugLevel
Dim Msg_OK, Msg_KO, Msg, Color, Color_KO, Color_OK, Column, ERROR, Srv, 
Return, ExecCmd, ObjectFileLog, CFG, CFGVal, X


' To be Modified
Msg_OK = ""
Msg_KO = ""
Color_OK  = "green"
Color_KO  = "red"

' Default values
Column = "cluster"
DebugLevel  = 0
LifeTime = 10 'minutes

PathBBWin = WshShell.RegRead("HKLM\SOFTWARE\BBWin\binpath")
PathBBWin = Left(PathBBWin,Len(PathBBWin)-3)
BB     = PathBBWin & "bin\BBWinCmd.exe"
CFG    = PathBBWin & "etc\BBWin.cfg"



Return = 0
ERROR = 0

' Reading the config file


xmlDoc.load(CFG)
set CFGVal = xmlDoc.documentElement

   If Not CFGVal Is Nothing Then
        For Each x In CFGVal.selectNodes("/configuration/bbwin/setting")
                If X.getAttribute("name") = "bbdisplay" Then
                        Srv = X.getAttribute("value")
                End If

                If X.getAttribute("name") = "loglevel" Then
                        DebugLevel  = X.getAttribute("value")
                End If

                If X.getAttribute("name") = "timer" Then
                        LifeTime  = X.getAttribute("value")
                        Select Case Right(LifeTime ,1)
                                Case "m"  LifeTime = 
Left(LifeTime,Len(LifeTime)-1)
                                Case "h"  LifeTime = 
Left(LifeTime,Len(LifeTime)-1) * 60
                                Case "d"  LifeTime = 
Left(LifeTime,Len(LifeTime)-1) * 60 * 24
                                Case Else LifeTime = 1
                        End Select

                End If
        Next

        For Each x In CFGVal.selectNodes("/configuration/externals/load")
                If InStrRev(X.getAttribute("value"),WScript.ScriptName) > 
0 Then
                        Column = X.getAttribute("name")
                End If 

        Next


    End If

LOG    = PathBBWin & "logs\" & Column & ".log"
if ( DebugLevel > 0 ) Then 
        set ObjectFileLog = Obj_FSO.OpenTextFile(LOG,ForAppending  ,True)
End if


'''''''''''''''''''''''
'
' Custom test
'
'''''''''''''''''''''''

Dim strComputer, ResGrp, ActiveNode, IsActiveNode 
Dim objWMIService, colItems, objItem 
Dim Service, Status, Elt, Cluster, Disp_Name

strComputer = "."
IsActiveNode = 0
Lst_Srv= Array("MSFtpsvc")      ' FTP Service 
Cluster = "Cluster_Name"

Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & 
"\root\mscluster")

Set colItems = objWMIService.ExecQuery("Select * from 
mscluster_nodetoactivegroup")
For Each objItem in colItems 
        ResGrp = Treatment(objItem.PartComponent)

        If ResGrp = Cluster Then
                ActiveNode = Treatment(objItem.GroupComponent)
                If ActiveNode = WshNetwork.ComputerName Then IsActiveNode 
= 1
        End If
Next

' Test the state of the services
Set objWMIService = 
GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & 
"\root\cimv2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Service ")

For Each objItem in colItems
        Service = objItem.Name 
        Status = objItem.State 
        Disp_Name =  objItem.DisplayName
 
        For Each Elt in Lst_Srv
                If Elt = Service Then 

                        If  (( IsActiveNode = 1 ) and ( Status = "Running" 
)) Then 
                                Msg_OK = "&" & Color_OK & " The service " 
& Disp_Name & " is running on the active node of the cluster " & Cluster & 
vbCRLF & Msg_OK
                        Elseif  (( IsActiveNode = 0 ) and ( Status = 
"Stopped" )) Then
                                Msg_OK = "&" & Color_OK & " The service " 
& Disp_Name & " is stopped on the passive node of the cluster " & Cluster 
& vbCRLF & Msg_OK
                        Else
                                ERROR = 1
                                If IsActiveNode = 1 Then
                                        Msg_KO = "&" & Color_KO & " The 
service " & Disp_Name & " is " & Status & " on the active node of the 
cluster " & Cluster & vbCRLF & Msg_KO
                                Else
                                        Msg_KO = "&" & Color_KO & " The 
service " & Disp_Name & " is " & Status & " on the passive node of the 
cluster " & Cluster & vbCRLF & Msg_KO
                                End If
                        End If
                End If
        Next
Next



Function Treatment(String)

        Treatment = Replace(Right(String,Len(String) - 
InStr(String,"=")),"""","")

End Function 

'''''''''''''''''''''''
'
' Sending the alarm
'
'''''''''''''''''''''''


If ( ERROR = 0 ) Then
        Color = Color_OK
        Msg = Msg_OK
Else
        If InStr(Msg_KO,"red") > 0 Then
                Color = "red"
        Else
                Color = "yellow" 
        End If
        Msg = Msg_KO & vbCRLF & Msg_OK
End if
Msg = Now() & vbCRLF & Msg

'WScript.Echo Msg
'WScript.Quit

LifeTime = LifeTime * 3
Cmd = Chr(34) & BB & Chr(34) & " " & Srv & " status " & 
WshNetwork.ComputerName & " " & Column & " " & Color & " " & Chr(34) & MSG 
& Chr(34) & " " & LifeTime

On Error Resume Next
Set ExecCmd = WshShell.Exec(Cmd)

' Old version of VBS
If Err.Number <> 0 Then
        Return = WshShell.Run("C:\progra~1\BBWin\bin\BBWinCmd.exe " & Srv 
& " status " & WshNetwork.ComputerName & " " & Column & " " & Color & " " 
& Chr(34) & MSG & Chr(34) & " " & LifeTime, 0, True)
Else
        Return = ExecCmd.ExitCode
End If

On Error Goto 0


If ( DebugLevel > 0 ) Then
        If ( Return <> 0 ) Then
                ObjectFileLog.WriteLine(Now() & " " & Cmd & " Output error 
code: " & Return )
        Else
                if ( DebugLevel = 4 ) Then
                        ObjectFileLog.WriteLine(Now() & " " & Cmd & " 
Output error code: " & Return )
                End if
        End if
End if

'''''''''''''''''''''''
'
' Destruction of Objects
'
'''''''''''''''''''''''
' Objects of the test

set objWMIService = Nothing
set colItems      = Nothing
set objItem       = Nothing



' Std BBWin Objects


if ( DebugLevel > 0 ) Then 
        ObjectFileLog.Close
        set ObjectFileLog  = Nothing
End if
set ExecCmd      = Nothing
set WshNetwork   = Nothing
set WshShell     = Nothing
set Obj_FSO      = Nothing 
set xmlDoc       = Nothing 
set X            = Nothing 

Cordialement, Regards,Mit freundlichen Grüßen,

Gautier BEGIN

Admin and Tools Team Lead
CSC Computer Sciences Luxembourg S.A.
12D Impasse Drosbach
L-1882 Luxembourg

Global Outsourcing Service | p:+352 24 834 276 | m:+352 621 229 172 | 
gbegin at csc.com | www.csc.com


CSC • This is a PRIVATE message. If you are not the intended recipient, 
please delete without copying and kindly advise us by e-mail of the 
mistake in delivery.  NOTE: Regardless of content, this e-mail shall not 
operate to bind CSC to any order or other contract unless pursuant to 
explicit written agreement or government initiative expressly permitting 
the use of e-mail for such purpose
 • 
CSC Computer Sciences SAS • Registered Office: Immeuble Le Balzac, 10 
Place des Vosges, 92072 Paris La Défense Cedex, France • Registered in 
France: RCS Nanterre B 315 268 664



From:   "Neil Simmonds" <Neil.Simmonds at express-gifts.co.uk>
To:     "Xymon mailinglist" <xymon at xymon.com>
Date:   09/18/2012 03:35 PM
Subject:        Re: [Xymon] Windows services on a cluster.
Sent by:        xymon-bounces at xymon.com



Hi Thomas,

I looked at that and it doesn't really do what I want as it only 
differentiates between red,blue,purple or green,yellow,clear. 

If it set different values for the different colours then it would be a 
lot better. 

I think I might be able to do something with it, but it will mean changes 
to some of my scripting. We have a script that alerts to tests that are 
active but not in critical,cfg as we mainly use the critical view for our 
operators so I just have to work out how to add the exclusions for svcs 
column on the 2 servers I want to compare. If I do that I can happily have 
them turning red and therefore use combo.cfg


Not ideal in this situation but it looks like it's the most workable 
solution.

Regards,
Neil.

> -----Original Message-----
> From: Thomas Kähn [mailto:tkaehn at netcologne.de]
> Sent: 18 September 2012 12:22
> To: Neil Simmonds
> Cc: Xymon mailinglist
> Subject: Re: [Xymon] Windows services on a cluster.
> 
> Hi Neil,
> 
> On Tue, Sep 18, 2012 at 11:51:25AM +0100, Neil Simmonds wrote:
> > Has anyone done anything in Xymon for monitoring windows services 
across
> > a cluster.
> >
> > I've got a set of services I need to monitor and as long as they are
> > running on one of 2 servers then all is OK.
> 
> > I can't seem to find a way to do this in Xymon. Has anyone done
> > something like this?
> 
> I haven't tried myself. But you could try to use bbwin as client in
> conjunction with the combostatus feature:
> 
> http://bbwin.sourceforge.net/ 
> http://xymon.sourceforge.net/xymon/help/manpages/man5/combo.cfg.5.html 
> 
> Best regards
> Thomas Kähn
> --
> Thomas Kähn
> Technik, Network Engineering & Design; Content Delivery Platform & IP
> ---------------------------------------------------------------------
> NETCOLOGNE Gesellschaft für Telekommunikation mbH
> Am Coloneum 9 | 50829 Köln
> 
> www.netcologne.de 
> 
> Geschäftsführer:
> Dr. Hans Konle (Sprecher)
> Dipl.-Ing. Karl-Heinz Zankel
> 
> Vorsitzender des Aufsichtsrates:
> Dr. Andreas Cerbe
> 
> HRB 25580, AG Köln
> 
> 
> Diese Nachricht (inklusive aller Anhänge) ist vertraulich. Sollten
> Sie diese Nachricht versehentlich erhalten haben, bitten wir, den
> Absender (durch Antwort-E-Mail) hiervon unverzüglich zu informieren
> und die Nachricht zu löschen. Die E-Mail darf in diesem Fall weder
> vervielfältigt noch in anderer Weise verwendet werden.
Name & Registered Office: EXPRESS GIFTS LIMITED, 2 GREGORY ST, HYDE, 
CHESHIRE, ENGLAND, SK14 4TH, Company No. 00718151.
Express Gifts Limited is authorised and regulated by the Financial 
Services Authority

NOTE: This email and any information contained within or attached in a 
separate file is confidential and intended solely for the Individual to 
whom it is addressed. The information or data included is solely for the 
purpose indicated or previously agreed. Any information or data included 
with this e-mail remains the property of Findel PLC and the recipient will 
refrain from utilising the information for any purpose other than that 
indicated and upon request will destroy the information and remove it from 
their records. Any views or opinions presented are solely those of the 
author and do not necessarily represent those of Findel PLC. If you are 
not the intended recipient, be advised that you have received this email 
in error and that any use, dissemination, forwarding, printing, or copying 
of this email is strictly prohibited. No warranties or assurances are made 
in relation to the safety and content of this e-mail and any attachments. 
No liability is accepted for any consequences arising from it. Findel Plc 
reserves the right to monitor all e-mail communications through its 
internal and external networks. If you have received this email in error 
please notify our IT helpdesk on +44(0) 1254 303030
 _______________________________________________
Xymon mailing list
Xymon at xymon.com
http://lists.xymon.com/mailman/listinfo/xymon


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.xymon.com/pipermail/xymon/attachments/20120918/a9af3fa2/attachment.html>


More information about the Xymon mailing list