Merge remote-tracking branch 'upstream/master' into calix

This commit is contained in:
Tony Murray
2016-02-05 14:24:04 -06:00
6 changed files with 112 additions and 16 deletions

View File

@@ -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`
```
<?php
if (!$os || $os === 'linux') {
$f5_sys_parent = '1.3.6.1.4.1.3375.2.1';
if (strpos($sysObjectId, $f5_sys_parent)) {
$os = 'f5';
}
}
### MIB definition as an array
$f5_mibs = array(
"ltmVirtualServStatEntry" => "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 ##

View File

@@ -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

View File

@@ -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'].'&amp;type='.$graph_type.'&amp;from='.$config['time']['day'].'&amp;to='.$config['time']['now'].'&amp;width=500&amp;height=150';
$peeraddresslink = "<span class=list-large><a onmouseover=\"return overlib('<img src=\'$peer_daily_url\'>', LEFT".$config['overlib_defaults'].');" onmouseout="return nd();">'.$peer['bgpPeerIdentifier'].'</a></span>';
// 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 = "<span class=list-large>".overlib_link(NULL, $peer['bgpPeerIdentifier'], generate_graph_tag($graph_array_zoom), NULL)."</span>";
echo '<tr bgcolor="'.$bg_colour.'"'.($peer['alert'] ? ' bordercolor="#cc0000"' : '').($peer['disabled'] ? ' bordercolor="#cccccc"' : '').'>
';

View File

@@ -256,20 +256,12 @@ else {
unset($peername);
}
// display overlib graphs
$graph_type = 'bgp_updates';
$local_daily_url = 'graph.php?id='.$peer['bgpPeer_id'].'&amp;type='.$graph_type.'&amp;from='.$config['time']['day'].'&amp;to='.$config['time']['now'].'&amp;width=500&amp;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 = "<span class=list-large><a href='device/device=".$peer['device_id']."/tab=routing/proto=bgp/' onmouseover=\"return overlib('<div style=\'background-color: #ffffff;\'><img src=\'$local_daily_url\'></div>', LEFT".$config['overlib_defaults'].');" onmouseout="return nd();">'.$peer_ip.'</a></span>';
$graph_type = 'bgp_updates';
$peer_daily_url = 'graph.php?id='.$peer['bgpPeer_id'].'&amp;type='.$graph_type.'&amp;from='.$config['time']['day'].'&amp;to='.$config['time']['now'].'&amp;width=500&amp;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 = "<span class=list-large><a href='device/device=".$peer['device_id']."/tab=routing/proto=bgp/' onmouseover=\"return overlib('<div style=\'background-color: #ffffff;\'><img src=\'$peer_daily_url\'></div>', LEFT".$config['overlib_defaults'].');" onmouseout="return nd();">'.$peer_ident.'</a></span>';
// 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 = "<span class=list-large>".overlib_link($overlib_link, $peer_ident, generate_graph_tag($graph_array_zoom), NULL)."</span>";
// 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 = "<span class=list-large>".overlib_link($overlib_link, $peer_ip, generate_graph_tag($graph_array_zoom), NULL)."</span>";
echo '<tr class="bgp"'.($peer['alert'] ? ' bordercolor="#cc0000"' : '').($peer['disabled'] ? ' bordercolor="#cccccc"' : '').'>';

View File

@@ -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;
}

View File

@@ -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);
}