mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
* Cisco enhanced cellular support * Extra sensors, camelcasing and bugfixes * Doc update * German translation * French translation * Style fixes * Style changes * Style changes * Style changes * Style changes * Style changes * Added test data * New test data --variant * New test data --variant ir1101 * Made the new wireless sensors generic * Added test data for ios variant ir809 * Fix includes/discovery/sensors/count/cisco.inc.php, thanks PipoCanaja * Moved cellular operating band from Wireless sensors to count sensor * test data * test data * test data * test data * Moved ICCID/IMSI/IMEI to inventory * test data and style fix * Cellular state sensors now have a group Co-authored-by: Maikel de Boer <mdb@tampnet.com>
110 lines
7.8 KiB
Markdown
110 lines
7.8 KiB
Markdown
source: Developing/os/Wireless-Sensors.md
|
|
path: blob/master/doc/
|
|
|
|
This document will guide you through adding wireless sensors for your
|
|
new wireless device.
|
|
|
|
Currently we have support for the following wireless metrics along
|
|
with the values we expect to see the data in:
|
|
|
|
| Type | Measurement | Interface | Description |
|
|
| ----------- | ----------- | ---------------------------- | ----------------------------------------------------------------------------------------------- |
|
|
| ap-count | % | WirelessApCountDiscovery | The number of APs attached to this controller |
|
|
| capacity | % | WirelessCapacityDiscovery | The % of operating rate vs theoretical max |
|
|
| ccq | % | WirelessCcqDiscovery | The Client Connection Quality |
|
|
| channel | count | WirelessChannelDiscovery | The channel, use of frequency is preferred |
|
|
| cell | count | WirelessCellDiscovery | The cell in a multicell technology |
|
|
| clients | count | WirelessClientsDiscovery | The number of clients connected to/managed by this device |
|
|
| distance | km | WirelessDistanceDiscovery | The distance of a radio link in Kilometers |
|
|
| error-rate | bps | WirelessErrorRateDiscovery | The rate of errored packets or bits, etc |
|
|
| error-ratio | % | WirelessErrorRatioDiscovery | The percent of errored packets or bits, etc |
|
|
| errors | count | WirelessErrorsDiscovery | The total bits of errored packets or bits, etc |
|
|
| frequency | MHz | WirelessFrequencyDiscovery | The frequency of the radio in MHz, channels can be converted |
|
|
| mse | dB | WirelessMseDiscovery | The Mean Square Error |
|
|
| noise-floor | dBm | WirelessNoiseFloorDiscovery | The amount of noise received by the radio |
|
|
| power | dBm | WirelessPowerDiscovery | The power of transmit or receive, including signal level |
|
|
| quality | % | WirelessQualityDiscovery | The % of quality of the link, 100% = perfect link |
|
|
| rate | bps | WirelessRateDiscovery | The negotiated rate of the connection (not data transfer) |
|
|
| rssi | dBm | WirelessRssiDiscovery | The Received Signal Strength Indicator |
|
|
| snr | dB | WirelessSnrDiscovery | The Signal to Noise ratio, which is signal - noise floor |
|
|
| sinr | dB | WirelessSinrDiscovery | The Signal-to-Interference-plus-Noise Ratio |
|
|
| rsrq | dB | WirelessRsrqDiscovery | The Reference Signal Received Quality |
|
|
| rsrp | dBm | WirelessRsrpDiscovery | The Reference Signals Received Power |
|
|
| xpi | dBm | WirelessXpiDiscovery | The Cross Polar Interference values |
|
|
| ssr | dB | WirelessSsrDiscovery | The Signal strength ratio, the ratio(or difference) of Vertical rx power to Horizontal rx power |
|
|
| utilization | % | WirelessUtilizationDiscovery | The % of utilization compared to the current rate |
|
|
|
|
You will need to create a new OS class for your os if one doesn't exist
|
|
under `LibreNMS/OS`. The name of this file should be the os name in
|
|
camel case for example `airos -> Airos`, `ios-wlc -> IosWlc`.
|
|
|
|
Your new OS class should extend LibreNMS\OS and implement the
|
|
interfaces for the sensors your os supports.
|
|
|
|
```php
|
|
namespace LibreNMS\OS;
|
|
|
|
use LibreNMS\Device\WirelessSensor;
|
|
use LibreNMS\Interfaces\Discovery\Sensors\WirelessClientsDiscovery;
|
|
use LibreNMS\OS;
|
|
|
|
class Airos extends OS implements WirelessClientsDiscovery
|
|
{
|
|
public function discoverWirelessClients()
|
|
{
|
|
$oid = '.1.3.6.1.4.1.41112.1.4.5.1.15.1'; //UBNT-AirMAX-MIB::ubntWlStatStaCount.1
|
|
return array(
|
|
new WirelessSensor('clients', $this->getDeviceId(), $oid, 'airos', 1, 'Clients')
|
|
);
|
|
}
|
|
}
|
|
```
|
|
|
|
All discovery interfaces will require you to return an array of WirelessSensor objects.
|
|
|
|
`new WirelessSensor()` Accepts the following arguments:
|
|
|
|
- `$type =` Required. This is the sensor class from the table above (i.e humidity).
|
|
- `$device_id =` Required. You can get this value with $this->getDeviceId()
|
|
- `$oids =` Required. This must be the numerical OID for where the data
|
|
can be found, i.e .1.2.3.4.5.6.7.0. If this is an array of oids, you
|
|
should probably specify an $aggregator.
|
|
- `$subtype =` Required. This should be the OS name, i.e airos.
|
|
- `$index =` Required. This must be unique for this sensor type, device and subtype.
|
|
Typically it's the index from the table being walked or it could be
|
|
the name of the OID if it's a single value.
|
|
- `$description =` Required. This is a descriptive value for the sensor.
|
|
Shown to the user, if this is a per-ssid statistic, using `SSID:
|
|
$ssid` here is appropriate
|
|
- `$current =` Defaults to null. Can be used to set the current value on discovery.
|
|
If this is null the values will be polled right away and if they do
|
|
not return valid value(s), the sensor will not be
|
|
discovered. Supplying a value here implies you have already verified
|
|
this sensor is valid.
|
|
- `$multiplier =` Defaults to 1. This is used to multiply the returned value.
|
|
- `$divisor =` Defaults to 1. This is used to divided the returned value.
|
|
- $aggregator = Defaults to sum. Valid values: sum, avg. This will
|
|
combine multiple values from multiple oids into one.
|
|
- `$access_point_id =` Defaults to null. If this is a wireless
|
|
controller, you can link sensors to entries in the access_points table.
|
|
- `$high_limit =` Defaults to null. Sets the high limit for the sensor,
|
|
used in alerting to report out range sensors.
|
|
- `$low_limit =` Defaults to null. Sets the low threshold limit for the
|
|
sensor, used in alerting to report out range sensors.
|
|
- `$high_warn =` Defaults to null. Sets the high warning limit for the
|
|
sensor, used in alerting to report near out of range sensors.
|
|
- `$low_warn =` Defaults to null. Sets the low warning limit for the
|
|
sensor, used in alerting to report near out of range sensors.
|
|
- `$entPhysicalIndex =` Defaults to null. Sets the entPhysicalIndex to
|
|
be used to look up further hardware if available.
|
|
- `$entPhysicalIndexMeasured =` Defaults to null. Sets the type of
|
|
entPhysicalIndex used, i.e ports.
|
|
|
|
Polling is done automatically based on the discovered data. If for
|
|
some reason you need to override polling, you can implement the
|
|
required polling interface in `LibreNMS/Interfaces/Polling/Sensors`.
|
|
Using the polling interfaces should be avoided if possible.
|
|
|
|
Graphing is performed automatically for wireless sensors, no custom
|
|
graphing is required or supported.
|