From d2d8b05987c13782e4748b4876ee0f023505e8a0 Mon Sep 17 00:00:00 2001 From: Neil Lathwood Date: Thu, 9 Feb 2017 08:13:19 +0000 Subject: [PATCH] device: Added proc, mem and sensor support for FabricOS #5295 (#5815) --- includes/discovery/mempools/fabos.inc.php | 29 ++++++++++ includes/discovery/processors/fabos.inc.php | 29 ++++++++++ .../discovery/sensors/fanspeeds/fabos.inc.php | 36 ++++++++++++ .../discovery/sensors/pre-cache/fabos.inc.php | 28 +++++++++ .../discovery/sensors/states/fabos.inc.php | 57 +++++++++++++++++++ .../sensors/temperatures/fabos.inc.php | 36 ++++++++++++ includes/polling/mempools/fabos.inc.php | 32 +++++++++++ 7 files changed, 247 insertions(+) create mode 100644 includes/discovery/mempools/fabos.inc.php create mode 100644 includes/discovery/processors/fabos.inc.php create mode 100644 includes/discovery/sensors/fanspeeds/fabos.inc.php create mode 100644 includes/discovery/sensors/pre-cache/fabos.inc.php create mode 100644 includes/discovery/sensors/states/fabos.inc.php create mode 100644 includes/discovery/sensors/temperatures/fabos.inc.php create mode 100644 includes/polling/mempools/fabos.inc.php diff --git a/includes/discovery/mempools/fabos.inc.php b/includes/discovery/mempools/fabos.inc.php new file mode 100644 index 0000000000..fae9afd4b9 --- /dev/null +++ b/includes/discovery/mempools/fabos.inc.php @@ -0,0 +1,29 @@ +. + * + * @package LibreNMS + * @link http://librenms.org + * @copyright 2017 Neil Lathwood + * @author Neil Lathwood + */ + +if ($device['os'] === 'fabos') { + $usage = snmp_get($device, 'swMemUsage.0', '-Ovq', 'SW-MIB'); + discover_mempool($valid_mempool, $device, 0, 'fabos', 'Memory', '1'); +} diff --git a/includes/discovery/processors/fabos.inc.php b/includes/discovery/processors/fabos.inc.php new file mode 100644 index 0000000000..99c5d205ea --- /dev/null +++ b/includes/discovery/processors/fabos.inc.php @@ -0,0 +1,29 @@ +. + * + * @package LibreNMS + * @link http://librenms.org + * @copyright 2017 Neil Lathwood + * @author Neil Lathwood + */ + +if ($device['os'] === 'fabos') { + $usage = snmp_get($device, 'swCpuUsage.0', '-Ovq', 'SW-MIB'); + discover_processor($valid['processor'], $device, '.1.3.6.1.4.1.1588.2.1.1.1.26.1.0', '1', 'fabos', 'Processor', '1', $usage); +} diff --git a/includes/discovery/sensors/fanspeeds/fabos.inc.php b/includes/discovery/sensors/fanspeeds/fabos.inc.php new file mode 100644 index 0000000000..635974a79c --- /dev/null +++ b/includes/discovery/sensors/fanspeeds/fabos.inc.php @@ -0,0 +1,36 @@ +. + * + * @package LibreNMS + * @link http://librenms.org + * @copyright 2017 Neil Lathwood + * @author Neil Lathwood + */ + +foreach ($pre_cache['fabos_sensors'] as $data) { + if ($data['swSensorType'] === 'fan') { + if (is_numeric($data['swSensorValue']) && $data['swSensorValue'] !== '-2147483648') { + $index = $data['swSensorIndex']; + $oid = '.1.3.6.1.4.1.1588.2.1.1.1.1.22.1.4.' . $index; + $descr = $data['swSensorInfo']; + $value = $data['swSensorValue']; + discover_sensor($valid['sensor'], 'fan', $device, $oid, $index, 'fabos', $descr, '1', '1', null, null, null, null, $value); + } + } +} diff --git a/includes/discovery/sensors/pre-cache/fabos.inc.php b/includes/discovery/sensors/pre-cache/fabos.inc.php new file mode 100644 index 0000000000..bdf0faad98 --- /dev/null +++ b/includes/discovery/sensors/pre-cache/fabos.inc.php @@ -0,0 +1,28 @@ +. +* +* @package LibreNMS +* @link http://librenms.org +* @copyright 2017 Neil Lathwood +* @author Neil Lathwood +*/ + +if ($device['os'] === 'fabos') { + $pre_cache['fabos_sensors'] = snmpwalk_cache_multi_oid($device, 'swSensorEntry', array(), 'SW-MIB'); +} diff --git a/includes/discovery/sensors/states/fabos.inc.php b/includes/discovery/sensors/states/fabos.inc.php new file mode 100644 index 0000000000..7e480b99a4 --- /dev/null +++ b/includes/discovery/sensors/states/fabos.inc.php @@ -0,0 +1,57 @@ +. + * + * @package LibreNMS + * @link http://librenms.org + * @copyright 2017 Neil Lathwood + * @author Neil Lathwood + */ + +foreach ($pre_cache['fabos_sensors'] as $data) { + if (is_numeric($data['swSensorValue']) && $data['swSensorValue'] !== '-2147483648') { + $descr = $data['swSensorInfo']; + $state_index_id = create_state_index($descr); + if ($state_index_id !== null) { + $states = array( + array($state_index_id, 'unknown', 0, 1, 3), + array($state_index_id, 'faulty', 1, 2, 2), + array($state_index_id, 'below-min', 1, 3, 1), + array($state_index_id, 'nominal', 1, 4, 0), + array($state_index_id, 'above-max', 1, 5, 1), + array($state_index_id, 'absent', 1, 6, 1), + ); + + foreach ($states as $value) { + $insert = array( + 'state_index_id' => $value[0], + 'state_descr' => $value[1], + 'state_draw_graph' => $value[2], + 'state_value' => $value[3], + 'state_generic_value' => $value[4] + ); + dbInsert($insert, 'state_translations'); + } + } + $index = $data['swSensorIndex']; + $oid = '.1.3.6.1.4.1.1588.2.1.1.1.1.22.1.3.' . $index; + $value = $data['swSensorStatus']; + discover_sensor($valid['sensor'], 'state', $device, $oid, $index, 'fabos_state', $descr, '1', '1', null, null, null, null, $value); + create_sensor_to_state_index($device, 'fabos_state', 1); + } +} diff --git a/includes/discovery/sensors/temperatures/fabos.inc.php b/includes/discovery/sensors/temperatures/fabos.inc.php new file mode 100644 index 0000000000..e25b82d2fe --- /dev/null +++ b/includes/discovery/sensors/temperatures/fabos.inc.php @@ -0,0 +1,36 @@ +. + * + * @package LibreNMS + * @link http://librenms.org + * @copyright 2017 Neil Lathwood + * @author Neil Lathwood + */ + +foreach ($pre_cache['fabos_sensors'] as $data) { + if ($data['swSensorType'] === 'temperature') { + if (is_numeric($data['swSensorValue']) && $data['swSensorValue'] !== '-2147483648') { + $index = $data['swSensorIndex']; + $oid = '.1.3.6.1.4.1.1588.2.1.1.1.1.22.1.4.' . $index; + $descr = $data['swSensorInfo']; + $value = $data['swSensorValue']; + discover_sensor($valid['sensor'], 'temperature', $device, $oid, $index, 'fabos', $descr, '1', '1', null, null, null, null, $value); + } + } +} diff --git a/includes/polling/mempools/fabos.inc.php b/includes/polling/mempools/fabos.inc.php new file mode 100644 index 0000000000..b094d8a16c --- /dev/null +++ b/includes/polling/mempools/fabos.inc.php @@ -0,0 +1,32 @@ +. + * + * @package LibreNMS + * @link http://librenms.org + * @copyright 2017 Neil Lathwood + * @author Neil Lathwood + */ + +$perc = snmp_get($device, 'swMemUsage.0', '-Ovq', 'SW-MIB'); + +if (is_numeric($perc)) { + $mempool['total'] = 100; + $mempool['used'] = $perc; + $mempool['free'] = ($mempool['total'] - $mempool['used']); +}