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