Function StaticThresholdMaxOnly
{
param($CollectionOfCounterInstances,$Operator,$Threshold,$IsTrendOnly=$False)
For ($i=0;$i -lt $CollectionOfCounterInstances.Count;$i++)
{
$oCounterInstance = $CollectionOfCounterInstances[$i]
#Check OverallCounters
If ($oCounterInstance.Name.Contains('INTERNAL_OVERALL_COUNTER_STATS_') -eq $True)
{
If (($oCounterInstance.Max -ne '-') -and ($oCounterInstance.Max -ne $null))
{
If ($oCounterInstance.Max -is [System.Char])
{
[System.Int32] $iMax = $oCounterInstance.Max
[System.Double] $iMax = $iMax
}
Else
{
[System.Double] $iMax = $oCounterInstance.Max
}
$IsMinThresholdBroken = $False
$IsAvgThresholdBroken = $False
$IsMaxThresholdBroken = $False
$IsTrendThresholdBroken = $False
$IsMinEvaluated = $False
$IsAvgEvaluated = $False
$IsMaxEvaluated = $False
$IsTrendEvaluated = $False
switch ($Operator)
{
'gt'
{
If ([System.Double] $iMax -gt [System.Double] $Threshold)
{
$IsMaxThresholdBroken = $True
}
}
'ge'
{
If ([System.Double] $iMax -ge [System.Double] $Threshold)
{
$IsMaxThresholdBroken = $True
}
}
'lt'
{
If ([System.Double] $iMax -lt [System.Double] $Threshold)
{
$IsMaxThresholdBroken = $True
}
}
'le'
{
If ([System.Double] $iMax -le [System.Double] $Threshold)
{
$IsMaxThresholdBroken = $True
}
}
'eq'
{
If ([System.Double] $iMax -eq [System.Double] $Threshold)
{
$IsMaxThresholdBroken = $True
}
}
default
{
If ([System.Double] $iMax -gt [System.Double] $Threshold)
{
$IsMaxThresholdBroken = $True
}
}
}
If (($IsMinThresholdBroken -eq $True) -or ($IsAvgThresholdBroken -eq $True) -or ($IsMaxThresholdBroken -eq $True) -or ($IsTrendThresholdBroken -eq $True))
{
#Write-Host "Create alert - Overall: True"
CreateAlert -TimeSliceIndex 0 -CounterInstanceObject $oCounterInstance -IsMinThresholdBroken $IsMinThresholdBroken -IsAvgThresholdBroken $IsAvgThresholdBroken -IsMaxThresholdBroken $IsMaxThresholdBroken -IsTrendThresholdBroken $IsTrendThresholdBroken -IsMinEvaluated $IsMinEvaluated -IsAvgEvaluated $IsAvgEvaluated -IsMaxEvaluated $IsMaxEvaluated -IsTrendEvaluated $IsTrendEvaluated
}
Else
{
#Write-Host "Create alert - Overall: False"
}
}
}
Else
{
#Check Alerts (Quantized)
For ($t=0;$t -lt $alQuantizedTime.Count;$t++)
{
$IsMinThresholdBroken = $False
$IsAvgThresholdBroken = $False
$IsMaxThresholdBroken = $False
$IsTrendThresholdBroken = $False
$IsMinEvaluated = $False
$IsAvgEvaluated = $False
$IsMaxEvaluated = $False
$IsTrendEvaluated = $False
If ($oCounterInstance.QuantizedMax -is [System.String])
{
[System.Double[]] $aQuantizedMax = @($oCounterInstance.QuantizedMax.Split(','))
}
Else
{
[System.Double[]] $aQuantizedMax = @($oCounterInstance.QuantizedMax)
}
$iQuantizedMax = $aQuantizedMax[$t]
switch ($Operator)
{
'gt'
{
If ([System.Double] $iQuantizedMax -gt [System.Double] $Threshold)
{
$IsMaxThresholdBroken = $True
}
}
'ge'
{
If ([System.Double] $iQuantizedMax -ge [System.Double] $Threshold)
{
$IsMaxThresholdBroken = $True
}
}
'lt'
{
If ([System.Double] $iQuantizedMax -lt [System.Double] $Threshold)
{
$IsMaxThresholdBroken = $True
}
}
'le'
{
If ([System.Double] $iQuantizedMax -le [System.Double] $Threshold)
{
$IsMaxThresholdBroken = $True
}
}
'eq'
{
If ([System.Double] $iQuantizedMax -eq [System.Double] $Threshold)
{
$IsMaxThresholdBroken = $True
}
}
default
{
If ([System.Double] $iQuantizedMax -gt [System.Double] $Threshold)
{
$IsMaxThresholdBroken = $True
}
}
}
If (($IsMinThresholdBroken -eq $True) -or ($IsAvgThresholdBroken -eq $True) -or ($IsMaxThresholdBroken -eq $True) -or ($IsTrendThresholdBroken -eq $True))
{
#Write-Host "Create alert - Detail: True"
CreateAlert -TimeSliceIndex $t -CounterInstanceObject $oCounterInstance -IsMinThresholdBroken $IsMinThresholdBroken -IsAvgThresholdBroken $IsAvgThresholdBroken -IsMaxThresholdBroken $IsMaxThresholdBroken -IsTrendThresholdBroken $IsTrendThresholdBroken -IsMinEvaluated $IsMinEvaluated -IsAvgEvaluated $IsAvgEvaluated -IsMaxEvaluated $IsMaxEvaluated -IsTrendEvaluated $IsTrendEvaluated
} Else {
#Write-Host "Create alert - Detail: False"
}
}
}
}
}
↧
New Post: Issue with setting two threshold based on an average and a maximum value
↧