Skip to content

Instantly share code, notes, and snippets.

@rbocchinfuso
Last active July 25, 2018 13:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rbocchinfuso/40d1263c3d8547669828 to your computer and use it in GitHub Desktop.
Save rbocchinfuso/40d1263c3d8547669828 to your computer and use it in GitHub Desktop.
PRTG VNX Custom Sensor
#requires -version 2
<#
.SYNOPSIS
PRTG VNX Check Script
.DESCRIPTION
This is a custom EXEXML script which is invoked by PRTG
.PARAMETER <Parameter_Name>
-h [SP_IP] -u [username] -p [password]
.INPUTS
None
.OUTPUTS
None
.NOTES
Version: 1.0
File Name: check_vnx.ps1
Author: Rich Bocchinfuso
Email: rbocchinfuso@fusionstorm.com
Creation Date: 2016-02-08
Purpose/Change: Initial script development
.EXAMPLE
check_vnx.ps1 -h [SP_IP] -u [username] -p [password]
#>
param (
[string]$h = $(throw "SP IP is required."),
[string]$u = $(throw "username is required."),
[string]$p = $(throw "password is required.")
)
#Debug
#Write-Host $h
#Write-Host $u
#Write-Host $p
#Query VNX array
$Disks = & "C:\Program Files (x86)\EMC\Navisphere CLI\NaviSECCli.exe" ""-h $h -User $u -Password $p -Scope 0 getdisk -state""
$Faults = & "C:\Program Files (x86)\EMC\Navisphere CLI\NaviSECCli.exe" ""-h $h -User $u -Password $p -Scope 0 faults -list""
#Debug
#Write-Host $Disks
#Write-Host $Faults
#Calculate the total number of disks
$Slots = (Select-String -InputObject $Disks -Pattern "disk" -AllMatches).Matches.Count
#Calculate the total number of enabled disks
$Enabled = (Select-String -InputObject $Disks -Pattern "enabled" -AllMatches).Matches.Count
#Calculate the total number of ubound disks
$Unbound = (Select-String -InputObject $Disks -Pattern "unbound" -AllMatches).Matches.Count
#Calculate the total number of ubound disks
$Empty = (Select-String -InputObject $Disks -Pattern "empty" -AllMatches).Matches.Count
#Calculate the total number of Hot Spares
$HotSpares = (Select-String -InputObject $Disks -Pattern "hot" -AllMatches).Matches.Count
#Calculate the number of disks in notable states
$RebuildingDisks = (Select-String -InputObject $Disks -Pattern "rebuilding|equalizing" -AllMatches).Matches.Count
$FailedDisks = (Select-String -InputObject $Disks -Pattern "failed|faulted|fault" -AllMatches).Matches.Count
#PRTG service condition
write-host "<prtg>"
write-host "<result>"
write-host "<channel>Total Slots</channel>"
write-host "<customunit>Disk(s)</customunit>"
write-host "<value>$Slots</value>"
write-host "</result>"
write-host "<result>"
write-host "<channel>Enabled Disks Slots</channel>"
write-host "<customunit>Disk(s)</customunit>"
write-host "<value>$Enabled</value>"
write-host "</result>"
write-host "<result>"
write-host "<channel>Empty Disks Slots</channel>"
write-host "<customunit>Disk(s)</customunit>"
write-host "<value>$Empty</value>"
write-host "</result>"
write-host "<result>"
write-host "<channel>Unbound Disks</channel>"
write-host "<customunit>Disk(s)</customunit>"
write-host "<value>$Unbound</value>"
write-host "</result>"
write-host "<result>"
write-host "<channel>Legacy Hot Spare Disks</channel>"
write-host "<customunit>Disk(s)</customunit>"
write-host "<value>$HotSpares</value>"
write-host "</result>"
If ($RebuildingDisks -gt 0) {
write-host "<result>"
write-host "<channel>Rebuilding Disks</channel>"
write-host "<customunit>Disk(s)</customunit>"
write-host "<value>$RebuildingDisks</value>"
write-host "<warning>1</warning>"
write-host "</result>`n"
} ElseIf ($RebuildingDisks -eq 0) {
write-host "<result>"
write-host "<channel>Rebuilding Disks</channel>"
write-host "<customunit>Disk(s)</customunit>"
write-host "<value>0</value>"
write-host "</result>"
}
If ($FailedDisks -gt 0) {
write-host "<result>"
write-host "<channel>Failed Disks</channel>"
write-host "<customunit>Disk(s)</customunit>"
write-host "<value>$FailedDisks</value>"
write-host "</result>"
} ElseIf ($FailedDisks -eq 0) {
write-host "<result>"
write-host "<channel>Failed Disks</channel>"
write-host "<customunit>Disk(s)</customunit>"
write-host "<value>0</value>"
write-host "</result>"
}
If ($Faults -contains "The array is operating normally.") {
write-host "<result>"
write-host "<channel>Fault(s)</channel>"
write-host "<customunit>Faults(s)</customunit>"
write-host "<value>0</value>"
write-host "</result>"
} Else {
write-host "<result>"
write-host "<channel>Fault(s)</channel>"
write-host "<customunit>Fault(s)</customunit>"
write-host "<value>1</value>"
write-host "</result>"
}
#PRTG message display
If ($FailedDisks -eq 0 -and $RebuildingDisks -eq 0) {
write-host "<text>All Disks OK</text>"
} ElseIf ($FailedDisks -eq 0 -and $RebuildingDisks -gt 0) {
write-host "<text>WARNING $RebuildingDisks disk(s) rebuilding or equalising</text>"
} ElseIf ($FailedDisks -gt 0) {
write-host "<text>FAILURE $FailedDisks disk(s) failed</text>"
write-host "<error>1</error>"
}
write-host "</prtg>"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment