So what thresholds do my monitors have?
One of the things people have been asking about is what thresholds are used by various monitors. There is no bullet proof way to do this, but here is a script I wrote that would answer this question for the majority of monitors:
function GetThreshold ([String] $configuration)
{$config = [xml] ("<config>" + $configuration + "</config>")
$threshold = $config.Config.Threshold
if($threshold -eq $null)
{
$threshold = $config.Config.MemoryThreshold
}if($threshold -eq $null)
{
$threshold = $config.Config.CPUPercentageThreshold
}if($threshold -eq $null)
{if($config.Config.Threshold1 -ne $null -and $config.Config.Threshold2 -ne $null)
{
$threshold = "first threshold is: " + $config.Config.Threshold1 + " second threshold is: " + $config.Config.Threshold2
}}
if($threshold -eq $null)
{if($config.Config.ThresholdWarnSec -ne $null -and $config.Config.ThresholdErrorSec -ne $null)
{
$threshold = "warning threshold is: " + $config.Config.ThresholdWarnSec + " error threshold is: " + $config.Config.ThresholdErrorSec
}}
if($threshold -eq $null)
{
if($config.Config.LearningAndBaseliningSettings -ne $null)
{
$threshold = "no threshold (baseline monitor)"
}
}return $threshold
}
$perfMonitors = get-monitor -Criteria:"IsUnitMonitor=1 and Category='PerformanceHealth'"
$perfMonitors | select-object @{name="Target";expression={foreach-object {(Get-MonitoringClass -Id:$_.Target.Id).DisplayName}}},DisplayName, @{name="Threshold";expression={foreach-object {GetThreshold $_.Configuration}}}, @{name="AlertOnState";expression={foreach-object {$_.AlertSettings.AlertOnState}}}, @{name="AutoResolveAlert";expression={foreach-object {$_.AlertSettings.AutoResolve}}}, @{name="AlertSeverity";expression={foreach-object {$_.AlertSettings.AlertSeverity}}} | sort Target, DisplayName | export-csv "c:\monitor_thresholds.csv"
The output of this script is a csv file with the following columns:
Type - the type of objects the monitor is targeted to
DisplayName - the display name of the monitor
Threshold - the threshold used by the monitor
AlertOnState - whether the monitor generates an alert when its state changes
AutoResolveAlert - whether the generated alert will be autoresolved when the monitor state goes back to green
AlertSeverity - the severity of the generated alert
Comments
- Anonymous
June 20, 2008
the script says "The 'Path' paramter is empty or the required provider location is not set." How come? - Anonymous
January 21, 2009
I am getting the same prompt as Volker, when trying to run this script. It is probably related to how I saved and ran the script. I copied and pasted the entire contents to a .ps1 file and then called this file from the OpsMgr Command Shell.Can someone please help? Thanks. - Anonymous
January 21, 2009
I am getting the same prompt as Volker, when trying to run this script. It is probably related to how I saved and ran the script. I copied and pasted the entire contents to a .ps1 file and then called this file from the OpsMgr Command Shell.Can someone please help? Thanks. - Anonymous
July 15, 2009
I had the same issue with regard to "The 'Path' paramter is empty or the required provider location is not set."When you start Ops Manager Shell DON'T change to the directory where you saved the script file to. Instead just type the full path to the script, i.e I copied the script and pasted into a file called Get-Thresholds.ps1 which I saved to C:Temp. Therefore, I typed c:tempGet-Threshold.ps1. In so doing the path is taken as the current location in the Ops Manager ShellHTHPaul