mirror of
https://github.com/Icinga/icinga-powershell-framework.git
synced 2025-12-21 07:10:15 -05:00
61 lines
2.1 KiB
PowerShell
61 lines
2.1 KiB
PowerShell
|
|
function New-IcingaServiceCheckDaemonEnvironment()
|
||
|
|
{
|
||
|
|
param (
|
||
|
|
$CheckCommand,
|
||
|
|
$Arguments,
|
||
|
|
$TimeIndexes
|
||
|
|
);
|
||
|
|
|
||
|
|
if ($Global:Icinga.Public.Daemons.ServiceCheck.PerformanceDataCache.ContainsKey($CheckCommand) -eq $FALSE) {
|
||
|
|
$Global:Icinga.Public.Daemons.ServiceCheck.PerformanceDataCache.Add(
|
||
|
|
$CheckCommand, @{ }
|
||
|
|
);
|
||
|
|
}
|
||
|
|
|
||
|
|
$Global:Icinga.Private.Daemons.Add(
|
||
|
|
'ServiceCheck',
|
||
|
|
@{
|
||
|
|
'PassedTime' = 0;
|
||
|
|
'SortedResult' = $null;
|
||
|
|
'PerformanceCache' = @{ };
|
||
|
|
'AverageCalculation' = @{ };
|
||
|
|
'MaxTime' = 0;
|
||
|
|
'MaxTimeInSeconds' = 0;
|
||
|
|
}
|
||
|
|
);
|
||
|
|
|
||
|
|
foreach ($index in $TimeIndexes) {
|
||
|
|
# Only allow numeric index values
|
||
|
|
if ((Test-Numeric $index) -eq $FALSE) {
|
||
|
|
Write-IcingaEventMessage -EventId 1450 -Namespace 'Framework' -Objects $CheckCommand, ($Arguments | Out-String), ($TimeIndexes | Out-String), $index;
|
||
|
|
continue;
|
||
|
|
}
|
||
|
|
if ($Global:Icinga.Private.Daemons.ServiceCheck.AverageCalculation.ContainsKey([string]$index) -eq $FALSE) {
|
||
|
|
$Global:Icinga.Private.Daemons.ServiceCheck.AverageCalculation.Add(
|
||
|
|
[string]$index,
|
||
|
|
@{
|
||
|
|
'Interval' = ([int]$index);
|
||
|
|
'Time' = ([int]$index * 60);
|
||
|
|
'Sum' = 0;
|
||
|
|
'Count' = 0;
|
||
|
|
}
|
||
|
|
);
|
||
|
|
}
|
||
|
|
if ($Global:Icinga.Private.Daemons.ServiceCheck.MaxTime -le [int]$index) {
|
||
|
|
$Global:Icinga.Private.Daemons.ServiceCheck.MaxTime = [int]$index;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
$Global:Icinga.Private.Daemons.ServiceCheck.MaxTimeInSeconds = $Global:Icinga.Private.Daemons.ServiceCheck.MaxTime * 60;
|
||
|
|
|
||
|
|
if ($Global:Icinga.Private.Scheduler.CheckData.ContainsKey($CheckCommand) -eq $FALSE) {
|
||
|
|
$Global:Icinga.Private.Scheduler.CheckData.Add(
|
||
|
|
$CheckCommand,
|
||
|
|
@{
|
||
|
|
'results' = @{ };
|
||
|
|
'average' = (New-Object -TypeName PSObject);
|
||
|
|
}
|
||
|
|
);
|
||
|
|
}
|
||
|
|
}
|