diff --git a/sysutils/pfSense-Status_Monitoring/files/usr/local/www/rrd_fetch_json.php b/sysutils/pfSense-Status_Monitoring/files/usr/local/www/rrd_fetch_json.php index fec269ea2570..4c1ad18c9605 100644 --- a/sysutils/pfSense-Status_Monitoring/files/usr/local/www/rrd_fetch_json.php +++ b/sysutils/pfSense-Status_Monitoring/files/usr/local/www/rrd_fetch_json.php @@ -58,11 +58,11 @@ $right_last_updated = $rrd_info_array['last_update']; //grab the older last updated time of the two databases -if(empty($right_last_updated)) { +if (empty($right_last_updated)) { $last_updated = $left_last_updated; -} elseif(empty($left_last_updated)) { +} elseif (empty($left_last_updated)) { $last_updated = $right_last_updated; @@ -81,7 +81,7 @@ $resolution = max($left_rrd_array['step'], $right_rrd_array['step']); // make sure end time isn't later than last updated time entry - if( $end > $last_updated ) { $end = $last_updated; } + if ( $end > $last_updated ) { $end = $last_updated; } // Minus resolution to prevent last value 0 (zero). $end -= $resolution; @@ -97,7 +97,7 @@ $rrd_options = array( 'AVERAGE', '-a', '-r', $resolution, '-s', $start, '-e', $end ); -//Initialze +//Initialize $left_unit_acronym = $right_unit_acronym = ""; //Set units based on RRD database name @@ -139,6 +139,8 @@ "" => "" ); +$ds_key_out = 0; + //TODO make this a function for left and right if ($left != "null") { @@ -150,7 +152,6 @@ $ds_list = array_keys ($rrd_array['data']); $step = $rrd_array['step']; - $ignored_left = 0; foreach ($ds_list as $ds_key_left => $ds) { @@ -204,7 +205,6 @@ $ds = "state changes"; break; case "pfnat": - $ignored_left++; $ignore = true; break; case "inpass": @@ -257,18 +257,16 @@ } if (!$ignore) { - $ds_key_left_adjusted = $ds_key_left - $ignored_left; - - $obj[$ds_key_left_adjusted]['key'] = $ds; - $obj[$ds_key_left_adjusted]['step'] = $step; - $obj[$ds_key_left_adjusted]['last_updated'] = $last_updated*1000; - $obj[$ds_key_left_adjusted]['type'] = $graph_type; - $obj[$ds_key_left_adjusted]['format'] = $format; - $obj[$ds_key_left_adjusted]['yAxis'] = 1; - $obj[$ds_key_left_adjusted]['unit_acronym'] = $unit_acronym; - $obj[$ds_key_left_adjusted]['unit_desc'] = $unit_desc_lookup[$unit_acronym]; - $obj[$ds_key_left_adjusted]['invert'] = $invert; - $obj[$ds_key_left_adjusted]['ninetyfifth'] = $ninetyfifth; + $obj[$ds_key_out]['key'] = $ds; + $obj[$ds_key_out]['step'] = $step; + $obj[$ds_key_out]['last_updated'] = $last_updated*1000; + $obj[$ds_key_out]['type'] = $graph_type; + $obj[$ds_key_out]['format'] = $format; + $obj[$ds_key_out]['yAxis'] = 1; + $obj[$ds_key_out]['unit_acronym'] = $unit_acronym; + $obj[$ds_key_out]['unit_desc'] = $unit_desc_lookup[$unit_acronym]; + $obj[$ds_key_out]['invert'] = $invert; + $obj[$ds_key_out]['ninetyfifth'] = $ninetyfifth; $data = array(); $raw_data = array(); @@ -278,7 +276,7 @@ $raw_data[] = array($time*1000, $value*$multiplier); - if(is_nan($value)) { + if (is_nan($value)) { $data[] = array($time*1000, 0); @@ -291,27 +289,63 @@ } - $obj[$ds_key_left_adjusted]['values'] = $data; - $obj[$ds_key_left_adjusted]['raw'] = $raw_data; + $obj[$ds_key_out]['values'] = $data; + $obj[$ds_key_out]['raw'] = $raw_data; - if(count($stats)) { + if (count($stats)) { - $obj[$ds_key_left_adjusted]['min'] = min($stats); - $obj[$ds_key_left_adjusted]['max'] = max($stats); - $obj[$ds_key_left_adjusted]['avg'] = array_sum($stats) / count($stats); + $obj[$ds_key_out]['min'] = min($stats); + $obj[$ds_key_out]['max'] = max($stats); + $obj[$ds_key_out]['avg'] = array_sum($stats) / count($stats); } else { - $obj[$ds_key_left_adjusted]['min'] = 0; - $obj[$ds_key_left_adjusted]['max'] = 0; - $obj[$ds_key_left_adjusted]['avg'] = 0; + $obj[$ds_key_out]['min'] = 0; + $obj[$ds_key_out]['max'] = 0; + $obj[$ds_key_out]['avg'] = 0; } + $ds_key_out += 1; + + if ($ds == 'offset') { + $obj[$ds_key_out] = $obj[$ds_key_out - 1]; + $obj[$ds_key_out]['key'] = 'abs ' . $ds; + $raw_data_abs = array(); + $data_abs = array(); + + foreach ($raw_data as $raw_data_entry) { + $raw_data_abs[] = array($raw_data_entry[0], abs($raw_data_entry[1])); + } + + foreach ($data as $data_entry) { + $data_abs[] = array($data_entry[0], abs($data_entry[1])); + } + + $obj[$ds_key_out]['values'] = $data_abs; + $obj[$ds_key_out]['raw'] = $raw_data_abs; + + if (count($stats)) { + + $stats_abs = array_map('abs', $stats); + $obj[$ds_key_out]['min'] = min($stats_abs); + $obj[$ds_key_out]['max'] = max($stats_abs); + $obj[$ds_key_out]['avg'] = array_sum($stats_abs) / count($stats_abs); + + } else { + + $obj[$ds_key_out]['min'] = 0; + $obj[$ds_key_out]['max'] = 0; + $obj[$ds_key_out]['avg'] = 0; + + } + + $ds_key_out += 1; + } } } - /* calulate the total lines */ + /* calculate the total lines */ if ( ($left_pieces[1] === "traffic") || ($left_pieces[1] === "packets") ) { foreach ($obj as $key => $value) { @@ -379,7 +413,7 @@ foreach ($inpass_array as $key => $value) { - if(is_nan($value)) { + if (is_nan($value)) { $inpass_total[] = array($key*1000, 0); @@ -394,7 +428,7 @@ foreach ($outpass_array as $key => $value) { - if(is_nan($value)) { + if (is_nan($value)) { $outpass_total[] = array($key*1000, 0); @@ -407,37 +441,36 @@ } - $ds_key_left_adjusted += 1; - //add the new total lines to array - $obj[$ds_key_left_adjusted]['key'] = "inpass total"; - $obj[$ds_key_left_adjusted]['type'] = $graphtype; - $obj[$ds_key_left_adjusted]['format'] = "s"; - $obj[$ds_key_left_adjusted]['yAxis'] = 1; - $obj[$ds_key_left_adjusted]['unit_acronym'] = $left_unit_acronym; - $obj[$ds_key_left_adjusted]['unit_desc'] = $unit_desc_lookup[$left_unit_acronym]; - $obj[$ds_key_left_adjusted]['invert'] = false; - $obj[$ds_key_left_adjusted]['ninetyfifth'] = true; - $obj[$ds_key_left_adjusted]['min'] = min($inpass_stats); - $obj[$ds_key_left_adjusted]['max'] = max($inpass_stats); - $obj[$ds_key_left_adjusted]['avg'] = array_sum($inpass_stats) / count($inpass_stats); - $obj[$ds_key_left_adjusted]['values'] = $inpass_total; - - $ds_key_left_adjusted += 1; - - $obj[$ds_key_left_adjusted]['key'] = "outpass total"; - $obj[$ds_key_left_adjusted]['type'] = $graphtype; - $obj[$ds_key_left_adjusted]['format'] = "s"; - $obj[$ds_key_left_adjusted]['yAxis'] = 1; - $obj[$ds_key_left_adjusted]['unit_acronym'] = $left_unit_acronym; - $obj[$ds_key_left_adjusted]['unit_desc'] = $unit_desc_lookup[$left_unit_acronym]; - $obj[$ds_key_left_adjusted]['invert'] = $invert_graph; - $obj[$ds_key_left_adjusted]['ninetyfifth'] = true; - $obj[$ds_key_left_adjusted]['min'] = min($outpass_stats); - $obj[$ds_key_left_adjusted]['max'] = max($outpass_stats); - $obj[$ds_key_left_adjusted]['avg'] = array_sum($outpass_stats) / count($outpass_stats); - $obj[$ds_key_left_adjusted]['values'] = $outpass_total; - + $obj[$ds_key_out]['key'] = "inpass total"; + $obj[$ds_key_out]['type'] = $graphtype; + $obj[$ds_key_out]['format'] = "s"; + $obj[$ds_key_out]['yAxis'] = 1; + $obj[$ds_key_out]['unit_acronym'] = $left_unit_acronym; + $obj[$ds_key_out]['unit_desc'] = $unit_desc_lookup[$left_unit_acronym]; + $obj[$ds_key_out]['invert'] = false; + $obj[$ds_key_out]['ninetyfifth'] = true; + $obj[$ds_key_out]['min'] = min($inpass_stats); + $obj[$ds_key_out]['max'] = max($inpass_stats); + $obj[$ds_key_out]['avg'] = array_sum($inpass_stats) / count($inpass_stats); + $obj[$ds_key_out]['values'] = $inpass_total; + + $ds_key_out += 1; + + $obj[$ds_key_out]['key'] = "outpass total"; + $obj[$ds_key_out]['type'] = $graphtype; + $obj[$ds_key_out]['format'] = "s"; + $obj[$ds_key_out]['yAxis'] = 1; + $obj[$ds_key_out]['unit_acronym'] = $left_unit_acronym; + $obj[$ds_key_out]['unit_desc'] = $unit_desc_lookup[$left_unit_acronym]; + $obj[$ds_key_out]['invert'] = $invert_graph; + $obj[$ds_key_out]['ninetyfifth'] = true; + $obj[$ds_key_out]['min'] = min($outpass_stats); + $obj[$ds_key_out]['max'] = max($outpass_stats); + $obj[$ds_key_out]['avg'] = array_sum($outpass_stats) / count($outpass_stats); + $obj[$ds_key_out]['values'] = $outpass_total; + + $ds_key_out += 1; } foreach ($obj as $raw_left_key => &$raw_left_value) { @@ -456,16 +489,8 @@ $ds_list = array_keys ($rrd_array['data']); $step = $rrd_array['step']; - $ignored_right = 0; foreach ($ds_list as $ds_key_right => $ds) { - $last_left_key = 0; - - if ($left != "null") { - //TODO make sure subtracting ignored_left is correct - $last_left_key = 1 + $ds_key_left_adjusted; - } - $data_list = $rrd_array['data'][$ds]; $ignore = $invert = $ninetyfifth = false; $graph_type = $graphtype; @@ -516,7 +541,6 @@ $ds = "state changes"; break; case "pfnat": - $ignored_right++; $ignore = true; break; case "inpass": @@ -569,18 +593,16 @@ } if (!$ignore) { - $ds_key_right_adjusted = $last_left_key + $ds_key_right - $ignored_right; - - $obj[$ds_key_right_adjusted]['key'] = $ds; - $obj[$ds_key_right_adjusted]['step'] = $step; - $obj[$ds_key_right_adjusted]['last_updated'] = $last_updated*1000; - $obj[$ds_key_right_adjusted]['type'] = $graph_type; - $obj[$ds_key_right_adjusted]['format'] = $format; - $obj[$ds_key_right_adjusted]['yAxis'] = 2; - $obj[$ds_key_right_adjusted]['unit_acronym'] = $unit_acronym; - $obj[$ds_key_right_adjusted]['unit_desc'] = $unit_desc_lookup[$unit_acronym]; - $obj[$ds_key_right_adjusted]['invert'] = $invert; - $obj[$ds_key_right_adjusted]['ninetyfifth'] = $ninetyfifth; + $obj[$ds_key_out]['key'] = $ds; + $obj[$ds_key_out]['step'] = $step; + $obj[$ds_key_out]['last_updated'] = $last_updated*1000; + $obj[$ds_key_out]['type'] = $graph_type; + $obj[$ds_key_out]['format'] = $format; + $obj[$ds_key_out]['yAxis'] = 2; + $obj[$ds_key_out]['unit_acronym'] = $unit_acronym; + $obj[$ds_key_out]['unit_desc'] = $unit_desc_lookup[$unit_acronym]; + $obj[$ds_key_out]['invert'] = $invert; + $obj[$ds_key_out]['ninetyfifth'] = $ninetyfifth; $raw_data = array(); $data = array(); @@ -590,7 +612,7 @@ $raw_data[] = array($time*1000, $value*$multiplier); - if(is_nan($value)) { + if (is_nan($value)) { $data[] = array($time*1000, 0); @@ -603,23 +625,59 @@ } - $obj[$ds_key_right_adjusted]['values'] = $data; - $obj[$ds_key_right_adjusted]['raw'] = $raw_data; + $obj[$ds_key_out]['values'] = $data; + $obj[$ds_key_out]['raw'] = $raw_data; - if(count($stats)) { + if (count($stats)) { - $obj[$ds_key_right_adjusted]['min'] = min($stats); - $obj[$ds_key_right_adjusted]['max'] = max($stats); - $obj[$ds_key_right_adjusted]['avg'] = array_sum($stats) / count($stats); + $obj[$ds_key_out]['min'] = min($stats); + $obj[$ds_key_out]['max'] = max($stats); + $obj[$ds_key_out]['avg'] = array_sum($stats) / count($stats); } else { - $obj[$ds_key_right_adjusted]['min'] = 0; - $obj[$ds_key_right_adjusted]['max'] = 0; - $obj[$ds_key_right_adjusted]['avg'] = 0; + $obj[$ds_key_out]['min'] = 0; + $obj[$ds_key_out]['max'] = 0; + $obj[$ds_key_out]['avg'] = 0; } + $ds_key_out += 1; + + if ($ds == 'offset') { + $obj[$ds_key_out] = $obj[$ds_key_out - 1]; + $obj[$ds_key_out]['key'] = 'abs ' . $ds; + $raw_data_abs = array(); + $data_abs = array(); + + foreach ($raw_data as $raw_data_entry) { + $raw_data_abs[] = array($raw_data_entry[0], abs($raw_data_entry[1])); + } + + foreach ($data as $data_entry) { + $data_abs[] = array($data_entry[0], abs($data_entry[1])); + } + + $obj[$ds_key_out]['values'] = $data_abs; + $obj[$ds_key_out]['raw'] = $raw_data_abs; + + if (count($stats)) { + + $stats_abs = array_map('abs', $stats); + $obj[$ds_key_out]['min'] = min($stats_abs); + $obj[$ds_key_out]['max'] = max($stats_abs); + $obj[$ds_key_out]['avg'] = array_sum($stats_abs) / count($stats_abs); + + } else { + + $obj[$ds_key_out]['min'] = 0; + $obj[$ds_key_out]['max'] = 0; + $obj[$ds_key_out]['avg'] = 0; + + } + + $ds_key_out += 1; + } } } @@ -688,7 +746,7 @@ foreach ($inpass_array as $key => $value) { - if(is_nan($value)) { + if (is_nan($value)) { $inpass_total[] = array($key*1000, 0); @@ -704,7 +762,7 @@ foreach ($outpass_array as $key => $value) { - if(is_nan($value)) { + if (is_nan($value)) { $outpass_total[] = array($key*1000, 0); @@ -717,37 +775,36 @@ } - $ds_key_right_adjusted += 1; - //add the new total lines to array - $obj[$ds_key_right_adjusted]['key'] = "inpass total"; - $obj[$ds_key_right_adjusted]['type'] = $graphtype; - $obj[$ds_key_right_adjusted]['format'] = "s"; - $obj[$ds_key_right_adjusted]['yAxis'] = 2; - $obj[$ds_key_right_adjusted]['unit_acronym'] = $right_unit_acronym; - $obj[$ds_key_right_adjusted]['unit_desc'] = $unit_desc_lookup[$right_unit_acronym]; - $obj[$ds_key_right_adjusted]['invert'] = false; - $obj[$ds_key_right_adjusted]['ninetyfifth'] = true; - $obj[$ds_key_right_adjusted]['min'] = min($inpass_stats); - $obj[$ds_key_right_adjusted]['max'] = max($inpass_stats); - $obj[$ds_key_right_adjusted]['avg'] = array_sum($inpass_stats) / count($inpass_stats); - $obj[$ds_key_right_adjusted]['values'] = $inpass_total; - - $ds_key_right_adjusted += 1; - - $obj[$ds_key_right_adjusted]['key'] = "outpass total"; - $obj[$ds_key_right_adjusted]['type'] = $graphtype; - $obj[$ds_key_right_adjusted]['format'] = "s"; - $obj[$ds_key_right_adjusted]['yAxis'] = 2; - $obj[$ds_key_right_adjusted]['unit_acronym'] = $right_unit_acronym; - $obj[$ds_key_right_adjusted]['unit_desc'] = $unit_desc_lookup[$right_unit_acronym]; - $obj[$ds_key_right_adjusted]['invert'] = $invert_graph; - $obj[$ds_key_right_adjusted]['ninetyfifth'] = true; - $obj[$ds_key_right_adjusted]['min'] = min($outpass_stats); - $obj[$ds_key_right_adjusted]['max'] = max($outpass_stats); - $obj[$ds_key_right_adjusted]['avg'] = array_sum($outpass_stats) / count($outpass_stats); - $obj[$ds_key_right_adjusted]['values'] = $outpass_total; - + $obj[$ds_key_out]['key'] = "inpass total"; + $obj[$ds_key_out]['type'] = $graphtype; + $obj[$ds_key_out]['format'] = "s"; + $obj[$ds_key_out]['yAxis'] = 2; + $obj[$ds_key_out]['unit_acronym'] = $right_unit_acronym; + $obj[$ds_key_out]['unit_desc'] = $unit_desc_lookup[$right_unit_acronym]; + $obj[$ds_key_out]['invert'] = false; + $obj[$ds_key_out]['ninetyfifth'] = true; + $obj[$ds_key_out]['min'] = min($inpass_stats); + $obj[$ds_key_out]['max'] = max($inpass_stats); + $obj[$ds_key_out]['avg'] = array_sum($inpass_stats) / count($inpass_stats); + $obj[$ds_key_out]['values'] = $inpass_total; + + $ds_key_out += 1; + + $obj[$ds_key_out]['key'] = "outpass total"; + $obj[$ds_key_out]['type'] = $graphtype; + $obj[$ds_key_out]['format'] = "s"; + $obj[$ds_key_out]['yAxis'] = 2; + $obj[$ds_key_out]['unit_acronym'] = $right_unit_acronym; + $obj[$ds_key_out]['unit_desc'] = $unit_desc_lookup[$right_unit_acronym]; + $obj[$ds_key_out]['invert'] = $invert_graph; + $obj[$ds_key_out]['ninetyfifth'] = true; + $obj[$ds_key_out]['min'] = min($outpass_stats); + $obj[$ds_key_out]['max'] = max($outpass_stats); + $obj[$ds_key_out]['avg'] = array_sum($outpass_stats) / count($outpass_stats); + $obj[$ds_key_out]['values'] = $outpass_total; + + $ds_key_out += 1; } foreach ($obj as $raw_right_key => &$raw_right_value) {