Dell PowerVault MD32XX

A customer got an older Dell PwoerVault MD32XX storage system.

The system only has the telnet port 23 open on its IP address and is able to send SNMP traps.

The MS Windows management host to configure this storage system has a command line utility called SMcli.exe installed. It looks like one can run commands via that tool (and presumably the telnet port).

Has anyone tried to implement a monitoring integration for these storage systems?

I’ve created simple PowerShell check, put it into the agent\local folder on the server with mgmt tools installed

# Define where the client is
$smcli = "C:\Program Files\Dell\MD Storage Software\MD Storage Manager\client\smcli.exe"

# Get local arrays
$storages = & $smcli -d -i

foreach ($storageline in (& $smcli -d -i)) {
    if ($storageline -eq "" -or $storageline -like "SMcli*") { continue }
    $storage = ($storageline -split '\s+')[0]

    # Get status of the storage
    if ($(& $smcli -n $storage -S -c "show storageArray healthStatus;") -like "*optimal*") { $status = 0 }
        else { $status = 1 }
    
    # Power info (total in watts)
    $power = [regex]::Match($(& $smcli -n $storage -S -c "show storageArray powerinfo;"),'Total power drawn: (\d+)').captures.groups[1].value

    # Get stats
    
    $statsin = & $smcli -n $storage -c "show allVirtualDisks performanceStats;" -S
    foreach ($line in $statsin) {
        if ($line -like "`"Virtual*") {
            $stats = @()
            $stats = ($line -replace '"','' ) -split ','
            $vd = $stats[0] -replace "Virtual Disk ",""

            Write-Host "0 $($storage)_$($vd)_TotalIOs $($vd)_TotalIOps=$($stats[1]) Virtual Disk $vd Total IOs: $($stats[1])"
            Write-Host "0 $($storage)_$($vd)_Read% $($vd)_Read%=$($stats[2]) Virtual Disk $vd Read ratio: $($stats[2])%"
            Write-Host "0 $($storage)_$($vd)_CacheHit $($vd)_ReadCacheHit%=$($stats[3])|$($vd)_WriteCacheHit%=$($stats[4]) Virtual Disk $vd Read cache hit: $($stats[3])%; Write cache hit: $($stats[4])%"
            Write-Host "0 $($storage)_$($vd)_Throughput $($vd)_CurrentMBps=$($stats[6])|$($vd)_MaxMBps=$($stats[7])|$($vd)_MinMBps=$($stats[12])|$($vd)_AverageMBps=$($stats[13]) Virtual Disk $vd Troughput - Current: $($stats[6])MB/s; Max: $($stats[7])MB/s; Min: $($stats[12])MB/s; Average: $($stats[13])MB/s"
            Write-Host "0 $($storage)_$($vd)_IOps $($vd)_CurrentIOps=$($stats[8])|$($vd)_MaxIOps=$($stats[9])|$($vd)_MinIOps=$($stats[10])|$($vd)_AverageIOps=$($stats[11]) Virtual Disk $vd IOs/s - Current: $($stats[8])/s; Max: $($stats[9])/s; Min: $($stats[10])/s; Average: $($stats[11])/s"
            Write-Host "0 $($storage)_$($vd)_Latency $($vd)_CurrentLatency=$($stats[14])|$($vd)_MaxLatency=$($stats[15])|$($vd)_MinLatency=$($stats[16])|$($vd)_AverageLatency=$($stats[17]) Virtual Disk $vd IOs/s - Current: $($stats[14])/s; Max: $($stats[15])/s; Min: $($stats[16])/s; Average: $($stats[17])/s"
        }
    }
    

    # Write output for cmk
    Write-Host "$status $($storage)_Status - $storage Status"
    Write-Host "0 $($storage)_Power Power(W)=$power $storage Total consumption $power W"
}

2 Likes

This works for me on a Windows 10 VM with the “Dell Modular Disk Storage Manager Client” installed on it. I placed the script which I called “md3200.ps1” in the folder “C:\ProgramData\checkmk\agent\local”. Locations for other OS’ can be found here: Local checks

My “SMcli.exe” was found at “C:\Program Files\Dell\MD Storage Manager\client\SMcli.exe”, so I edited the script accordingly.

There was one typo in the script… in one place the word “Throughput” is typed as “Troughput”, but that was an easy fix.

Thank you!