includes/polling/cisco-sla.inc.php =================================================================== --- includes/polling/cisco-sla.inc.php (revision 1) +++ includes/polling/cisco-sla.inc.php (working copy) @@ -35,7 +35,30 @@ $sla_table[$id][$property] = trim($value); } +unset($slavals); +if (count(dbFetchRows("SELECT count(`sla_id`) FROM `slas` WHERE `device_id` = ? AND `deleted` = 0 AND `status` = 1 AND `rtt_type` = 'icmpjitter'", array($device['device_id']))) != 0) +{ + $slavals = snmp_walk($device, "ciscoRttMonMIB.ciscoRttMonObjects.rttMonLatestOper.rttMonLatestIcmpJitterOperTable.rttMonLatestIcmpJitterOperEntry", "-OUsqt", "+CISCO-RTTMON-ICMP-MIB"); + foreach (explode("\n", $slavals) as $sla) + { + $key_val = explode(" ", $sla, 2); + if (count($key_val) != 2) + $key_val[] = ""; + + $key = $key_val[0]; + $value = $key_val[1]; + + $prop_id = explode(".", $key); + if ((count($prop_id) != 2) || !ctype_digit($prop_id[1])) + continue; + $property = str_replace("rttMonLatestIcmpJitter", "", $prop_id[0]); + $id = intval($prop_id[1]); + + $sla_table[$id][$property] = trim($value); + } +} + // Update timestamps foreach ($sla_table as &$sla) { @@ -44,20 +67,30 @@ } unset($sla); -foreach (dbFetchRows("SELECT * FROM `slas` WHERE `device_id` = ? AND `deleted` = 0 AND `status` = 1", array($device['device_id'])) as $sla) +foreach (dbFetchRows("SELECT `sla_id`, `sla_nr`, `rtt_type`, `owner`, `tag` FROM `slas` WHERE `device_id` = ? AND `deleted` = 0 AND `status` = 1", array($device['device_id'])) as $sla) { echo("SLA " . $sla['sla_nr'] . ": " . $sla['rtt_type'] . " " . $sla['owner'] . " " . $sla['tag']. "... "); $rrd_filename = "sla-" . $sla['sla_nr'] . ".rrd"; - - rrdtool_create($device, $rrd_filename, "DS:rtt:GAUGE:600:0:300000"); - + + $rrd_ds = "DS:rtt:GAUGE:600:0:300000"; + if (isset($sla_table[$sla['sla_nr']])) { $slaval = $sla_table[$sla['sla_nr']]; echo($slaval['CompletionTime'] . "ms at " . $slaval['TimeStr']); $ts = $slaval['UnixTime']; $val = $slaval['CompletionTime']; + switch ($sla['rtt_type']) + { + case 'icmpjitter': + $val .= ":".$slaval['RTTMin'].":".$slaval['RTTMax'].":".($slaval['NumRTT']+$slaval['PktLoss']).":".$slaval['PktLoss']; + $rrd_ds .= " DS:rtt_min:GAUGE:600:0:300000 DS:rtt_max:GAUGE:600:0:300000 DS:req_count:GAUGE:600:0:300000 DS:loss_count:GAUGE:600:0:300000"; + break; + case 'echo': + break; + } + } else { @@ -65,8 +98,12 @@ $ts = 'N'; $val = 'U'; } + + rrdtool_create($device, $rrd_filename, $rrd_ds); + unset($rrd_ds); + rrdtool_update($device, $rrd_filename, "N:".$val); echo("\n"); } -?> +//EOF