title = __('General overview'); $this->ajaxMethods = [ 'getLogSizeStatus', 'getServerStatus', 'getCPULoadGraph', ]; $this->interval = 300000; $this->refreshConfig = [ 'logSizeStatus' => [ 'id' => 'status-log-size', 'method' => 'getLogSizeStatus', ], 'ServerStatus' => [ 'id' => 'status-servers', 'method' => 'getServerStatus', ], 'cpuStatus' => [ 'id' => 'status-cpu', 'method' => 'getCPULoadGraph', ], ]; } /** * Return the html log size status. * * @return string */ public function getLogSizeStatus():string { $size = $this->valueMonitoring('console_log_size'); $status = ($size[0]['datos'] < 1000) ? true : false; if ($status === true) { $image_status = html_print_image('images/status_check@svg.svg', true); $text = html_print_div( [ 'content' => __('Everything’s OK!'), 'class' => 'status-text', ], true ); } else { $image_status = html_print_image('images/status_error@svg.svg', true); $text = html_print_div( [ 'content' => __('Too size log size'), 'class' => 'status-text', ], true ); } $output = $image_status.$text; return html_print_div( [ 'content' => $output, 'class' => 'margin-top-5 flex_center', 'id' => 'status-log-size', ], true ); } /** * Return the html Servers status. * * @return string */ public function getServerStatus():string { $status = check_all_servers_up(); if ($status === true) { $image_status = html_print_image('images/status_check@svg.svg', true); $text = html_print_div( [ 'content' => __('Everything’s OK!'), 'class' => 'status-text', ], true ); } else { $image_status = html_print_image('images/status_error@svg.svg', true); $text = html_print_div( [ 'content' => __('Something’s wrong'), 'class' => 'status-text', ], true ); } $output = ''.$image_status.$text.''; return html_print_div( [ 'content' => $output, 'class' => 'margin-top-5', 'id' => 'status-servers', ], true ); } /** * Returns the html of the used licenses. * * @return string */ public function getLicenseUsageGraph():string { if (enterprise_installed() === true) { $info = license_get_info(); if ($info['limit'] > $info['count']) { $used = round(($info['count'] / $info['limit']) * 100); $free = (100 - $used); } else if ($info['limit'] <= $info['count']) { $free = 0; $used = 100; } else { $free = 100; $used = 0; } $data = [ 'agents_used' => [ 'label' => __('% Agents used'), 'perc' => $used, 'color' => '#1C4E6B', ], 'free_agents' => [ 'label' => __('% Free agents'), 'perc' => $free, 'color' => '#5C63A2', ], ]; } else { $agents = agents_get_agents(); $enabled_agents = agents_get_agents( false, false, 'AR', [ 'field' => 'nombre', 'order' => 'ASC', ], false, 1 ); if (is_array($agents) === true) { $total = count($agents); } else { $total = 0; } if ($total > 0 && is_array($enabled_agents) === true) { $total_disabled_agents = round((($total - count($enabled_agents)) * 100) / $total); $total_enabled_agents = round((count($enabled_agents) * 100) / $total); } else { $total_disabled_agents = 0; $total_enabled_agents = 100; } $data = [ 'agents_enabled' => [ 'label' => __('% Agents enabled'), 'perc' => $total_enabled_agents, 'color' => '#1C4E6B', ], 'agents_disabled' => [ 'label' => __('% Agents disabled'), 'perc' => $total_disabled_agents, 'color' => '#5C63A2', ], ]; } $bar = $this->printHorizontalBar($data); $output = html_print_div( [ 'content' => $bar, 'style' => 'margin: 0 auto;', ], true ); return $output; } /** * Print horizontal bar divided by percentage. * * @param array $data Required [perc, color, label]. * * @return string */ private function printHorizontalBar(array $data):string { $output = '
'; $output .= '
'; foreach ($data as $key => $value) { $output .= html_print_div( [ 'content' => '
'.$value['label'].'', 'class' => 'label', ], true ); } $output .= '
'; $output .= '
'; foreach ($data as $key => $value) { $output .= html_print_div( [ 'content' => $value['perc'].' %', 'style' => 'width: '.$value['perc'].'%; background-color: '.$value['color'].';', ], true ); } $output .= '
'; $output .= '
0 %
20 %
40 %
60 %
80 %
100 %
'; $output .= '
'; return $output; } /** * Returns the html of a graph with the cpu load. * * @return string */ public function getCPULoadGraph():string { $data_last24h = $this->valueMonitoring('CPU Load', (time() - 86400), time()); $dates = []; $cpu_load = []; foreach ($data_last24h as $key => $raw_data) { $dates[] = date('H:m:s', $raw_data['utimestamp']); $cpu_load[] = $raw_data['datos']; } $options = [ 'labels' => $dates, 'legend' => [ 'display' => false ], 'tooltips' => [ 'display' => false ], 'scales' => [ 'y' => [ 'grid' => ['display' => false], 'ticks' => ['display' => false], 'display' => false, ], 'x' => [ 'grid' => ['display' => false], 'display' => false, ], ], 'elements' => [ 'point' => [ 'radius' => 0 ] ], ]; $data = [ [ 'backgroundColor' => '#009D9E', 'borderColor' => '#009D9E', 'pointBackgroundColor' => '#009D9E', 'pointHoverBorderColor' => '#009D9E', 'data' => $cpu_load, ], ]; $graph_area = html_print_div( [ 'content' => line_graph($data, $options), 'class' => 'margin-top-5 w100p h100p', 'style' => 'max-height: 50px;', 'id' => 'status-cpu', ], true ); $output = $graph_area; return $output; } }