From e2c8933c9a83b25d07a28be477cbf38b032d9e68 Mon Sep 17 00:00:00 2001 From: Alexander Stoll Date: Wed, 24 Jul 2019 10:01:34 +0200 Subject: [PATCH] Added Icinga_ProviderServices, adjusted Invoke-IcingaCheckService accordingly --- .../Invoke-IcingaCheckFreePartition.psm1 | 5 +++- lib/plugins/Invoke-IcingaCheckService.psm1 | 23 +++++++++++++++++++ .../services/Icinga_ProviderServices.psm1 | 6 ++++- 3 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 lib/plugins/Invoke-IcingaCheckService.psm1 diff --git a/lib/plugins/Invoke-IcingaCheckFreePartition.psm1 b/lib/plugins/Invoke-IcingaCheckFreePartition.psm1 index 36a14bc..bab94fa 100644 --- a/lib/plugins/Invoke-IcingaCheckFreePartition.psm1 +++ b/lib/plugins/Invoke-IcingaCheckFreePartition.psm1 @@ -12,8 +12,9 @@ function Invoke-IcingaCheckFreePartition() $Verbose ); - $DiskFree = Get-IcingaDiskPartitions + $DiskFree = Get-IcingaDiskPartitions; $DiskPackage = New-IcingaCheckPackage -Name 'Free Disk Space' -OperatorAnd -Verbos $Verbose; + [array]$CheckedPartitions; foreach ($Letter in $DiskFree.Keys) { if ($Include.Count -ne 0) { @@ -23,6 +24,8 @@ function Invoke-IcingaCheckFreePartition() } } + $CheckedPartitions+=$Letter + if ($Exclude.Count -ne 0) { $Exclude = $Exclude.trim(' :/\'); if ($Exclude.Contains($Letter)) { diff --git a/lib/plugins/Invoke-IcingaCheckService.psm1 b/lib/plugins/Invoke-IcingaCheckService.psm1 new file mode 100644 index 0000000..71f0a9e --- /dev/null +++ b/lib/plugins/Invoke-IcingaCheckService.psm1 @@ -0,0 +1,23 @@ +Import-IcingaLib provider\services; +Import-IcingaLib icinga\plugin; + +function Invoke-IcingaCheckService() +{ + param( + [string]$Status, + [string]$Service, + [switch]$NoPerfData, + $Verbose + ); + + $FoundService = Get-IcingaServices -Service $Service; + $ServiceName = $FoundService.Values.metadata.ServiceName; + $DisplayName = $FoundService.Values.metadata.DisplayName; + # $Status = Get-IcingaServicesStatusTranslation -Status $Status; + $StatusRaw = $FoundService.Values.configuration.Status.raw; + + $IcingaCheck = New-IcingaCheck -Name ([string]::Format('Service "{0} ({1})"', $DisplayName, $ServiceName)) -Value $StatusRaw -ObjectExists $FoundService -ValueTranslation $ProviderEnums.ServiceStatus; + $IcingaCheck.CritIfNotMatch($Status) | Out-Null; + + exit (New-IcingaCheckResult -Name "Service $Service" -Check $IcingaCheck -NoPerfData $TRUE -Compile); +} diff --git a/lib/provider/services/Icinga_ProviderServices.psm1 b/lib/provider/services/Icinga_ProviderServices.psm1 index 54724bc..9dfc1cb 100644 --- a/lib/provider/services/Icinga_ProviderServices.psm1 +++ b/lib/provider/services/Icinga_ProviderServices.psm1 @@ -4,7 +4,11 @@ function Get-IcingaServices() [array]$Service ) - $ServiceInformation = Get-Service -Name $Service; + $ServiceInformation = Get-Service -Name $Service -ErrorAction SilentlyContinue; + + if ($null -eq $ServiceInformation) { + return $null; + } [hashtable]$ServiceData = @{};