mirror of
https://github.com/Icinga/icinga-powershell-framework.git
synced 2025-12-20 23:00:35 -05:00
added IcingaCheckProcessCount.psm1, modified Process-Provider to fit related Checks, deleted useless parameter in Checks
This commit is contained in:
parent
521ed5eb09
commit
5b10b2c647
4 changed files with 71 additions and 33 deletions
27
lib/plugins/Invoke-IcingaCheckProcessCount.psm1
Normal file
27
lib/plugins/Invoke-IcingaCheckProcessCount.psm1
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
Import-IcingaLib provider\process;
|
||||||
|
Import-IcingaLib icinga\plugin;
|
||||||
|
|
||||||
|
function Invoke-IcingaCheckProcessCount()
|
||||||
|
{
|
||||||
|
param(
|
||||||
|
$Warning,
|
||||||
|
$Critical,
|
||||||
|
[array]$Process,
|
||||||
|
[switch]$NoPerfData,
|
||||||
|
$Verbose
|
||||||
|
);
|
||||||
|
|
||||||
|
$ProcessInformation = (Get-IcingaProcessData -Name $Process)
|
||||||
|
|
||||||
|
$ProcessPackage = New-icingaCheckPackage -Name "Process Check" -OperatorAnd -Verbose $Verbose -NoPerfData $NoPerfData;
|
||||||
|
|
||||||
|
foreach ($proc in $process) {
|
||||||
|
$ProcessCount = $ProcessInformation."Processes".$proc.processlist.Count;
|
||||||
|
$IcingaCheck = New-IcingaCheck -Name ([string]::Format('Process Count "{0}"', $proc)) -Value $ProcessCount;
|
||||||
|
$IcingaCheck.WarnOutOfRange($Warning).CritOutOfRange($Critical) | Out-Null;
|
||||||
|
$ProcessPackage.AddCheck($IcingaCheck);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
exit (New-IcingaCheckResult -Check $ProcessPackage -NoPerfData $TRUE -Compile);
|
||||||
|
}
|
||||||
|
|
@ -17,5 +17,5 @@ function Invoke-IcingaCheckService()
|
||||||
$IcingaCheck = New-IcingaCheck -Name $ServiceName -Value $StatusRaw -ObjectExists $FoundService -Translation $ProviderEnums.ServiceStatusName;
|
$IcingaCheck = New-IcingaCheck -Name $ServiceName -Value $StatusRaw -ObjectExists $FoundService -Translation $ProviderEnums.ServiceStatusName;
|
||||||
$IcingaCheck.CritIfNotMatch($Status) | Out-Null;
|
$IcingaCheck.CritIfNotMatch($Status) | Out-Null;
|
||||||
|
|
||||||
exit (New-IcingaCheckResult -Name "Service $Service" -Check $IcingaCheck -NoPerfData $TRUE -Compile);
|
exit (New-IcingaCheckResult -Check $IcingaCheck -NoPerfData $TRUE -Compile);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,8 +13,7 @@ function Invoke-IcingaCheckUsedPartitionSpace()
|
||||||
);
|
);
|
||||||
|
|
||||||
$DiskFree = Get-IcingaDiskPartitions;
|
$DiskFree = Get-IcingaDiskPartitions;
|
||||||
$DiskPackage = New-IcingaCheckPackage -Name 'Free Disk Space' -OperatorAnd -Verbos $Verbose;
|
$DiskPackage = New-IcingaCheckPackage -Name 'Used Partition Space' -OperatorAnd -Verbos $Verbose;
|
||||||
[array]$CheckedPartitions;
|
|
||||||
|
|
||||||
foreach ($Letter in $DiskFree.Keys) {
|
foreach ($Letter in $DiskFree.Keys) {
|
||||||
if ($Include.Count -ne 0) {
|
if ($Include.Count -ne 0) {
|
||||||
|
|
@ -24,7 +23,6 @@ function Invoke-IcingaCheckUsedPartitionSpace()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$CheckedPartitions+=$Letter
|
|
||||||
|
|
||||||
if ($Exclude.Count -ne 0) {
|
if ($Exclude.Count -ne 0) {
|
||||||
$Exclude = $Exclude.trim(' :/\');
|
$Exclude = $Exclude.trim(' :/\');
|
||||||
|
|
@ -38,5 +36,5 @@ function Invoke-IcingaCheckUsedPartitionSpace()
|
||||||
$DiskPackage.AddCheck($IcingaCheck);
|
$DiskPackage.AddCheck($IcingaCheck);
|
||||||
}
|
}
|
||||||
|
|
||||||
exit (New-IcingaCheckResult -Name 'Free Disk Space' -Check $DiskPackage -NoPerfData $NoPerfData -Compile);
|
exit (New-IcingaCheckResult -Check $DiskPackage -NoPerfData $NoPerfData -Compile);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,9 +14,12 @@ function Add-IcingaProcessPerfData()
|
||||||
|
|
||||||
function Get-IcingaProcessData {
|
function Get-IcingaProcessData {
|
||||||
|
|
||||||
|
param(
|
||||||
|
[array]$Process
|
||||||
|
);
|
||||||
|
|
||||||
$ProcessInformation = Get-WmiObject Win32_Process;
|
$ProcessInformation = Get-WmiObject Win32_Process;
|
||||||
$ProcessPerfDataList = Get-WmiObject Win32_PerfFormattedData_PerfProc_Process;
|
$ProcessPerfDataList = Get-WmiObject Win32_PerfFormattedData_PerfProc_Process;
|
||||||
$ProcessUniqueList = Get-WmiObject Win32_Process | Select-Object name -unique;
|
|
||||||
$CPUCoreCount = Get-IcingaCPUCount;
|
$CPUCoreCount = Get-IcingaCPUCount;
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -25,8 +28,14 @@ function Get-IcingaProcessData {
|
||||||
[hashtable]$ProcessNamesUnique = @{};
|
[hashtable]$ProcessNamesUnique = @{};
|
||||||
[hashtable]$ProcessIDsByName = @{};
|
[hashtable]$ProcessIDsByName = @{};
|
||||||
|
|
||||||
foreach ($process in $ProcessInformation) {
|
foreach ($processinfo in $ProcessInformation) {
|
||||||
[string]$processName = $process.Name.Replace('.exe', '');
|
[string]$processName = $processinfo.Name.Replace('.exe', '');
|
||||||
|
|
||||||
|
If ($null -ne $Process) {
|
||||||
|
If (-Not ($Process.Contains($processName))) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($ProcessList.ContainsKey($processName) -eq $FALSE) {
|
if ($ProcessList.ContainsKey($processName) -eq $FALSE) {
|
||||||
$ProcessList.Add($processName, @{
|
$ProcessList.Add($processName, @{
|
||||||
|
|
@ -36,56 +45,60 @@ function Get-IcingaProcessData {
|
||||||
}
|
}
|
||||||
|
|
||||||
$ProcessList[$processName]['ProcessList'].Add(
|
$ProcessList[$processName]['ProcessList'].Add(
|
||||||
[string]$process.ProcessID, @{
|
[string]$processinfo.ProcessID, @{
|
||||||
'Name' = $process.Name;
|
'Name' = $processinfo.Name;
|
||||||
'ProcessId' = $process.ProcessId;
|
'ProcessId' = $processinfo.ProcessId;
|
||||||
'Priority' = $process.Priority;
|
'Priority' = $processinfo.Priority;
|
||||||
'PageFileUsage' = $process.PageFileUsage;
|
'PageFileUsage' = $processinfo.PageFileUsage;
|
||||||
'ThreadCount' = $process.ThreadCount;
|
'ThreadCount' = $processinfo.ThreadCount;
|
||||||
'KernelModeTime' = $process.KernelModeTime;
|
'KernelModeTime' = $processinfo.KernelModeTime;
|
||||||
'UserModeTime' = $process.UserModeTime;
|
'UserModeTime' = $processinfo.UserModeTime;
|
||||||
'WorkingSetSize' = $process.WorkingSetSize;
|
'WorkingSetSize' = $processinfo.WorkingSetSize;
|
||||||
'CommandLine' = $process.CommandLine;
|
'CommandLine' = $processinfo.CommandLine;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
Add-IcingaProcessPerfData -ProcessList $ProcessList[$processName]['PerformanceData'] -ProcessKey 'ThreadCount' -Process $process;
|
Add-IcingaProcessPerfData -ProcessList $ProcessList[$processName]['PerformanceData'] -ProcessKey 'ThreadCount' -Process $processinfo;
|
||||||
Add-IcingaProcessPerfData -ProcessList $ProcessList[$processName]['PerformanceData'] -ProcessKey 'PageFileUsage' -Process $process;
|
Add-IcingaProcessPerfData -ProcessList $ProcessList[$processName]['PerformanceData'] -ProcessKey 'PageFileUsage' -Process $processinfo;
|
||||||
Add-IcingaProcessPerfData -ProcessList $ProcessList[$processName]['PerformanceData'] -ProcessKey 'KernelModeTime' -Process $process;
|
Add-IcingaProcessPerfData -ProcessList $ProcessList[$processName]['PerformanceData'] -ProcessKey 'KernelModeTime' -Process $processinfo;
|
||||||
Add-IcingaProcessPerfData -ProcessList $ProcessList[$processName]['PerformanceData'] -ProcessKey 'UserModeTime' -Process $process;
|
Add-IcingaProcessPerfData -ProcessList $ProcessList[$processName]['PerformanceData'] -ProcessKey 'UserModeTime' -Process $processinfo;
|
||||||
Add-IcingaProcessPerfData -ProcessList $ProcessList[$processName]['PerformanceData'] -ProcessKey 'WorkingSetSize' -Process $process;
|
Add-IcingaProcessPerfData -ProcessList $ProcessList[$processName]['PerformanceData'] -ProcessKey 'WorkingSetSize' -Process $processinfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($process in $ProcessPerfDataList) {
|
foreach ($processinfo in $ProcessPerfDataList) {
|
||||||
if ($process.Name -eq '_Total' -Or $process.Name -eq 'Idle') {
|
if ($processinfo.Name -eq '_Total' -Or $processinfo.Name -eq 'Idle') {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
[string]$processName = $process.Name.Split('#')[0];
|
If ($null -ne $Process) {
|
||||||
[string]$ProcessId = $process.IDProcess;
|
If (-Not ($Process.Contains($processName))) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[string]$processName = $processinfo.Name.Split('#')[0];
|
||||||
|
[string]$ProcessId = $processinfo.IDProcess;
|
||||||
|
|
||||||
if ($ProcessList.ContainsKey($processName) -eq $FALSE) {
|
if ($ProcessList.ContainsKey($processName) -eq $FALSE) {
|
||||||
Write-Host 'Unknown Process Name: ' $processName;
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($ProcessList[$processName]['ProcessList'].ContainsKey($ProcessId) -eq $FALSE) {
|
if ($ProcessList[$processName]['ProcessList'].ContainsKey($ProcessId) -eq $FALSE) {
|
||||||
Write-Host 'Unknown Process ID: ' $ProcessId;
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
$ProcessList[$processName]['ProcessList'][$ProcessId].Add(
|
$ProcessList[$processName]['ProcessList'][$ProcessId].Add(
|
||||||
'WorkingSetPrivate', $process.WorkingSetPrivate
|
'WorkingSetPrivate', $processinfo.WorkingSetPrivate
|
||||||
);
|
);
|
||||||
$ProcessList[$processName]['ProcessList'][$ProcessId].Add(
|
$ProcessList[$processName]['ProcessList'][$ProcessId].Add(
|
||||||
'PercentProcessorTime', ($process.PercentProcessorTime / $CPUCoreCount)
|
'PercentProcessorTime', ($processinfo.PercentProcessorTime / $CPUCoreCount)
|
||||||
);
|
);
|
||||||
|
|
||||||
Add-IcingaProcessPerfData -ProcessList $ProcessList[$processName]['PerformanceData'] -ProcessKey 'WorkingSetPrivate' -Process $process;
|
Add-IcingaProcessPerfData -ProcessList $ProcessList[$processName]['PerformanceData'] -ProcessKey 'WorkingSetPrivate' -Process $process;
|
||||||
if ($ProcessList[$processName]['PerformanceData'].ContainsKey('PercentProcessorTime') -eq $FALSE) {
|
if ($ProcessList[$processName]['PerformanceData'].ContainsKey('PercentProcessorTime') -eq $FALSE) {
|
||||||
$ProcessList[$processName]['PerformanceData'].Add('PercentProcessorTime', ($process.PercentProcessorTime / $CPUCoreCount));
|
$ProcessList[$processName]['PerformanceData'].Add('PercentProcessorTime', ($processinfo.PercentProcessorTime / $CPUCoreCount));
|
||||||
} else {
|
} else {
|
||||||
$ProcessList[$processName]['PerformanceData']['PercentProcessorTime'] += ($process.PercentProcessorTime / $CPUCoreCount);
|
$ProcessList[$processName]['PerformanceData']['PercentProcessorTime'] += ($processinfo.PercentProcessorTime / $CPUCoreCount);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue