PoshCode Logo PowerShell Code Repository

check-nsca.ps1 (modification of post by view diff)
embed code: <script type="text/javascript" src="http://PoshCode.org/embed/1630"></script>download | new post

Sends with nsca (Nagios Client) all Status Informations over VMs

  1. #region vars
  2. $statvalues=("mem.usage.average", "cpu.usage.average")
  3. $nsca_stat = ""
  4. [int]$warnlevel = 85
  5. [int]$criticallevel = 90
  6. $status = ""
  7. $nagsrv = "nagios-srv.local"
  8. #endregion
  9.  
  10. $vms = Get-VM | Where-Object { $_.PowerState -eq "PoweredOn" } | sort-object
  11.  
  12. foreach ($vm in $vms) {
  13.         $statvalues | foreach {
  14.                 [int]$statavg = ($vm | Get-Stat -Stat $_ -Start ((get-date).AddMinutes(-5)) -MaxSamples 500 | Measure-Object -Property Value -Average).Average
  15.                 $vmdns = ($vm | Get-VMGuest).Hostname
  16.                 switch ($_) {
  17.                         "mem.usage.average" { $nsca_stat = "mem_vm"; $desc = "Memory Usage" }
  18.                         "cpu.usage.average" { $nsca_stat = "cpu_vm"; $desc = "CPU Usage" }
  19.                 }
  20.                 if ($statavg -gt $criticallevel) {
  21.                         $status = "2"
  22.                         $desc = "CRITICAL: " + $desc
  23.                 } elseif ($statavg -gt $warnlevel) {
  24.                         $status = "1"
  25.                         $desc = "WARNING: " + $desc
  26.                 } elseif ($statavg -lt $warnlevel) {
  27.                         $status = "0"
  28.                 }
  29.                 $nsca = "${vmdns};${nsca_stat};${status};${desc} ${statavg}% | ${nsca_stat}=${statavg};$warnlevel;$criticallevel;0;100"
  30.                 Write-Host $nsca
  31.                 if ($vmdns) { echo $nsca | ./send_nsca.exe -H $nagsrv -c send_nsca.cfg -d ";" }
  32.         }
  33. }

Submit a correction or amendment below (
click here to make a fresh posting)
After submitting an amendment, you'll be able to view the differences between the old and new posts easily.

Syntax highlighting:


Remember me