Is there any plan to offer pre-built sensors to monitor EMC San? (Clariion/VNX platform) Or is there another method?
EMC Storage Array
Votes:
0
Best Answer
Votes:
4
Hi folks,
As there is no or very poor monitoring tools for the EMC storage, I have implemented a solution to check hardware failure and integrity of the disks
- I have 2 VNX 5100 SAN storage
- I have 1 AX4 SAN storage
Both hardware works the same manner
First, you have to download from your EMC account, the CLI tools, which is called "NaviSecCLI". Then, install this package in your PRTG server under "C:\program files (x86)\PRTG Network Monitor\Custom Sensors\EXE.. If you don't have an account by EMC to download the software, ask your resealer.
Second, you have to write a small script (powershell or vbs), which will launch the navseccli.exe with the parameters you want to check and return the status to PRTG (0 is green, 1 is Warning, 2 is Error). You have to put your code is the same folder as the NaviSecCLI program.
Some example with NaviSecCLI will be :
- faults -list, which return the status of the hardware
- getdisk -state, which return the status of all disks present
For my needs, to check the disks, I have done the following
- Write a powershell script which launch the navseccli and return the status to a text file.
- Parse the file to find if all disks are "enable". If Yes, return 0 to PRTG.
Below the code
& "C:\Program Files (x86)\PRTG Network Monitor\Custom Sensors\EXE\NaviSecCli.exe" -user Administrator -password password -h ip_address -f "C:\Program Files (x86)\PRTG Network Monitor\Custom Sensors\EXE\file.txt" -scope 0 getdisk -state # Path and Filter $Path = "C:\Program Files (x86)\PRTG Network Monitor\Custom Sensors\EXE\file.txt" $regex = "enable" #Number of disks in the SAN $disks_to_check = 29 # Result of the filter $string = select-string -Path $Path -pattern $regex -AllMatches | %{$_.matches} | %{$_.value} #Number of disks OK and NOK $disks_ok = $disks_to_check - $string.count # PRTG Sensor condition if ($disks_ok -eq 0) { write-host "0:$disks_to_check Disks OK" exit 0 } else { write-host "2:$disks_ok Disks failure" exit 2 } endif
- Add a "EXE" sensor in PRTG which will call my powershell script.
EDIT BY PAESSLER: Adjusted formatting of the code block
Fix the problem that the "NaviSecCLI" will launch only first time. You have to prefix the command with an "&", put the full path rather than ".\" and use the "-f" for the output.
Created on Jul 7, 2014 9:07:35 AM
Last change on Jul 9, 2014 6:30:07 AM by
Konstantin Wolff [Paessler Support]
17 Replies
Votes:
0
If there is an MIB file available you can convert it using our MIB Importer and then use the resulting OIDLIB file with an SNMP Library sensor.
Votes:
0
The EMC VNX devices support SNMP polling. They do have some support for SNMP traps. It appears other vendors have a virtualization and storage management products which leverage SMI-S providers to obtain data. Does PRTG have a comparable solution?
Created on May 31, 2012 5:43:23 AM
Last change on Nov 30, 2012 9:56:24 AM by
Dirk Paessler [Founder Paessler AG]
(11,025)
●3
●6
Votes:
0
Unfortunately EMC has a very poor support of SMNP, for most systems just a few traps are implemented.
Do have a plan to implement some addition sensors to monitor EMC systems other than SNMP?
Kind regards, Christoph
Votes:
0
SMI-S is on our wishlist, but we can not give you an exptected delivery date at this time.
Votes:
0
We did run evaluation tests on this, however decided to put it on the wishlist, as the requests have been to few. So this is only on the wish list.
Created on Jun 3, 2014 12:27:00 PM by
Patrick Hutter [Paessler Support]
(7,225)
●3
●3
Last change on May 24, 2016 12:12:11 PM by
Torsten Lindner [Paessler Support]
Votes:
0
Hi Support - any news? Would love to use SMI-S for VNX.
Votes:
0
As mentioned, this can still take a while. The feature will be mentioned in our release notes. Please bear with us.
Votes:
4
Hi folks,
As there is no or very poor monitoring tools for the EMC storage, I have implemented a solution to check hardware failure and integrity of the disks
- I have 2 VNX 5100 SAN storage
- I have 1 AX4 SAN storage
Both hardware works the same manner
First, you have to download from your EMC account, the CLI tools, which is called "NaviSecCLI". Then, install this package in your PRTG server under "C:\program files (x86)\PRTG Network Monitor\Custom Sensors\EXE.. If you don't have an account by EMC to download the software, ask your resealer.
Second, you have to write a small script (powershell or vbs), which will launch the navseccli.exe with the parameters you want to check and return the status to PRTG (0 is green, 1 is Warning, 2 is Error). You have to put your code is the same folder as the NaviSecCLI program.
Some example with NaviSecCLI will be :
- faults -list, which return the status of the hardware
- getdisk -state, which return the status of all disks present
For my needs, to check the disks, I have done the following
- Write a powershell script which launch the navseccli and return the status to a text file.
- Parse the file to find if all disks are "enable". If Yes, return 0 to PRTG.
Below the code
& "C:\Program Files (x86)\PRTG Network Monitor\Custom Sensors\EXE\NaviSecCli.exe" -user Administrator -password password -h ip_address -f "C:\Program Files (x86)\PRTG Network Monitor\Custom Sensors\EXE\file.txt" -scope 0 getdisk -state # Path and Filter $Path = "C:\Program Files (x86)\PRTG Network Monitor\Custom Sensors\EXE\file.txt" $regex = "enable" #Number of disks in the SAN $disks_to_check = 29 # Result of the filter $string = select-string -Path $Path -pattern $regex -AllMatches | %{$_.matches} | %{$_.value} #Number of disks OK and NOK $disks_ok = $disks_to_check - $string.count # PRTG Sensor condition if ($disks_ok -eq 0) { write-host "0:$disks_to_check Disks OK" exit 0 } else { write-host "2:$disks_ok Disks failure" exit 2 } endif
- Add a "EXE" sensor in PRTG which will call my powershell script.
EDIT BY PAESSLER: Adjusted formatting of the code block
Fix the problem that the "NaviSecCLI" will launch only first time. You have to prefix the command with an "&", put the full path rather than ".\" and use the "-f" for the output.
Created on Jul 7, 2014 9:07:35 AM
Last change on Jul 9, 2014 6:30:07 AM by
Konstantin Wolff [Paessler Support]
Votes:
0
@Oliver: Thank you very much for sharing your solution!
Votes:
3
I setup my own PowerShell script which seems to work quite well. I did have issues with the NaviSECCli not closing automatically after running the query and found out I had to use quotations around the arguments to get it to close properly.
This script has a couple of improvements, namely it'll calculate the number of disks in the array without manual intervention, it'll throw a WARNING state when rebuilding and equalising the disks, and it doesn't need to write a txt file to provide results, it's all done with the $Query variable. NaviSECCli is also installed and called from it's normal directory.
Lastly, I've specified -ExecutionPolicy Bypass
in the parameters field in PRTG to bypass PowerShell's script execution security. Not sure if it works properly, but worth a shot.
You can alter the script to provide different monitoring by using faults -list
and other useful commands, modifying appropriately.
#Query the SAN for current disk status $Query = & "C:\Program Files (x86)\EMC\Navisphere CLI\NaviSECCli.exe" "-User <Username> -Password <Password> -h <IPAddress> -Scope <scope> getdisk -state" #Calculate the total number of disks $TotalDisks = (Select-String -InputObject $Query -Pattern "disk" -AllMatches).Matches.Count #Calculate the number of disks in notable states $RebuildingDisks = (Select-String -InputObject $Query -Pattern "rebuilding|equalizing" -AllMatches).Matches.Count $FailedDisks = (Select-String -InputObject $Query -Pattern "failed" -AllMatches).Matches.Count #PRTG sensor condition If ($FailedDisks -eq 0 -and $RebuildingDisks -eq 0) { Write-Host "0:Disks OK" Exit 0 } ElseIf ($FailedDisks -eq 0 -and $RebuildingDisks -gt 0) { Write-Host "1:WARNING $TotalDisks disk(s) rebuilding or equalising" Exit 1 } ElseIf ($FailedDisks -gt 0) { Write-Host "2:FAILURE $FailedDisks disk(s) failed" Exit 2 }
Votes:
0
I modified the script a little. This adjustment will set Green, Yellow, Red error levels with the sensors. Count the number of hotspares and rebuilding disk
#Query the SAN for current disk status $Query = & "C:\Program Files (x86)\EMC\Navisphere CLI\NaviSECCli.exe" ""-h host -User username -Password password -Scope 0 getdisk -state"" #Calculate the total number of disks $TotalDisks = (Select-String -InputObject $Query -Pattern "disk" -AllMatches).Matches.Count #Calculate the total number of Hot Spares $HotSpares = (Select-String -InputObject $Query -Pattern "hot" -AllMatches).Matches.Count #Calculate the number of disks in notable states $RebuildingDisks = (Select-String -InputObject $Query -Pattern "rebuilding|equalizing" -AllMatches).Matches.Count $FailedDisks = (Select-String -InputObject $Query -Pattern "failed|faulted|fault" -AllMatches).Matches.Count #PRTG service condition write-host "<prtg>" write-host "<result>" write-host "<channel>Total Disks</channel>" write-host "<customunit>Disk(s)</customunit>" write-host "<value>$TotalDisks</value>" write-host "</result>" write-host "<result>" write-host "<channel>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>" } #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>"
Votes:
0
Hi waynejessee,
Thank you for sharing your script!
Votes:
1
Yeah nice script, used it as a base to create one to monitor the storage utilisation of a pool. Only does Pool with ID 0 for now but that's all I have so works for me.
#Query the SAN for storage pool free space $Query = & "C:\Program Files (x86)\EMC\Navisphere CLI\NaviSECCli.exe" ""-h 10.18.150.90 -User <admin username> -Password <password> -Scope 0 storagepool -list -id 0 -prcntFull"" | Out-String #remove whitespace $Query = $Query.Trim() #just get the last 7 digits of the result which contains the percent utilization $percentFull = $Query.Substring($Query.Length - 7,7) #convert result to int $intvalue = $percentFull -as[int] write-host "<prtg>" write-host "<result>" write-host "<channel>Percent Full</channel>" write-host "<customunit>%</customunit>" write-host "<value>$intvalue</value>" write-host "</result>" #PRTG message display If ($intvalue -gt 90) { write-host "<text>Storage Pool Usage Critical</text>" write-host "<error>1</error>" } ElseIf ($intvalue -gt 70 ) { write-host "<text>WARNING Storage Pool Usage High</text>" } Else { write-host "<text>All OK</text>" } write-host "</prtg>"
Created on Nov 18, 2016 4:17:14 PM
Last change on Nov 21, 2016 5:56:57 AM by
Luciano Lingnau [Paessler]
Votes:
0
Hi,
I got this result using Custom EXE sensor launching powershell script:
Response not wellformed: "(<prtg> <result> <channel>Total Disks</channel> <customunit>Disk(s)</customunit> <value></value> </result> <result> <channel>Hot Spare Disks</channel> <customunit>Disk(s)</customunit> <value></value> </result> </prtg> )" (code: PE132)
<?xml version="1.0" encoding="UTF-8" ?> <prtg> <result> <channel>Total Disks</channel> <customunit>Disk(s)</customunit> </result> <result> <channel>Hot Spare Disks</channel> <customunit>Disk(s)</customunit> </result> </prtg>
Anything to do on sensor configuration?
thanks
Created on Feb 21, 2017 2:17:50 PM
Last change on Feb 22, 2017 8:41:30 AM by
Luciano Lingnau [Paessler]
Votes:
0
I'm afraid that I'm not able to test the script, but the script's author may be able to assist you. Basically it doesn't work because your result is missing the <value> tags, for both channels. Unfortunately I'm not able to tell you why this happens.
You can further troubleshoot it yourself by running the script in the Powershell ISE. Check what result you get there, you can then check what value is stored in the variables or if anything else is going wrong.
Best Regards,
Luciano Lingnau [Paessler Support]
Votes:
0
Update: As of version 18.1.37, PRTG includes 5 sensor types that enable you to monitor your Dell EMC storage systems out of the box! The sensors use the REST API of Dell EMC devices to show you health status and other important measurements of your Dell EMC storage components.
Add comment