mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
Remove guessed limits for some health sensors, documentation for sensor classes (#10327)
* Default to null for group yaml discovery. * Update test data fora154bdayaml group null fix. * Changes to guessed limit functions for sensors. Original behaviour =================== The file `includes/discovery/functions.inc.php` contains `sensor_limit_low()` and `sensor_limit()` which both attempt to guess a sane value for sensors when no explicitly defined low_limit or high_limit can be found during discovery. Both switch control structures used in those two functions have empty case statements which means that if one of those matches, it's going to fall through and run the code for each subsequent case until a `break` is reached. For example, when we call `function sensor_low_limit(dbm, -13.036)` it will return the value `-12.3842` instead of `null`. That is because there will be a match at `case 'dbm':` which falls through all the way to `case 'cooling':`, where it performs `$limit = -13.036 * 0.95` before hitting a `break`. Changed behaviour =================== Removed `power_consumed` and `count` guessed low_limit and high_limit, I personally added those sensor classes in PR #9471 when I didn't understand that a switch control structure has fall-through behaviour so I can guarantee that guessing limits for those is a mistake on my behalf. It should not be there, only power_factor can have guessed limits. Apologies for the issue, I'm still a beginning programmer! Furthermore, I removed guessed high_limit values for `current` and `power` because these are supposed to draw higher values as more devices or components are installed on for example a PDU or a chassis. Finally, I removed guessed low_limit and high_limit for `dbm` sensors, there is a much too large variance in power budget on commercially available optical transceivers for there to be a sensible window where you can guess these values. * Documentation on adding sensor classes. * Update test data - sensor limit changes @30212d2
This commit is contained in:
committed by
Tony Murray
parent
4ad20eedbb
commit
048fd0f6ed
@@ -206,3 +206,26 @@ where possible. The value for the OID is already available as `$sensor_value`.
|
||||
|
||||
Graphing is performed automatically for sensors, no custom graphing is
|
||||
required or supported.
|
||||
|
||||
#### Adding a new sensor class
|
||||
|
||||
You will need to add code for your new sensor class in the following existing files:
|
||||
|
||||
- `app/Models/Sensor.php`: add a free icon from [Font Awesome](https://fontawesome.com/icons?d=gallery&m=free) in the $icons array.
|
||||
- `doc/Developing/os/Health-Information.md`: documentation for every sensor class is mandatory.
|
||||
- `includes/discovery/sensors.inc.php`: add the sensor class to the $run_sensors array.
|
||||
- `includes/discovery/functions.inc.php`: optional - if sensible low_limit and high_limit values are guessable when a SNMP-retrievable threshold is not available, add a case for the sensor class to the sensor_limit() and/or sensor_low_limit() functions.
|
||||
- `LibreNMS/Util/ObjectCache.php`: optional - choose menu grouping for the sensor class.
|
||||
- `includes/html/pages/device/health.inc.php`: add a dbFetchCell(), $datas[], and $type_text[] entry for the sensor class.
|
||||
- `includes/html/pages/device/overview.inc.php`: add `require 'overview/sensors/$class.inc.php'` in the desired order for the device overview page.
|
||||
- `includes/html/pages/health.inc.php`: add a $type_text[] entry for the sensor class.
|
||||
- `resources/lang/en/sensors.php`: add human-readable names and units for the sensor class in English, feel free to do so for other languages as well.
|
||||
|
||||
Create and populate new files for the sensor class in the following places:
|
||||
|
||||
- `includes/discovery/sensors/$class/`: create the folder where advanced php-based discovery files are stored. Not used for yaml discovery.
|
||||
- `includes/html/graphs/device/$class.inc.php`: define unit names used in RRDtool graphs.
|
||||
- `includes/html/graphs/sensor/$class.inc.php`: define various [parameters](https://oss.oetiker.ch/rrdtool/doc/rrdgraph_graph.en.html) for RRDtool graphs.
|
||||
- `includes/html/pages/device/health/$class.inc.php`
|
||||
- `includes/html/pages/device/overview/sensors/$class.inc.php`
|
||||
- `includes/html/pages/health/$class.inc.php`
|
||||
|
||||
Reference in New Issue
Block a user