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