[ 'poller_name' => "Default", 'poller_id' => 0 ] ]; foreach(dbFetchRows("SELECT * FROM `pollers`") as $entry) { $pollers[$entry['poller_id']] = $entry; } $navbar = [ 'brand' => "Poller", 'class' => "navbar-narrow" ]; if ($_SESSION['userlevel'] >= 7) { $navbar['options']['wrapper']['text'] = 'Wrapper'; } $navbar['options']['devices']['text'] = 'Per-Device'; $navbar['options']['modules']['text'] = 'Per-Module'; //if (dbFetchCell("SELECT COUNT(*) FROM `pollers`")) if (OBS_DISTRIBUTED) { $navbar['options']['pollers']['text'] = 'Partitions'; $navbar['options_right']['poller_id']['text'] = 'Poller Partition (All)'; if (!safe_empty($vars['poller_id'])) { $navbar['options_right']['poller_id']['suboptions']['all']['text'] = 'All Partitions'; $navbar['options_right']['poller_id']['suboptions']['all']['url'] = generate_url($vars, [ 'poller_id' => NULL ] ); } foreach($pollers as $poller) { $navbar['options_right']['poller_id']['suboptions'][$poller['poller_id']]['text'] = escape_html($poller['poller_name']); $navbar['options_right']['poller_id']['suboptions'][$poller['poller_id']]['url'] = generate_url($vars, [ 'poller_id' => $poller['poller_id'] ] ); if (!safe_empty($vars['poller_id']) && $vars['poller_id'] == $poller['poller_id']) { $navbar['options_right']['poller_id']['suboptions'][$poller['poller_id']]['class'] = "active"; $navbar['options_right']['poller_id']['text'] = 'Poller Partition ('.$poller['poller_name'].')'; } } } foreach ($navbar['options'] as $option => $array) { if (!isset($vars['view'])) { $vars['view'] = $option; } if ($vars['view'] == $option) { $navbar['options'][$option]['class'] .= " active"; } $navbar['options'][$option]['url'] = generate_url($vars, array('view' => $option)); } print_navbar($navbar); unset($navbar); // Generate statistics $totals['pollery'] = 0; $totals['disovery'] = 0; $totals['count'] = 0; $proc['avg2']['poller'] = 0; $proc['avg2']['discovery'] = 0; $proc['max']['poller'] = 0; $proc['max']['discovery'] = 0; $mod_total = 0; $mods = []; // Make poller table $devices = []; foreach ($cache['devices']['hostname'] as $hostname => $id) { // Reference the cache. $device = &$cache['devices']['id'][$id]; if ($device['disabled'] == 1 && !$config['web_show_disabled']) { continue; } if (!safe_empty($vars['poller_id']) && $device['poller_id'] != $vars['poller_id']) { // Restricting devices list to matching poller domain. //unset($devices[$device['device_id']]); continue; } // Convert empty times to numeric $device['last_polled_timetaken'] = (float) $device['last_polled_timetaken']; $device['last_discovered_timetaken'] = (float) $device['last_discovered_timetaken']; $devices[$device['device_id']] = $device; // Find max poller/discovery times if ($device['status']) { if ($device['last_polled_timetaken'] > $proc['max']['poller']) { $proc['max']['poller'] = $device['last_polled_timetaken']; } if ($device['last_discovered_timetaken'] > $proc['max']['discovery']) { $proc['max']['discovery'] = $device['last_discovered_timetaken']; } } $proc['avg2']['poller'] += $device['last_polled_timetaken'] ** 2; $proc['avg2']['discovery'] += $device['last_discovered_timetaken'] ** 2; $totals['count']++; $totals['poller'] += $device['last_polled_timetaken']; $totals['discovery'] += $device['last_discovered_timetaken']; $devices[$id] = array_merge($devices[$id], [ 'html_row_class' => $device['html_row_class'], 'device_hostname' => $device['hostname'], 'device_link' => generate_device_link($device), 'device_status' => $device['status'], 'device_disabled' => $device['disabled'], 'last_polled_timetaken' => $device['last_polled_timetaken'], //'last_polled' => $device['last_polled'], 'last_discovered_timetaken' => $device['last_discovered_timetaken'], //'last_discovered' => $device['last_discovered'] ] ); foreach($device['state']['poller_mod_perf'] as $mod => $time) { $mods[$mod]['time'] += $time; $mods[$mod]['count']++; $mod_total += $time; } } $proc['avg']['poller'] = round(float_div($totals['polling'], $totals['count']), 2); $proc['avg']['discovery'] = round(float_div($totals['discovery'], $totals['count']), 2); // End generate statistics if ($vars['view'] === "modules") { if ($_SESSION['userlevel'] >= 7) { echo generate_box_open([ 'header-border' => TRUE, 'title' => 'Poller Modules' ]); $graph_array = [ 'type' => 'global_pollermods', 'from' => get_time('week'), 'to' => get_time(), 'legend' => 'no' ]; if (!safe_empty($vars['poller_id']) && is_numeric($vars['poller_id'])) { $graph_array['poller_id'] = $vars['poller_id']; } print_graph_row($graph_array); echo generate_box_close(); } echo generate_box_open(); if ($_SESSION['userlevel'] >= 7) { echo('
'.$mod.' | ';
echo ' '.print_percentage_bar ('100%', '20', $perc, $perc.'%', "ffffff", $bg['left'], '', "ffffff", $bg['right']).' | '; echo ''.$data['count'].' | '; echo ''.round($data['time'], 3).'s | '; echo '||
'; $graph_array = [ 'type' => 'global_pollermod', 'module' => $mod, 'legend' => 'no' ]; if (!safe_empty($vars['poller_id']) && is_numeric($vars['poller_id'])) { $graph_array['poller_id'] = $vars['poller_id']; } print_graph_row($graph_array); echo ' | '; echo '
Device | Last Polled | Last Discovered | Poller'; } ?>|||||||
---|---|---|---|---|---|---|---|---|---|
'.$row['device_link'].' | '. print_percentage_bar ('100%', '20', $proc['time']['poller'], $proc['time']['poller'].'%', "ffffff", $poll_bg['left'], '', "ffffff", $poll_bg['right']) .' | '.$row['last_polled_timetaken'].'s | '.format_uptime($config['time']['now'] - strtotime($row['last_polled']), 'shorter').' ago | '); // Discovery times echo(''. print_percentage_bar ('100%', '20', $proc['time']['discovery'], $proc['time']['discovery'].'%', "ffffff", $discover_bg['left'], '', "ffffff", $discover_bg['right']) .' | '.$row['last_discovered_timetaken'].'s | '.format_uptime($config['time']['now'] - strtotime($row['last_discovered']), 'shorter').' ago | '); if (safe_empty($vars['poller_id'])) { echo '' . get_type_class_label($pollers[$row['poller_id']]['poller_name'], 'poller') . ' | '; } echo '||
Total time for all devices (average per device): | '.$totals['poller'].'s ('.$proc['avg2']['poller'].'s) | '.$totals['discovery'].'s ('.$proc['avg2']['discovery'].'s) |