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:
@@ -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
|
||||
@@ -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
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user