diff --git a/doc/Extensions/MIB-based-polling.md b/doc/Extensions/MIB-based-polling.md
index d23d207dd6..cc95151531 100644
--- a/doc/Extensions/MIB-based-polling.md
+++ b/doc/Extensions/MIB-based-polling.md
@@ -144,6 +144,38 @@ graph.
can follow the above process, then use the resultant data collected by
LibreNMS in the RRD files or the database tables `device_oids`
+## Configuration
+### Main Configuration
+In `/opt/librenms/config.php` add `$config['poller_modules']['mib'] = 1;`
+
+### Discovery
+
+You need to add your desired MIBs to `/opt/librenms/mibs` folder. Afterwards you need to register your MIBs to the discovery function.
+
+#### Example
+`/opt/librenms/includes/discovery/os/f5.inc.php`
+
+```
+ "F5-BIGIP-LOCAL-MIB",
+ );
+
+### Actual registering of the MIB
+register_mibs($device, $f5_mibs, "includes/discovery/os/f5.inc.php");
+
+```
+
+The important thing is the array $f5_mibs where you define which parts (ltmVirtualServStatEntry) of the MIB (F5-BIGIP-LOCAL-MIB) you are going to add. The registering is also important, otherwise poller cannot make use of the MIB.
## TODO ##
diff --git a/doc/Support/Configuration.md b/doc/Support/Configuration.md
index 44c904e6d5..f37f7bc786 100644
--- a/doc/Support/Configuration.md
+++ b/doc/Support/Configuration.md
@@ -406,6 +406,17 @@ Entries defined in `rewrite_if` are being replaced completely.
Entries defined in `rewrite_if_regexp` only replace the match.
Matches are compared case-insensitive.
+#### Entity sensors to be ignored
+
+Some devices register bogus sensors as they are returned via SNMP but either don't exist or just don't return data.
+This allows you to ignore those based on the descr field in the database. You can either ignore globally or on a per
+os basis.
+
+```php
+$config['bad_entity_sensor_regex'][] = '/Physical id [0-9]+/';
+$config['os']['cisco']['bad_entity_sensor_regex'] = '/Physical id [0-9]+/';
+```
+
#### Storage configuration
```php
diff --git a/html/pages/device/routing/bgp.inc.php b/html/pages/device/routing/bgp.inc.php
index 17f0629a02..e994313433 100644
--- a/html/pages/device/routing/bgp.inc.php
+++ b/html/pages/device/routing/bgp.inc.php
@@ -200,10 +200,21 @@ foreach (dbFetchRows('SELECT * FROM `bgpPeers` WHERE `device_id` = ? ORDER BY `b
$peer['bgpPeerIdentifier'] = Net_IPv6::compress($peer['bgpPeerIdentifier']);
}
+ // display overlib graphs
+ $graph_array = array();
+ $graph_array['type'] = 'bgp_updates';
+ $graph_array['id'] = $peer['bgpPeer_id'];
+ $graph_array['to'] = $config['time']['now'];
+ $graph_array['from'] = $config['time']['day'];
+ $graph_array['height'] = '110';
+ $graph_array['width'] = $width;
- $graph_type = 'bgp_updates';
- $peer_daily_url = 'graph.php?id='.$peer['bgpPeer_id'].'&type='.$graph_type.'&from='.$config['time']['day'].'&to='.$config['time']['now'].'&width=500&height=150';
- $peeraddresslink = "', LEFT".$config['overlib_defaults'].');" onmouseout="return nd();">'.$peer['bgpPeerIdentifier'].'';
+ // Peer Address
+ $graph_array_zoom = $graph_array;
+ $graph_array_zoom['height'] = '150';
+ $graph_array_zoom['width'] = '500';
+ $overlib_link = "device/device=".$peer['device_id']."/tab=routing/proto=bgp/";
+ $peeraddresslink = "".overlib_link(NULL, $peer['bgpPeerIdentifier'], generate_graph_tag($graph_array_zoom), NULL)."";
echo '
';
diff --git a/html/pages/routing/bgp.inc.php b/html/pages/routing/bgp.inc.php
index d70555c030..e7450aac92 100644
--- a/html/pages/routing/bgp.inc.php
+++ b/html/pages/routing/bgp.inc.php
@@ -256,20 +256,12 @@ else {
unset($peername);
}
- // display overlib graphs
- $graph_type = 'bgp_updates';
- $local_daily_url = 'graph.php?id='.$peer['bgpPeer_id'].'&type='.$graph_type.'&from='.$config['time']['day'].'&to='.$config['time']['now'].'&width=500&height=150&&afi=ipv4&safi=unicast';
if (filter_var($peer['bgpLocalAddr'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) !== false) {
$peer_ip = Net_IPv6::compress($peer['bgpLocalAddr']);
}
else {
$peer_ip = $peer['bgpLocalAddr'];
}
-
- $localaddresslink = "
', LEFT".$config['overlib_defaults'].');" onmouseout="return nd();">'.$peer_ip.'';
-
- $graph_type = 'bgp_updates';
- $peer_daily_url = 'graph.php?id='.$peer['bgpPeer_id'].'&type='.$graph_type.'&from='.$config['time']['day'].'&to='.$config['time']['now'].'&width=500&height=150';
if (filter_var($peer['bgpPeerIdentifier'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) !== false) {
$peer_ident = Net_IPv6::compress($peer['bgpPeerIdentifier']);
}
@@ -277,7 +269,29 @@ else {
$peer_ident = $peer['bgpPeerIdentifier'];
}
- $peeraddresslink = "
', LEFT".$config['overlib_defaults'].');" onmouseout="return nd();">'.$peer_ident.'';
+ // display overlib graphs
+ $graph_array = array();
+ $graph_array['type'] = 'bgp_updates';
+ $graph_array['id'] = $peer['bgpPeer_id'];
+ $graph_array['to'] = $config['time']['now'];
+ $graph_array['from'] = $config['time']['day'];
+ $graph_array['height'] = '110';
+ $graph_array['width'] = $width;
+
+ // Peer Address
+ $graph_array_zoom = $graph_array;
+ $graph_array_zoom['height'] = '150';
+ $graph_array_zoom['width'] = '500';
+ $overlib_link = "device/device=".$peer['device_id']."/tab=routing/proto=bgp/";
+ $peeraddresslink = "".overlib_link($overlib_link, $peer_ident, generate_graph_tag($graph_array_zoom), NULL)."";
+
+ // Local Address
+ $graph_array['afi'] = 'ipv4';
+ $graph_array['safi'] = 'unicast';
+ $graph_array_zoom['afi'] = 'ipv4';
+ $graph_array_zoom['safi'] = 'unicast';
+ $overlib_link = "device/device=".$peer['device_id']."/tab=routing/proto=bgp/";
+ $localaddresslink = "".overlib_link($overlib_link, $peer_ip, generate_graph_tag($graph_array_zoom), NULL)."";
echo '
';
diff --git a/includes/discovery/functions.inc.php b/includes/discovery/functions.inc.php
index b03ac9048b..755f5b5e7c 100644
--- a/includes/discovery/functions.inc.php
+++ b/includes/discovery/functions.inc.php
@@ -710,3 +710,31 @@ function discover_process_ipv6(&$valid, $ifIndex, $ipv6_address, $ipv6_prefixlen
}//end if
}//end discover_process_ipv6()
+
+/*
+ * Check entity sensors to be excluded
+ *
+ * @param string value to check
+ * @param array device
+ *
+ * @return bool true if sensor is valid
+ * false if sensor is invalid
+*/
+function check_entity_sensor($string, $device) {
+ global $config;
+ $valid = true;
+ $string = strtolower($string);
+ if (is_array($config['bad_entity_sensor_regex'])) {
+ $fringe = $config['bad_entity_sensor_regex'];
+ if (is_array($config['os'][$device['os']]['bad_entity_sensor_regex'])) {
+ $fringe = array_merge($config['bad_entity_sensor_regex'],$config['os'][$device['os']]['bad_entity_sensor_regex']);
+ }
+ foreach ($fringe as $bad) {
+ if (preg_match($bad . "i", $string)) {
+ $valid = false;
+ d_echo("Ignored entity sensor: $bad : $string");
+ }
+ }
+ }
+ return $valid;
+}
diff --git a/includes/discovery/sensors/entity-sensor.inc.php b/includes/discovery/sensors/entity-sensor.inc.php
index b81c997849..3a7de2e6a4 100644
--- a/includes/discovery/sensors/entity-sensor.inc.php
+++ b/includes/discovery/sensors/entity-sensor.inc.php
@@ -50,7 +50,7 @@ if (is_array($oids)) {
$descr = rewrite_entity_descr($descr);
}
- $thisisnotbullshit = true;
+ $valid = check_entity_sensor($descr, $device);
$type = $entitysensor[$entry['entPhySensorType']];
@@ -103,16 +103,16 @@ if (is_array($oids)) {
if ($type == 'temperature') {
if ($current > '200') {
- $thisisnotbullshit = false;
+ $valid = false;
} $descr = preg_replace('/[T|t]emperature[|s]/', '', $descr);
}
// echo($descr . "|" . $index . "|" .$current . "|" . $multiplier . "|" . $divisor ."|" . $entry['entPhySensorScale'] . "|" . $entry['entPhySensorPrecision'] . "\n");
if ($current == '-127') {
- $thisisnotbullshit = false;
+ $valid = false;
}
- if ($thisisnotbullshit && dbFetchCell("SELECT COUNT(*) FROM `sensors` WHERE device_id = ? AND `sensor_class` = ? AND `sensor_type` = 'cisco-entity-sensor' AND `sensor_index` = ?", array($device['device_id'], $type, $index)) == '0') {
+ if ($valid && dbFetchCell("SELECT COUNT(*) FROM `sensors` WHERE device_id = ? AND `sensor_class` = ? AND `sensor_type` = 'cisco-entity-sensor' AND `sensor_index` = ?", array($device['device_id'], $type, $index)) == '0') {
// Check to make sure we've not already seen this sensor via cisco's entity sensor mib
discover_sensor($valid['sensor'], $type, $device, $oid, $index, 'entity-sensor', $descr, $divisor, $multiplier, null, null, null, null, $current);
}