What is this?

This knowledgebase contains questions and answers about PRTG Network Monitor and network monitoring in general.

Learn more

PRTG Network Monitor

Intuitive to Use. Easy to manage.
More than 500,000 users rely on Paessler PRTG every day. Find out how you can reduce cost, increase QoS and ease planning, as well.

Free Download

Top Tags


View all Tags

EMC Storage Array

Votes:

0

Is there any plan to offer pre-built sensors to monitor EMC San? (Clariion/VNX platform) Or is there another method?

emc prtg san sensor snmp

Created on Oct 14, 2011 1:13:28 PM



Best Answer

Accepted 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.

Created on Oct 14, 2011 1:45:35 PM by  Daniel Zobel [Product Manager]



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

Created on Nov 28, 2012 4:46:44 PM



Votes:

0

SMI-S is on our wishlist, but we can not give you an exptected delivery date at this time.

Created on Nov 30, 2012 9:57:03 AM by  Dirk Paessler [Founder Paessler AG] (11,025) 3 6



Votes:

0

any news on the SMI-S?

Created on Jun 2, 2014 7:55:54 AM



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.

Created on Jun 25, 2014 9:40:07 PM



Votes:

0

As mentioned, this can still take a while. The feature will be mentioned in our release notes. Please bear with us.

Created on Jun 26, 2014 8:39:40 AM by  Patrick Hutter [Paessler Support] (7,225) 3 3



Accepted 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]



Votes:

0

@Oliver: Thank you very much for sharing your solution!

Created on Jul 7, 2014 9:25:07 AM by  Konstantin Wolff [Paessler Support]



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
}

Created on Nov 26, 2014 2:54:30 AM

Last change on Nov 26, 2014 2:54:30 AM



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>"

Created on Jul 10, 2015 8:44:15 PM



Votes:

0

Hi waynejessee,
Thank you for sharing your script!

Created on Jul 13, 2015 7:46:59 AM by  Luciano Lingnau [Paessler]



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]

Created on Feb 22, 2017 8:44:14 AM by  Luciano Lingnau [Paessler]



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.

Created on Mar 9, 2018 5:25:41 PM by  Gerald Schoch [Paessler Support]




Disclaimer: The information in the Paessler Knowledge Base comes without warranty of any kind. Use at your own risk. Before applying any instructions please exercise proper system administrator housekeeping. You must make sure that a proper backup of all your data is available.