mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
OS detection and sensors for Dell Compellent (#11467)
* OS detection and sensors for Dell Compellent ... or Dell storage as it is now known. Under the hood it's referred to as Compellent, so I've named it as that to avoid confusion. It is not part of the Dell group or using the Dell MIB folder - Dell have doubled up on some OID definitions, which means the MIB here and a couple of the existing ones conflict. The change adds OS detection and a frankly ludicrous amount of sensors. I have access to a relatively low end device, so at the moment everything under *ctlr* is my best guess based on the other table layouts. * Set sensor state_name to avoid collisions * Regenerate test data
This commit is contained in:
27
includes/definitions/dell-compellent.yaml
Normal file
27
includes/definitions/dell-compellent.yaml
Normal file
@@ -0,0 +1,27 @@
|
||||
os: dell-compellent
|
||||
type: storage
|
||||
text: 'Dell Storage'
|
||||
group: unix
|
||||
icon: dell
|
||||
processor_stacked: true
|
||||
over:
|
||||
- { graph: device_processor, text: 'Processor Usage' }
|
||||
- { graph: device_ucd_memory, text: 'Memory Usage' }
|
||||
- { graph: device_storage, text: 'Storage Usage' }
|
||||
poller_modules:
|
||||
applications: false
|
||||
bgp-peers: false
|
||||
mpls: false
|
||||
ospf: false
|
||||
stp: false
|
||||
wireless: false
|
||||
discovery_modules:
|
||||
applications: false
|
||||
bgp-peers: false
|
||||
mpls: false
|
||||
stp: false
|
||||
wireless: false
|
||||
discovery:
|
||||
-
|
||||
sysDescr: COMPELLENT
|
||||
sysObjectID: .1.3.6.1.4.1.8072.3.2.8
|
||||
258
includes/definitions/discovery/dell-compellent.yaml
Normal file
258
includes/definitions/discovery/dell-compellent.yaml
Normal file
@@ -0,0 +1,258 @@
|
||||
mib: DELL-STORAGE-SC-MIB
|
||||
modules:
|
||||
sensors:
|
||||
count:
|
||||
data:
|
||||
-
|
||||
oid: scDiskFolderTable
|
||||
value: scDiskFolderCapcty2
|
||||
num_oid: .1.3.6.1.4.1.674.11000.2000.500.1.2.25.1.9.{{ $index }}
|
||||
descr: 'Disk Folder: {{ $scDiskFolderName }} ({{ $scDiskFolderCapcty2 }}GB)'
|
||||
index: scDiskFolderCapcty2.{{ $index }}
|
||||
-
|
||||
oid: scServerTable
|
||||
value: scServerPathCount
|
||||
num_oid: .1.3.6.1.4.1.674.11000.2000.500.1.2.27.1.6.{{ $index }}
|
||||
descr: 'Path Count: {{ $scServerName }}'
|
||||
index: scServerPathCount.{{ $index }}
|
||||
-
|
||||
oid: scObjCntTable
|
||||
value: scObjCntDevsInUse
|
||||
num_oid: .1.3.6.1.4.1.674.11000.2000.500.1.2.31.1.3.{{ $index }}
|
||||
descr: 'Usage: Devices'
|
||||
index: scObjCntDevsInUse.{{ $index }}
|
||||
-
|
||||
oid: scObjCntTable
|
||||
value: scObjCntReplays
|
||||
num_oid: .1.3.6.1.4.1.674.11000.2000.500.1.2.31.1.4.{{ $index }}
|
||||
descr: 'Usage: Replays'
|
||||
index: scObjCntReplays.{{ $index }}
|
||||
-
|
||||
oid: scObjCntTable
|
||||
value: scObjCntDisks
|
||||
num_oid: .1.3.6.1.4.1.674.11000.2000.500.1.2.31.1.5.{{ $index }}
|
||||
descr: 'Usage: Disks'
|
||||
index: scObjCntDisks.{{ $index }}
|
||||
-
|
||||
oid: scObjCntTable
|
||||
value: scObjCntServers
|
||||
num_oid: .1.3.6.1.4.1.674.11000.2000.500.1.2.31.1.6.{{ $index }}
|
||||
descr: 'Usage: Servers'
|
||||
index: scObjCntServers.{{ $index }}
|
||||
-
|
||||
oid: scObjCntTable
|
||||
value: scObjCntVolumes
|
||||
num_oid: .1.3.6.1.4.1.674.11000.2000.500.1.2.31.1.7.{{ $index }}
|
||||
descr: 'Usage: Volumes'
|
||||
index: scObjCntVolumes.{{ $index }}
|
||||
fanspeed:
|
||||
data:
|
||||
-
|
||||
oid: scCtlrFanTable
|
||||
value: scCtlrFanCurrentRpm
|
||||
num_oid: .1.3.6.1.4.1.674.11000.2000.500.1.2.16.1.5.{{ $index }}
|
||||
descr: '{{ $scCtlrFanName }}'
|
||||
index: scCtlrFanCurrentRpm.{{ $index }}
|
||||
low_limit: scCtlrFanCritLwrRpm
|
||||
low_warn_limit: scCtlrFanWarnLwrRpm
|
||||
warn_limit: scCtlrFanWarnUprRpm
|
||||
high_limit: scCtlrFanCritUprRpm
|
||||
state:
|
||||
data:
|
||||
-
|
||||
oid: productIDGlobalStatus
|
||||
value: productIDGlobalStatus
|
||||
num_oid: .1.3.6.1.4.1.16139.2.6
|
||||
descr: 'Global Status'
|
||||
state_name: productIDGlobalStatus
|
||||
states:
|
||||
- { value: 1, descr: other, graph: 1, generic: 3 }
|
||||
- { value: 2, descr: unknown, graph: 1, generic: 3 }
|
||||
- { value: 3, descr: ok, graph: 1, generic: 0 }
|
||||
- { value: 4, descr: noncritical, graph: 1, generic: 1 }
|
||||
- { value: 5, descr: critical, graph: 1, generic: 2 }
|
||||
- { value: 6, descr: recoverable, graph: 1, generic: 1 }
|
||||
-
|
||||
oid: scDiskTable
|
||||
value: scDiskStatus
|
||||
num_oid: .1.3.6.1.4.1.674.11000.2000.500.1.2.14.1.3.{{ $index }}
|
||||
descr: 'Disk: {{ $scDiskNamePosition }} ({{ $scDiskSize }}GB)'
|
||||
index: scDiskStatus.{{ $index }}
|
||||
state_name: scDiskStatus
|
||||
states:
|
||||
- { value: 1, descr: up, graph: 1, generic: 0 }
|
||||
- { value: 2, descr: down, graph: 1, generic: 2 }
|
||||
- { value: 3, descr: degraded, graph: 1, generic: 1 }
|
||||
-
|
||||
oid: scDiskTable
|
||||
value: scDiskHealthy
|
||||
num_oid: .1.3.6.1.4.1.674.11000.2000.500.1.2.14.1.5.{{ $index }}
|
||||
descr: 'Disk Health: {{ $scDiskNamePosition }} ({{ $scDiskSize }}GB)'
|
||||
index: scDiskHealthy.{{ $index }}
|
||||
state_name: scDiskHealthy
|
||||
states:
|
||||
- { value: 1, descr: healthy, graph: 1, generic: 0 }
|
||||
- { value: 2, descr: notHealthy, graph: 1, generic: 1 }
|
||||
-
|
||||
oid: scEnclTable
|
||||
value: scEnclStatus
|
||||
num_oid: .1.3.6.1.4.1.674.11000.2000.500.1.2.15.1.3.{{ $index }}
|
||||
descr: 'Enclosure: {{ $scEnclNbr }} ({{ $scEnclType }}/{{ $scEnclModel }})'
|
||||
index: scEnclStatus.{{ $index }}
|
||||
state_name: scEnclStatus
|
||||
states:
|
||||
- { value: 1, descr: up, graph: 1, generic: 0 }
|
||||
- { value: 2, descr: down, graph: 1, generic: 2 }
|
||||
- { value: 3, descr: degraded, graph: 1, generic: 1 }
|
||||
-
|
||||
oid: scCtlrPowerTable
|
||||
value: scCtlrPowerStatus
|
||||
num_oid: .1.3.6.1.4.1.674.11000.2000.500.1.2.17.1.3.{{ $index }}
|
||||
descr: '{{ $scCtlrPowerName }}'
|
||||
index: scCtlrPowerStatus.{{ $index }}
|
||||
state_name: scCtlrPowerStatus
|
||||
states:
|
||||
- { value: 1, descr: up, graph: 1, generic: 0 }
|
||||
- { value: 2, descr: down, graph: 1, generic: 2 }
|
||||
- { value: 3, descr: degraded, graph: 1, generic: 1 }
|
||||
-
|
||||
oid: scEnclFanTable
|
||||
value: scEnclFanStatus
|
||||
num_oid: .1.3.6.1.4.1.674.11000.2000.500.1.2.20.1.3.{{ $index }}
|
||||
descr: 'Fan: {{ $scEnclFanLocation }}'
|
||||
index: scEnclFanStatus.{{ $index }}
|
||||
state_name: scEnclFanStatus
|
||||
states:
|
||||
- { value: 1, descr: up, graph: 1, generic: 0 }
|
||||
- { value: 2, descr: down, graph: 1, generic: 2 }
|
||||
- { value: 3, descr: degraded, graph: 1, generic: 1 }
|
||||
-
|
||||
oid: scEnclPowerTable
|
||||
value: scEnclPowerStatus
|
||||
num_oid: .1.3.6.1.4.1.674.11000.2000.500.1.2.21.1.3.{{ $index }}
|
||||
descr: 'PSU: {{ $scEnclPowerPosition }}'
|
||||
index: scEnclPowerStatus.{{ $index }}
|
||||
state_name: scEnclPowerStatus
|
||||
states:
|
||||
- { value: 1, descr: up, graph: 1, generic: 0 }
|
||||
- { value: 2, descr: down, graph: 1, generic: 2 }
|
||||
- { value: 3, descr: degraded, graph: 1, generic: 1 }
|
||||
-
|
||||
oid: scEnclIoModTable
|
||||
value: scEnclIoModStatus
|
||||
num_oid: .1.3.6.1.4.1.674.11000.2000.500.1.2.22.1.3.{{ $index }}
|
||||
descr: 'IO Module: {{ $scEnclIoModPosition }}'
|
||||
index: scEnclIoModStatus.{{ $index }}
|
||||
state_name: scEnclIoModStatus
|
||||
states:
|
||||
- { value: 1, descr: up, graph: 1, generic: 0 }
|
||||
- { value: 2, descr: down, graph: 1, generic: 2 }
|
||||
- { value: 3, descr: degraded, graph: 1, generic: 1 }
|
||||
-
|
||||
oid: scEnclTempTable
|
||||
value: scEnclTempStatus
|
||||
num_oid: .1.3.6.1.4.1.674.11000.2000.500.1.2.23.1.3.{{ $index }}
|
||||
descr: 'Temp: {{ $scEnclTempLocation }}'
|
||||
index: scEnclTempStatus.{{ $index }}
|
||||
state_name: scEnclTempStatus
|
||||
states:
|
||||
- { value: 1, descr: up, graph: 1, generic: 0 }
|
||||
- { value: 2, descr: down, graph: 1, generic: 2 }
|
||||
- { value: 3, descr: degraded, graph: 1, generic: 1 }
|
||||
-
|
||||
oid: scEnclAlarmTable
|
||||
value: scEnclAlarmStatus
|
||||
num_oid: .1.3.6.1.4.1.674.11000.2000.500.1.2.24.1.3.{{ $index }}
|
||||
descr: 'Alarm: {{ $scEnclAlarmName }}'
|
||||
index: scEnclAlarmStatus.{{ $index }}
|
||||
state_name: scEnclAlarmStatus
|
||||
states:
|
||||
- { value: 1, descr: up, graph: 1, generic: 0 }
|
||||
- { value: 2, descr: down, graph: 1, generic: 2 }
|
||||
- { value: 3, descr: degraded, graph: 1, generic: 1 }
|
||||
-
|
||||
oid: scDiskFolderTable
|
||||
value: scDiskFolderStatus
|
||||
num_oid: .1.3.6.1.4.1.674.11000.2000.500.1.2.25.1.3.{{ $index }}
|
||||
descr: 'Disk Folder: {{ $scDiskFolderName }}'
|
||||
index: scDiskFolderStatus.{{ $index }}
|
||||
state_name: scDiskFolderStatus
|
||||
states:
|
||||
- { value: 1, descr: up, graph: 1, generic: 0 }
|
||||
- { value: 2, descr: down, graph: 1, generic: 2 }
|
||||
- { value: 3, descr: degraded, graph: 1, generic: 1 }
|
||||
-
|
||||
oid: scVolumeTable
|
||||
value: scVolumeStatus
|
||||
num_oid: .1.3.6.1.4.1.674.11000.2000.500.1.2.26.1.3.{{ $index }}
|
||||
descr: 'Volume: {{ $scVolumeName }}'
|
||||
index: scVolumeStatus.{{ $index }}
|
||||
state_name: scVolumeStatus
|
||||
states:
|
||||
- { value: 1, descr: up, graph: 1, generic: 0 }
|
||||
- { value: 2, descr: down, graph: 1, generic: 2 }
|
||||
- { value: 3, descr: degraded, graph: 1, generic: 1 }
|
||||
-
|
||||
oid: scServerTable
|
||||
value: scServerStatus
|
||||
num_oid: .1.3.6.1.4.1.674.11000.2000.500.1.2.27.1.3.{{ $index }}
|
||||
descr: 'Server: {{ $scServerName }}'
|
||||
index: scServerStatus.{{ $index }}
|
||||
state_name: scServerStatus
|
||||
states:
|
||||
- { value: 1, descr: up, graph: 1, generic: 0 }
|
||||
- { value: 2, descr: down, graph: 1, generic: 2 }
|
||||
- { value: 3, descr: degraded, graph: 1, generic: 1 }
|
||||
-
|
||||
oid: scServerTable
|
||||
value: scServerCnctvy
|
||||
num_oid: .1.3.6.1.4.1.674.11000.2000.500.1.2.27.1.5.{{ $index }}
|
||||
descr: 'Connectivity: {{ $scServerName }}'
|
||||
index: scServerCnctvy.{{ $index }}
|
||||
state_name: scServerCnctvy
|
||||
states:
|
||||
- { value: 1, descr: up, graph: 1, generic: 0 }
|
||||
- { value: 2, descr: down, graph: 1, generic: 2 }
|
||||
- { value: 3, descr: partial, graph: 1, generic: 1 }
|
||||
-
|
||||
oid: scCacheTable
|
||||
value: scCacheStatus
|
||||
num_oid: .1.3.6.1.4.1.674.11000.2000.500.1.2.28.1.3.{{ $index }}
|
||||
descr: 'Battery: {{ $scCacheName }}'
|
||||
index: scCacheStatus.{{ $index }}
|
||||
state_name: scCacheStatus
|
||||
states:
|
||||
- { value: 0, descr: noBattery, graph: 1, generic: 3 }
|
||||
- { value: 1, descr: normal, graph: 1, generic: 0 }
|
||||
- { value: 2, descr: expirationPending, graph: 1, generic: 1 }
|
||||
- { value: 3, descr: expired, graph: 1, generic: 2 }
|
||||
temperature:
|
||||
data:
|
||||
-
|
||||
oid: scCtlrTempTable
|
||||
value: scCtlrTempCurrentC
|
||||
num_oid: .1.3.6.1.4.1.674.11000.2000.500.1.2.19.1.5.{{ $index }}
|
||||
descr: '{{ $scCtlrTempName }}'
|
||||
index: scCtlrTempCurrentC.{{ $index }}
|
||||
low_limit: scCtlrTempCritLwrC
|
||||
low_warn_limit: scCtlrTempWarnLwrC
|
||||
warn_limit: scCtlrTempWarnUprC
|
||||
high_limit: scCtlrTempCritUprC
|
||||
-
|
||||
oid: scEnclTempTable
|
||||
value: scEnclTempCurrentC
|
||||
num_oid: .1.3.6.1.4.1.674.11000.2000.500.1.2.23.1.5.{{ $index }}
|
||||
descr: '{{ $scEnclTempLocation }}'
|
||||
index: scEnclTempCurrentC.{{ $index }}
|
||||
voltage:
|
||||
data:
|
||||
-
|
||||
oid: scCtlrVoltageTable
|
||||
value: scCtlrVoltageCurrentV
|
||||
num_oid: .1.3.6.1.4.1.674.11000.2000.500.1.2.18.1.{{ $index }}
|
||||
descr: '{{ $scCtlrVoltageName }}'
|
||||
index: scCtlrVoltageCurrentV.{{ $index }}
|
||||
low_limit: scCtlrVoltageCritLwrV
|
||||
low_warn_limit: scCtlrVoltageWarnLwrV
|
||||
warn_limit: scCtlrVoltageWarnUprV
|
||||
high_limit: scCtlrVoltageCritUprV
|
||||
3020
mibs/DELL-STORAGE-SC-MIB
Normal file
3020
mibs/DELL-STORAGE-SC-MIB
Normal file
File diff suppressed because it is too large
Load Diff
7280
tests/data/dell-compellent.json
Normal file
7280
tests/data/dell-compellent.json
Normal file
File diff suppressed because it is too large
Load Diff
1147
tests/snmpsim/dell-compellent.snmprec
Normal file
1147
tests/snmpsim/dell-compellent.snmprec
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user