Dell OpenManage Disk Status Incorrect

I am running into an issue with a few Dell servers that are showing the wrong status for their disks.

LibreNMS shows the disks as rebuilding. however they are in fact online, green and non-raid when I look at OpenManage.

I ran a ./discovery.php -h -d -m sensors and get the following which also seems to confirm they are non-raid. I am unclear with the incorrect rebuilding status is coming from. Could you point me in the right direction for troubleshooting?

arrayDiskNumber.1 = 1
arrayDiskNumber.2 = 2
arrayDiskNumber.3 = 3
arrayDiskNumber.4 = 4
arrayDiskName.1 = “Physical Disk 0:0:0”
arrayDiskName.2 = “Physical Disk 0:0:1”
arrayDiskName.3 = “Physical Disk 0:0:2”
arrayDiskName.4 = “Physical Disk 0:0:3”
arrayDiskVendor.1 = “DELL™”
arrayDiskVendor.2 = “DELL™”
arrayDiskVendor.3 = “DELL™”
arrayDiskVendor.4 = “DELL™”
arrayDiskState.1 = non-raid
arrayDiskState.2 = non-raid
arrayDiskState.3 = non-raid
arrayDiskState.4 = non-raid
arrayDiskProductID.1 = “AL14SEB18EQY”
arrayDiskProductID.2 = “AL14SEB18EQY”
arrayDiskProductID.3 = “AL14SEB18EQY”
arrayDiskProductID.4 = “AL14SEB18EQY”
arrayDiskSerialNo.1 = “87Q0AXXXXX7E”
arrayDiskSerialNo.2 = “9770AXXXXXE”
arrayDiskSerialNo.3 = “9770AXXXL7E”
arrayDiskSerialNo.4 = “977XXXFL7E”
arrayDiskRevision.1 = “EB01”
arrayDiskRevision.2 = “EB01”
arrayDiskRevision.3 = “EB01”
arrayDiskRevision.4 = “EB01”
arrayDiskEnclosureID.1 = “0”
arrayDiskEnclosureID.2 = “0”
arrayDiskEnclosureID.3 = “0”
arrayDiskEnclosureID.4 = “0”
arrayDiskChannel.1 = 0
arrayDiskChannel.2 = 0
arrayDiskChannel.3 = 0
arrayDiskChannel.4 = 0
arrayDiskLengthInMB.1 = 1716957
arrayDiskLengthInMB.2 = 1716957
arrayDiskLengthInMB.3 = 1716957
arrayDiskLengthInMB.4 = 1716957
arrayDiskLengthInBytes.1 = 220672
arrayDiskLengthInBytes.2 = 220672
arrayDiskLengthInBytes.3 = 220672
arrayDiskLengthInBytes.4 = 220672
arrayDiskTargetID.1 = 0
arrayDiskTargetID.2 = 1
arrayDiskTargetID.3 = 2
arrayDiskTargetID.4 = 3
arrayDiskLunID.1 = 0
arrayDiskLunID.2 = 0
arrayDiskLunID.3 = 0
arrayDiskLunID.4 = 0
arrayDiskUsedSpaceInMB.1 = 0
arrayDiskUsedSpaceInMB.2 = 0
arrayDiskUsedSpaceInMB.3 = 0
arrayDiskUsedSpaceInMB.4 = 0
arrayDiskUsedSpaceInBytes.1 = 0
arrayDiskUsedSpaceInBytes.2 = 0
arrayDiskUsedSpaceInBytes.3 = 0
arrayDiskUsedSpaceInBytes.4 = 0
arrayDiskBusType.1 = sas
arrayDiskBusType.2 = sas
arrayDiskBusType.3 = sas
arrayDiskBusType.4 = sas
arrayDiskSpareState.1 = notApplicable
arrayDiskSpareState.2 = notApplicable
arrayDiskSpareState.3 = notApplicable
arrayDiskSpareState.4 = notApplicable
arrayDiskRollUpStatus.1 = ok
arrayDiskRollUpStatus.2 = ok
arrayDiskRollUpStatus.3 = ok
arrayDiskRollUpStatus.4 = ok
arrayDiskComponentStatus.1 = ok
arrayDiskComponentStatus.2 = ok
arrayDiskComponentStatus.3 = ok
arrayDiskComponentStatus.4 = ok
arrayDiskNexusID.1 = “\0\0\0\0”
arrayDiskNexusID.2 = “\0\0\0\1”
arrayDiskNexusID.3 = “\0\0\0\2”
arrayDiskNexusID.4 = “\0\0\0\3”
arrayDiskPartNumber.1 = “PH02TRM4TB20078U16HGA00”
arrayDiskPartNumber.2 = “PH02TRM4TB20079919QDA00”
arrayDiskPartNumber.3 = “PH02TRM4TB20079919QBA00”
arrayDiskPartNumber.4 = “PH02TRM4TB20079919NCA00”
arrayDiskSASAddress.1 = “50000398184976B6”
arrayDiskSASAddress.2 = “50000398280B7402”
arrayDiskSASAddress.3 = “50000398280B7A8A”
arrayDiskSASAddress.4 = “50000398280B554E”
arrayDiskNegotiatedSpeed.1 = 12288
arrayDiskNegotiatedSpeed.2 = 12288
arrayDiskNegotiatedSpeed.3 = 12288
arrayDiskNegotiatedSpeed.4 = 12288
arrayDiskSmartAlertIndication.1 = no
arrayDiskSmartAlertIndication.2 = no
arrayDiskSmartAlertIndication.3 = no
arrayDiskSmartAlertIndication.4 = no
arrayDiskManufactureDay.1 = “04”
arrayDiskManufactureDay.2 = “07”
arrayDiskManufactureDay.3 = “07”
arrayDiskManufactureDay.4 = “07”
arrayDiskManufactureWeek.1 = “35”
arrayDiskManufactureWeek.2 = “36”
arrayDiskManufactureWeek.3 = “36”
arrayDiskManufactureWeek.4 = “36”
arrayDiskManufactureYear.1 = “2017”
arrayDiskManufactureYear.2 = “2017”
arrayDiskManufactureYear.3 = “2017”
arrayDiskManufactureYear.4 = “2017”
arrayDiskMediaType.1 = hdd
arrayDiskMediaType.2 = hdd
arrayDiskMediaType.3 = hdd
arrayDiskMediaType.4 = hdd
arrayDiskDellCertified.1 = 1
arrayDiskDellCertified.2 = 1
arrayDiskDellCertified.3 = 1
arrayDiskDellCertified.4 = 1
arrayDiskEncryptionCapable.1 = 0
arrayDiskEncryptionCapable.2 = 0
arrayDiskEncryptionCapable.3 = 0
arrayDiskEncryptionCapable.4 = 0
arrayDiskEncrypted.1 = 0
arrayDiskEncrypted.2 = 0
arrayDiskEncrypted.3 = 0
arrayDiskEncrypted.4 = 0
arrayDiskPowerState.1 = 0
arrayDiskPowerState.2 = 0
arrayDiskPowerState.3 = 0
arrayDiskPowerState.4 = 0
arrayDiskRemainingRatedWriteEndurance.1 = “Not Applicable”
arrayDiskRemainingRatedWriteEndurance.2 = “Not Applicable”
arrayDiskRemainingRatedWriteEndurance.3 = “Not Applicable”
arrayDiskRemainingRatedWriteEndurance.4 = “Not Applicable”
arrayDiskSectorSize.1 = 512
arrayDiskSectorSize.2 = 512
arrayDiskSectorSize.3 = 512
arrayDiskSectorSize.4 = 512
arrayDiskPICapable.1 = 0
arrayDiskPICapable.2 = 0
arrayDiskPICapable.3 = 0
arrayDiskPICapable.4 = 0
arrayDiskEntry.54.1 = “DISABLED”
arrayDiskEntry.54.2 = “DISABLED”
arrayDiskEntry.54.3 = “DISABLED”
arrayDiskEntry.54.4 = “DISABLED”

Could anyone point me in the right direction as to where the integer values are actually getting mapped to a value that is then shown in the UI?

It seems that 13 for some reason is mapping over to 24

The snmpwalk on the dell openmanage server shows 13 which is correct.
.1.3.6.1.4.1.674.10893.1.20.130.4.1.4.1 = INTEGER: 13
.1.3.6.1.4.1.674.10893.1.20.130.4.1.4.2 = INTEGER: 13
.1.3.6.1.4.1.674.10893.1.20.130.4.1.4.3 = INTEGER: 13
.1.3.6.1.4.1.674.10893.1.20.130.4.1.4.4 = INTEGER: 13

13: Non-RAID - Indicates that array disk is not a RAID capable disk.

However, UI is showing rebuild which is 24.

My guess would be that the issue is occurring in the includes/discovery/sensors/state/dell.inc.php file under this section?

elseif ($state_name == ‘arrayDiskState’) {
$states = array(
array($state_index_id,‘ready’,0,1,0) ,
array($state_index_id,‘failed’,0,2,2) ,
array($state_index_id,‘online’,0,3,0) ,
array($state_index_id,‘offline’,0,4,2) ,
array($state_index_id,‘degraded’,0,5,2) ,
array($state_index_id,‘recovering’,0,6,1) ,
array($state_index_id,‘removed’,0,7,1) ,
array($state_index_id,‘non-raid’,0,8,3) ,
array($state_index_id,‘notReady’,0,9,1) ,
array($state_index_id,‘resynching’,0,10,1) ,
array($state_index_id,‘replacing’,0,11,1) ,
array($state_index_id,‘spinningDown’,0,12,1) ,
array($state_index_id,‘rebuild’,0,13,1) ,
array($state_index_id,‘noMedia’,0,14,1) ,
array($state_index_id,‘formatting’,0,15,1) ,
array($state_index_id,‘diagnostics’,0,16,1) ,
array($state_index_id,‘predictiveFailure’,0,17,2) ,
array($state_index_id,‘initializing’,0,18,1) ,
array($state_index_id,‘foreign’,0,19,1) ,
array($state_index_id,‘clear’,0,20,1) ,
array($state_index_id,‘unsupported’,0,21,2) ,
array($state_index_id,‘incompatible’,0,22,2) ,
array($state_index_id,‘readOnly’,0,23,2)
);

Several of these I am guessing are not properly mapping to the values defined by Dell?

https://www.dell.com/support/manuals/ba/en/babsdt1/dell-opnmang-sw-v8.1/snmp_ref_guide-v5/array-disk-table?guid=guid-dcb1131f-2232-4de0-bda8-9199a4edf4e3&lang=en-us

Identifies the current state of the array disk.

Possible states:

0: Unknown

1: Ready - Available for use, but no RAID configuration has been assigned.

2: Failed - Not operational.

3: Online - Operational. RAID configuration has been assigned.

4: Offline - The drive is not available to the RAID controller.

6: Degraded - Refers to a fault-tolerant array/virtual disk that has a failed disk.

7: Recovering - Refers to state of recovering from bad blocks on disks.

11: Removed - Indicates that array disk has been removed.

13: Non-RAID - Indicates that array disk is not a RAID capable disk.

14: Not Ready - Applicable for PCIeSSD devices indicating that the device is in locked state.

15: Resynching - Indicates one of the following types of disk operations: Transform Type, Reconfiguration, and Check Consistency.

22: Replacing - Indicates copyback operation is in progress.

24: Rebuild

25: No Media - CD-ROM or removable disk has no media.

26: Formatting - In the process of formatting.

28: Diagnostics - Diagnostics are running.

34: Predictive Failure

35: Initializing: Applies only to virtual disks on PERC, PERC 2/SC, and PERC 2/DC controllers.

39: Foreign

40: Clear

41: Unsupported

53: Incompatible

56: Read Only - Applicable for PCIeSSD devices. Indicates that device has reached read-only state.

Make a PR in https://github.com/librenms/librenms/pulls with your changes, can be looked at there.

Appreciate the feedback. However, I don’t believe that code is the culprit. I changed it on my system without an effect.