First, create a "Timed Script Three State Monitor" on the Authoring pane (Create a Monitor) - select "Unit Monitor"
Associate it to a brand new MP.
Then, target it to Windows Computer. I've decided to select "Configuration" to it's parent monitor (this is up to you!).
Also decided to NOT ENABLE IT by default.
Next, select the most effective schedule for you, i've decided to leave it to 5 minutes.
Fill the file name also as the script area, with this script :
(As you might notice, part of this code is from Nagios check check_time.vbs - credits go to the Author : Dmitry Vayntrub (dvayntrub@yahoo.com) )
Dim oAPI, oBag
Set oAPI = CreateObject("MOM.ScriptAPI")
Set oBag = oAPI.CreatePropertyBag()
Set objWMISvc = GetObject( "winmgmts:\\.\root\cimv2" )
Set colItems = objWMISvc.ExecQuery( "Select * from Win32_ComputerSystem" )
For Each objItem in colItems
strComputerDomain = objItem.Domain
Next
Set objShell = CreateObject("Wscript.Shell")
strCommand = "%SystemRoot%\System32\w32tm.exe /monitor /nowarn /computers:" & strComputerDomain
set objProc = objShell.Exec(strCommand)
warn = "5"
crit = "10"
input = ""
strOutput = ""
Do While Not objProc.StdOut.AtEndOfStream
input = objProc.StdOut.ReadLine
If InStr(input, "NTP") Then
strOutput = strOutput & input
End If
Loop
Set myRegExp = New RegExp
myRegExp.IgnoreCase = True
myRegExp.Global = True
myRegExp.Pattern = " NTP: ([+-][0-9]+\.[0-9]+)s"
Set myMatches = myRegExp.Execute(strOutput)
result = ""
If myMatches(0).SubMatches(0) <> "" Then
result = myMatches(0).SubMatches(0)
End If
For Each myMatch in myMatches
If myMatch.SubMatches(0) <> "" Then
If abs(result) > Abs(myMatch.SubMatches(0)) Then
result = myMatch.SubMatches(0)
End If
End If
Next
If result = "" Then
Err = 3
Status = "UNKNOWN"
ElseIf result > crit Then
Err = 2
status = "CRITICAL"
ElseIf result > warn Then
Err = 1
status = "WARNING"
Else
Err = 0
status = "OK"
End If
Call oBag.AddValue("NTPStatus",status)
Call oAPI.Return(oBag)
Next, we'll set the expressions (Unhealthy, Degraded and Healthy).
As you might notice i populated the Property Bag with parameter name as "NTPStatus" so you need to name your Parameter Name as follow :
Let the configure health step as it is.
For last, configure the alert rising as follows :
Now you need to override the monitor to a group or class as you prefer, and this is what it would like:
And that's it!
Hope you enjoy!
Great, thank you very much for this, just what I was after.
ReplyDeleteOne comment to note: The last screenshot showing the 'alert description' is very unclear. It wasn't an issue for myself as I have this monitor going against a specific DC only but a clearer or larger screenshot would be good.
Thanks for the feedback!
DeleteI'll keep your note in mind - i'll put hyperlinks to larger images in the future!
Thanks,
(Yet, Another Blog About ...) System Center: Opsmgr (Scom) - Ntp Deviation Monitor (Vbscript) >>>>> Download Now
Delete>>>>> Download Full
(Yet, Another Blog About ...) System Center: Opsmgr (Scom) - Ntp Deviation Monitor (Vbscript) >>>>> Download LINK
>>>>> Download Now
(Yet, Another Blog About ...) System Center: Opsmgr (Scom) - Ntp Deviation Monitor (Vbscript) >>>>> Download Full
>>>>> Download LINK Uk
This comment has been removed by the author.
ReplyDeleteHi,
ReplyDeleteDo we have any such option to monitor the NTP daemon for Linux/Unix servers
Nice work,
ReplyDeletePlease can you provide us the alert Context (the text the you put in there)
merci pour ce partage, pouvons nous avoir un exemple pour linux
ReplyDelete(Yet, Another Blog About ...) System Center: Opsmgr (Scom) - Ntp Deviation Monitor (Vbscript) >>>>> Download Now
ReplyDelete>>>>> Download Full
(Yet, Another Blog About ...) System Center: Opsmgr (Scom) - Ntp Deviation Monitor (Vbscript) >>>>> Download LINK
>>>>> Download Now
(Yet, Another Blog About ...) System Center: Opsmgr (Scom) - Ntp Deviation Monitor (Vbscript) >>>>> Download Full
>>>>> Download LINK