From a59ae37b760b6fc6d71e48e048c678b23a210660 Mon Sep 17 00:00:00 2001 From: Lord Hepipud Date: Sat, 5 Oct 2019 22:02:17 +0200 Subject: [PATCH] Added support to register checks to run in background --- .../Get-IcingaRegisteredServiceChecks.psm1 | 19 +++++++++++++++ lib/daemon/Register-IcingaServiceCheck.psm1 | 23 +++++++++++++++++++ .../Show-IcingaRegisteredServiceChecks.psm1 | 11 +++++++++ 3 files changed, 53 insertions(+) create mode 100644 lib/daemon/Get-IcingaRegisteredServiceChecks.psm1 create mode 100644 lib/daemon/Register-IcingaServiceCheck.psm1 create mode 100644 lib/daemon/Show-IcingaRegisteredServiceChecks.psm1 diff --git a/lib/daemon/Get-IcingaRegisteredServiceChecks.psm1 b/lib/daemon/Get-IcingaRegisteredServiceChecks.psm1 new file mode 100644 index 0000000..c023153 --- /dev/null +++ b/lib/daemon/Get-IcingaRegisteredServiceChecks.psm1 @@ -0,0 +1,19 @@ +function Get-IcingaRegisteredServiceChecks() +{ + $Services = Get-IcingaPowerShellConfig -Path 'BackgroundDaemon.RegisteredServices'; + [hashtable]$Output = @{}; + + foreach ($service in $Services.PSObject.Properties) { + $Content = @{ + 'Id' = $service.Name; + 'CheckCommand' = $service.Value.CheckCommand; + 'Arguments' = $service.Value.Arguments; + 'Interval' = $service.Value.Interval; + 'TimeIndexes' = $service.Value.TimeIndexes; + }; + + $Output.Add($service.Name, $Content); + } + + return $Output; +} diff --git a/lib/daemon/Register-IcingaServiceCheck.psm1 b/lib/daemon/Register-IcingaServiceCheck.psm1 new file mode 100644 index 0000000..2492950 --- /dev/null +++ b/lib/daemon/Register-IcingaServiceCheck.psm1 @@ -0,0 +1,23 @@ +function Register-IcingaServiceCheck() +{ + param( + [string]$CheckCommand, + [hashtable]$Arguments, + [int]$Interval = 60, + [array]$TimeIndexes = @() + ); + + if ([string]::IsNullOrEmpty($CheckCommand)) { + throw 'Please specify a CheckCommand'; + } + + $Hash = Get-StringSha1 ([string]::Format('{0} {1}', $CheckCommand, ($Arguments | Out-String))); + $Path = [string]::Format('BackgroundDaemon.RegisteredServices.{0}', $Hash); + + Set-IcingaPowerShellConfig -Path ([string]::Format('{0}.CheckCommand', $Path)) -Value $CheckCommand; + Set-IcingaPowerShellConfig -Path ([string]::Format('{0}.Arguments', $Path)) -Value $Arguments; + Set-IcingaPowerShellConfig -Path ([string]::Format('{0}.Interval', $Path)) -Value $Interval; + Set-IcingaPowerShellConfig -Path ([string]::Format('{0}.TimeIndexes', $Path)) -Value $TimeIndexes; + + Write-Host 'Icinga Service Check has been configured'; +} diff --git a/lib/daemon/Show-IcingaRegisteredServiceChecks.psm1 b/lib/daemon/Show-IcingaRegisteredServiceChecks.psm1 new file mode 100644 index 0000000..69af178 --- /dev/null +++ b/lib/daemon/Show-IcingaRegisteredServiceChecks.psm1 @@ -0,0 +1,11 @@ +function Show-IcingaRegisteredServiceChecks() +{ + $Services = Get-IcingaRegisteredServiceChecks; + + foreach ($service in $Services.Keys) { + Write-Host ([string]::Format('Service Id: {0}', $service)); + Write-Host ( + $Services[$service] | Out-String + ); + } +}