mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
BGP polling addtions
git-svn-id: http://www.observium.org/svn/observer/trunk@166 61d68cd4-352d-0410-923a-c4978735b2b8
This commit is contained in:
@@ -29,6 +29,8 @@ while ($device = mysql_fetch_array($device_query)) {
|
||||
if($peer) {
|
||||
list($peer_ip, $peer_as) = split(" ", $peer);
|
||||
|
||||
$peerlist[] = $device['device_id'] ." $peer_ip";
|
||||
|
||||
$astext = trim(str_replace("\"", "", shell_exec("/usr/bin/dig +short AS$peer_as.asn.cymru.com TXT | cut -d '|' -f 5")));
|
||||
|
||||
echo(str_pad($peer_ip, 32). str_pad($astext, 32) . " $peer_as ");
|
||||
@@ -40,57 +42,56 @@ while ($device = mysql_fetch_array($device_query)) {
|
||||
|
||||
### Poll BGP Peer
|
||||
|
||||
$peer_cmd = $config['snmpget'] . " -Ovq -" . $device['snmpver'] . " -c" . $device['community'] . " " . $device['hostname'] . " ";
|
||||
$peer_cmd .= "bgpPeerState.$peer_ip bgpPeerAdminStatus.$peer_ip bgpPeerInUpdates.$peer_ip bgpPeerOutUpdates.$peer_ip bgpPeerInTotalMessages.$peer_ip ";
|
||||
$peer_cmd .= "bgpPeerOutTotalMessages.$peer_ip bgpPeerFsmEstablishedTime.$peer_ip bgpPeerInUpdateElapsedTime.$peer_ip";
|
||||
$peer_data = trim(shell_exec($peer_cmd));
|
||||
# $peer_cmd = $config['snmpget'] . " -Ovq -" . $device['snmpver'] . " -c" . $device['community'] . " " . $device['hostname'] . " ";
|
||||
# $peer_cmd .= "bgpPeerState.$peer_ip bgpPeerAdminStatus.$peer_ip bgpPeerInUpdates.$peer_ip bgpPeerOutUpdates.$peer_ip bgpPeerInTotalMessages.$peer_ip ";
|
||||
# $peer_cmd .= "bgpPeerOutTotalMessages.$peer_ip bgpPeerFsmEstablishedTime.$peer_ip bgpPeerInUpdateElapsedTime.$peer_ip";
|
||||
# $peer_data = trim(shell_exec($peer_cmd));
|
||||
|
||||
$peerrrd = $rrd_dir . "/" . $device['hostname'] . "/bgp-$peer_ip.rrd";
|
||||
# $peerrrd = $rrd_dir . "/" . $device['hostname'] . "/bgp-$peer_ip.rrd";
|
||||
|
||||
if(!is_file($peerrrd)) {
|
||||
$woo = `rrdtool create $peerrrd \
|
||||
DS:bgpPeerOutUpdates:COUNTER:600:U:100000000000 \
|
||||
DS:bgpPeerInUpdates:COUNTER:600:U:100000000000 \
|
||||
DS:bgpPeerOutTotal:COUNTER:600:U:100000000000 \
|
||||
DS:bgpPeerInTotal:COUNTER:600:U:100000000000 \
|
||||
DS:bgpPeerEstablished:GAUGE:600:0:U \
|
||||
RRA:AVERAGE:0.5:1:600 \
|
||||
RRA:AVERAGE:0.5:6:700 \
|
||||
RRA:AVERAGE:0.5:24:775 \
|
||||
RRA:AVERAGE:0.5:288:797`;
|
||||
}
|
||||
# if(!is_file($peerrrd)) {
|
||||
# $woo = `rrdtool create $peerrrd \
|
||||
# DS:bgpPeerOutUpdates:COUNTER:600:U:100000000000 \
|
||||
# DS:bgpPeerInUpdates:COUNTER:600:U:100000000000 \
|
||||
# DS:bgpPeerOutTotal:COUNTER:600:U:100000000000 \
|
||||
# DS:bgpPeerInTotal:COUNTER:600:U:100000000000 \
|
||||
# DS:bgpPeerEstablished:GAUGE:600:0:U \
|
||||
# RRA:AVERAGE:0.5:1:600 \
|
||||
# RRA:AVERAGE:0.5:6:700 \
|
||||
# RRA:AVERAGE:0.5:24:775 \
|
||||
# RRA:AVERAGE:0.5:288:797`;
|
||||
# }
|
||||
|
||||
rrdtool_update($peerrrd, "N:$bgpPeerOutUpdates:$bgpPeerInUpdates:$bgpPeerOutTotalMessages:$bgpPeerInTotalMesages:$bgpPeerFsmEstablishedTime");
|
||||
# rrdtool_update($peerrrd, "N:$bgpPeerOutUpdates:$bgpPeerInUpdates:$bgpPeerOutTotalMessages:$bgpPeerInTotalMesages:$bgpPeerFsmEstablishedTime");
|
||||
|
||||
list($bgpPeerState, $bgpPeerAdminStatus, $bgpPeerInUpdates, $bgpPeerOutUpdates, $bgpPeerInTotalMessages, $bgpPeerOutTotalMessages, $bgpPeerFsmEstablishedTime, $bgpPeerInUpdateElapsedTime) = explode("\n", $peer_data);
|
||||
# list($bgpPeerState, $bgpPeerAdminStatus, $bgpPeerInUpdates, $bgpPeerOutUpdates, $bgpPeerInTotalMessages, $bgpPeerOutTotalMessages, $bgpPeerFsmEstablishedTime, $bgpPeerInUpdateElapsedTime) = explode("\n", $peer_data);
|
||||
|
||||
$update = "UPDATE bgpPeers SET bgpPeerState = '$bgpPeerState', bgpPeerAdminStatus = '$bgpPeerAdminStatus', ";
|
||||
$update .= "bgpPeerFsmEstablishedTime = '$bgpPeerFsmEstablishedTime', astext = '$astext'";
|
||||
$update .= " WHERE `device_id` = '".$device['device_id']."' AND bgpPeerIdentifier = '$peer_ip'";
|
||||
# $update = "UPDATE bgpPeers SET bgpPeerState = '$bgpPeerState', bgpPeerAdminStatus = '$bgpPeerAdminStatus', ";
|
||||
# $update .= "bgpPeerFsmEstablishedTime = '$bgpPeerFsmEstablishedTime', astext = '$astext'";
|
||||
# $update .= " WHERE `device_id` = '".$device['device_id']."' AND bgpPeerIdentifier = '$peer_ip'";
|
||||
|
||||
mysql_query($update);
|
||||
# mysql_query($update);
|
||||
|
||||
} # end if $peer
|
||||
} # End foreach
|
||||
} # End BGP check
|
||||
} # End While
|
||||
|
||||
## Delete removed sensors
|
||||
## Delete removed peers
|
||||
|
||||
$sql = "SELECT * FROM temperature AS T, devices AS D WHERE T.temp_host = D.device_id AND D.status = '1'";
|
||||
$sql = "SELECT * FROM bgpPeers AS B, devices AS D WHERE B.device_id = D.device_id AND D.status = '1'";
|
||||
$query = mysql_query($sql);
|
||||
|
||||
while ($sensor = mysql_fetch_array($query)) {
|
||||
while ($entry = mysql_fetch_array($query)) {
|
||||
unset($exists);
|
||||
$i = 0;
|
||||
while ($i < count($temp_exists) && !$exists) {
|
||||
$thistemp = $sensor['temp_host'] . " " . $sensor['temp_oid'];
|
||||
if ($temp_exists[$i] == $thistemp) { $exists = 1; }
|
||||
while ($i < count($peerlist) && !$exists) {
|
||||
$this = $entry['device_id'] . " " . $entry['bgpPeerIdentifier'];
|
||||
if ($peerlist[$i] == $this) { $exists = 1; }
|
||||
$i++;
|
||||
}
|
||||
if(!$exists) {
|
||||
# echo("Deleting...\n");
|
||||
# mysql_query("DELETE FROM temperature WHERE temp_id = '" . $sensor['temp_id'] . "'");
|
||||
mysql_query("DELETE FROM bgpPeers WHERE bgpPeer_id = '" . $entry['bgpPeer_id'] . "'");
|
||||
}
|
||||
}
|
||||
|
||||
|
47
includes/polling/bgpPeer.inc.php
Executable file
47
includes/polling/bgpPeer.inc.php
Executable file
@@ -0,0 +1,47 @@
|
||||
<?
|
||||
|
||||
echo("Polling BGP peers\n");
|
||||
|
||||
$query = "SELECT * FROM bgpPeers WHERE device_id = '" . $device['device_id'] . "'";
|
||||
$peers = mysql_query($query);
|
||||
while($peer = mysql_fetch_array($peers)) {
|
||||
|
||||
### Poll BGP Peer
|
||||
|
||||
echo("Checking ".$peer['bgpPeerIdentifier']."\n");
|
||||
|
||||
$peer_cmd = $config['snmpget'] . " -Ovq -" . $device['snmpver'] . " -c" . $device['community'] . " " . $device['hostname'] . " ";
|
||||
$peer_cmd .= "bgpPeerState." . $peer['bgpPeerIdentifier'] . " bgpPeerAdminStatus." . $peer['bgpPeerIdentifier'] . " bgpPeerInUpdates." . $peer['bgpPeerIdentifier'] . " bgpPeerOutUpdates." . $peer['bgpPeerIdentifier'] . " bgpPeerInTotalMessages." . $peer['bgpPeerIdentifier'] . " ";
|
||||
$peer_cmd .= "bgpPeerOutTotalMessages." . $peer['bgpPeerIdentifier'] . " bgpPeerFsmEstablishedTime." . $peer['bgpPeerIdentifier'] . " bgpPeerInUpdateElapsedTime." . $peer['bgpPeerIdentifier'] . "";
|
||||
$peer_data = trim(`$peer_cmd`);
|
||||
|
||||
list($bgpPeerState, $bgpPeerAdminStatus, $bgpPeerInUpdates, $bgpPeerOutUpdates, $bgpPeerInTotalMessages, $bgpPeerOutTotalMessages, $bgpPeerFsmEstablishedTime, $bgpPeerInUpdateElapsedTime) = explode("\n", $peer_data);
|
||||
|
||||
$peerrrd = $rrd_dir . "/" . $device['hostname'] . "/bgp-" . $peer['bgpPeerIdentifier'] . ".rrd";
|
||||
|
||||
if(!is_file($peerrrd)) {
|
||||
$woo = `rrdtool create $peerrrd \
|
||||
DS:bgpPeerOutUpdates:COUNTER:600:U:100000000000 \
|
||||
DS:bgpPeerInUpdates:COUNTER:600:U:100000000000 \
|
||||
DS:bgpPeerOutTotal:COUNTER:600:U:100000000000 \
|
||||
DS:bgpPeerInTotal:COUNTER:600:U:100000000000 \
|
||||
DS:bgpPeerEstablished:GAUGE:600:0:U \
|
||||
RRA:AVERAGE:0.5:1:600 \
|
||||
RRA:AVERAGE:0.5:6:700 \
|
||||
RRA:AVERAGE:0.5:24:775 \
|
||||
RRA:AVERAGE:0.5:288:797`;
|
||||
}
|
||||
|
||||
rrdtool_update($peerrrd, "N:$bgpPeerOutUpdates:$bgpPeerInUpdates:$bgpPeerOutTotalMessages:$bgpPeerInTotalMesages:$bgpPeerFsmEstablishedTime");
|
||||
|
||||
echo("$peerrrd N:$bgpPeerOutUpdates:$bgpPeerInUpdates:$bgpPeerOutTotalMessages:$bgpPeerInTotalMesages:$bgpPeerFsmEstablishedTime");
|
||||
|
||||
$update = "UPDATE bgpPeers SET bgpPeerState = '$bgpPeerState', bgpPeerAdminStatus = '$bgpPeerAdminStatus', ";
|
||||
$update .= "bgpPeerFsmEstablishedTime = '$bgpPeerFsmEstablishedTime'";
|
||||
$update .= " WHERE `device_id` = '".$device['device_id']."' AND bgpPeerIdentifier = '" . $peer['bgpPeerIdentifier'] . "'";
|
||||
|
||||
mysql_query($update);
|
||||
|
||||
}
|
||||
|
||||
?>
|
@@ -83,4 +83,7 @@
|
||||
`rrdtool update $cpurrd N:$cpu5s:$cpu5m`;
|
||||
`rrdtool update $memrrd N:$memfreeio:$memusedio:$memfreeproc:$memusedproc:$memtotal`;
|
||||
|
||||
include("includes/polling/bgpPeer.inc.php");
|
||||
|
||||
|
||||
?>
|
||||
|
Reference in New Issue
Block a user