From 756a1284e3a4b9587d26665c7d4dd8357b294a85 Mon Sep 17 00:00:00 2001 From: Lord Hepipud Date: Mon, 22 Jul 2019 15:25:00 +0200 Subject: [PATCH] First attempt for CPU load check --- lib/plugins/Invoke-IcingaCheckCPU.psm1 | 30 ++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 lib/plugins/Invoke-IcingaCheckCPU.psm1 diff --git a/lib/plugins/Invoke-IcingaCheckCPU.psm1 b/lib/plugins/Invoke-IcingaCheckCPU.psm1 new file mode 100644 index 0000000..0df4075 --- /dev/null +++ b/lib/plugins/Invoke-IcingaCheckCPU.psm1 @@ -0,0 +1,30 @@ +Import-IcingaLib core\perfcounter; +Import-IcingaLib icinga\plugin; + +function Invoke-IcingaCheckCPU() +{ + param( + $Warning, + $Critical, + $Core = '*', + [switch]$NoPerfData, + $Verbose + ); + + $CpuCounter = New-IcingaPerformanceCounter -Counter ([string]::Format('\Processor({0})\% processor time', $Core)); + $CpuPackage = New-IcingaCheckPackage -Name 'CPU Load' -OperatorAnd -Verbos $Verbose; + + if ($CpuCounter.Counters.Count -ne 0) { + foreach ($counter in $CpuCounter.Counters) { + $IcingaCheck = New-IcingaCheck -Name ([string]::Format('Core #{0}', $counter.Instance)) -Value $counter.Value().Value -Unit '%'; + $IcingaCheck.WarnOutOfRange($Warning).CritOutOfRange($Critical) | Out-Null; + $CpuPackage.AddCheck($IcingaCheck); + } + } else { + $IcingaCheck = New-IcingaCheck -Name ([string]::Format('Core #{0}',$Core)) -Value $CpuCounter.Value().Value -Unit '%'; + $IcingaCheck.WarnOutOfRange($Warning).CritOutOfRange($Critical) | Out-Null; + $CpuPackage.AddCheck($IcingaCheck); + } + + exit (New-IcingaCheckResult -Name 'CPU Load' -Check $CpuPackage -NoPerfData $NoPerfData -Compile); +}