// Additions to Pandora FMS 1.2 graph code // Copyright (c) 2005-2007 Artica Soluciones Tecnologicas, info@artica.es // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; version 2 // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // Load global vars require("include/config.php"); require("include/functions_reporting.php"); $id_user = $_SESSION["id_usuario"]; if (give_acl ($id_user, 0, "AR") != 1) { audit_db ($id_user, $REMOTE_ADDR, "ACL Violation", "Trying to access Agent view (Grouped)"); require ("general/noaccess.php"); exit; } echo "

".$lang_label["ag_title"]." > "; echo $lang_label["tactical_view"]."

"; $data = general_stats($id_user,0); $monitor_checks = $data[0]; $monitor_ok = $data[1]; $monitor_bad = $data[2]; $monitor_unknown = $data[3]; $monitor_alert = $data[4]; $total_agents = $data[5]; $data_checks = $data[6]; $data_unknown = $data[7]; $data_alert = $data[8]; $data_alert_total = $data[9]; $monitor_alert_total = $data[10]; $total_checks = $data_checks + $monitor_checks; // Monitor checks // ~~~~~~~~~~~~~~~ echo ""; echo "
"; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo "
".$lang_label["monitor_checks"]."
"."Monitor checks"."".$monitor_checks."
"."Monitor OK"."".$monitor_ok."
"."Monitor BAD".""; if ($monitor_bad > 0) echo $monitor_bad; else echo "-"; echo "
"."Monitor Unknown".""; if ($monitor_unknown > 0) echo $monitor_unknown; else echo "-"; echo "
"."Alerts Fired".""; if ($monitor_alert > 0) echo $monitor_alert; else echo "-"; echo "
"."Alerts Total"."".$monitor_alert_total; echo "
"; // Data checks // ~~~~~~~~~~~~~~~ echo ""; echo ""; echo ""; echo ""; echo ""; echo "
".$lang_label["data_checks"]."
"."Data checks"."".$data_checks; echo "
"."Data Unknown".""; if ($data_unknown > 0) echo $data_unknown; else echo "-"; echo "
"."Alerts Fired".""; if ($data_alert > 0) echo $data_alert; else echo "-"; echo "
"."Alerts Total"; echo "".$data_alert_total; echo "
"; // Summary // ~~~~~~~~~~~~~~~ echo ""; echo ""; echo ""; echo ""; echo "
".$lang_label["summary"]."
"."Total agents"."".$total_agents; echo "
"."Total checks"."".$total_checks; echo "
"; echo "
"; // Odometer Graph // ~~~~~~~~~~~~~~~ if ($monitor_checks > 0){ $monitor_health = format_numeric ((($monitor_ok - $monitor_alert - $monitor_unknown)/ $monitor_checks) * 100,1); } else $monitor_health = 100; if ($data_checks > 0){ $data_health = format_numeric ( (($data_checks -($data_unknown + $data_alert)) / $data_checks ) * 100,1);; } else $data_health = 100; if (($data_checks != 0) OR ($data_checks != 0)){ $global_health = format_numeric( ((($monitor_ok -$monitor_alert - $monitor_unknown )+($data_checks -($data_unknown + $data_alert))) / ($data_checks + $monitor_checks) ) * 100, 1); } else $global_health = 100; echo "

".$lang_label["tactical_indicator"]."

"; echo ""; // Server information // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ $sql='SELECT * FROM tserver'; echo "

".$lang_label["tactical_server_information"]."

"; // Get total modules defined (network) $sql1='SELECT COUNT(id_agente_modulo) FROM tagente_modulo WHERE id_tipo_modulo > 4'; $result1=mysql_query($sql1); $row1=mysql_fetch_array($result1); $total_modules = $row1[0]; // Get total modules defined (data) $sql1='SELECT COUNT(processed_by_server) FROM tagente_estado WHERE processed_by_server LIKE "%_Data" '; if ($result1=mysql_query($sql1)){ $row1=mysql_fetch_array($result1); $total_modules_data = $row1[0]; } else $total_modules_data = 0; // Connect DataBase $result=mysql_query($sql); if (mysql_num_rows($result)){ echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; $color=1; while ($row=mysql_fetch_array($result)){ if ($color == 1){ $tdcolor = "datos"; $color = 0; } else { $tdcolor = "datos2"; $color = 1; } $id_server = $row["id_server"]; $name = $row["name"]; $address = $row["ip_address"]; $status = $row["status"]; $laststart = $row["laststart"]; $keepalive = $row["keepalive"]; $network_server = $row["network_server"]; $data_server = $row["data_server"]; $snmp_server = $row["snmp_server"]; $recon_server = $row["recon_server"]; $master = $row["master"]; $checksum = $row["checksum"]; $description = $row["description"]; $version = $row["version"]; $modules_server = 0; if (($network_server == 1) OR ($data_server == 1)){ if ($network_server == 1){ // Get total modules defined for this server (network modules) $sql1='SELECT * FROM tagente where id_server = '.$row["id_server"]; $result1=mysql_query($sql1); while ($row1=mysql_fetch_array($result1)){ $sql2='SELECT COUNT(id_agente_modulo) FROM tagente_modulo WHERE id_tipo_modulo > 4 AND id_agente = '.$row1["id_agente"]; $result2=mysql_query($sql2); $row2=mysql_fetch_array($result2); $modules_server = $modules_server + $row2[0]; } } echo "
".$lang_label["name"]."".$lang_label['status']."".$lang_label['load']."".$lang_label['modules']."".$lang_label['lag']."
"; echo "$name"; echo ""; if ($status ==0){ echo ""; } else { echo ""; } echo ""; if (($network_server == 1) OR ($data_server == 1)){ // Progress bar calculations if ($network_server == 1){ if ($total_modules == 0) $percentil = 0; if ($total_modules > 0) $percentil = $modules_server / ($total_modules / 100); else $percentil = 0; $total_modules_temp = $total_modules; } else { if ($total_modules_data == 0) $percentil = 0; else $percentil = $modules_server / ($total_modules_data / 100); $total_modules_temp = $total_modules_data; } } elseif ($recon_server == 1){ $sql2 = "SELECT COUNT(id_rt) FROM trecon_task WHERE id_network_server = $id_server"; $result2=mysql_query($sql2); $row2=mysql_fetch_array($result2); $modules_server = $row2[0]; $sql2 = "SELECT COUNT(id_rt) FROM trecon_task"; $result2=mysql_query($sql2); $row2=mysql_fetch_array($result2); $total_modules = $row2[0]; if ($total_modules == 0) $percentil = 0; else $percentil = $modules_server / ($total_modules / 100); $total_modules_temp = $total_modules; } else echo "-"; if (($network_server == 1) OR ($data_server == 1) OR ($recon_server == 1)) // Progress bar render echo ''; // Number of modules echo ""; if (($recon_server ==1) OR ($network_server == 1) OR ($data_server == 1)) echo $modules_server . " / ". $total_modules_temp; else echo "-"; // LAG CHECK echo ""; // Calculate lag: get oldest module of any proc_type, for this server, // and calculate difference in seconds // Get total modules defined for this server if (($network_server == 1) OR ($data_server == 1)){ $sql1 = "SELECT utimestamp, current_interval FROM tagente_estado WHERE processed_by_server = '$name' AND estado < 100"; $nowtime = time(); $maxlag=0; if ($result1=mysql_query($sql1)) while ($row1=mysql_fetch_array($result1)){ if (($row1["utimestamp"] + $row1["current_interval"]) < $nowtime) $maxlag2 = $nowtime - ($row1["utimestamp"] + $row1["current_interval"]); if ($maxlag2 > $maxlag) $maxlag = $maxlag2; } if ($maxlag < 60) echo $maxlag." sec"; elseif ($maxlag < 86400) echo format_numeric($maxlag/60) . " min"; elseif ($maxlag > 86400) echo "+1 ".$lang_label["day"]; } elseif ($recon_server == 1) { $sql1 = "SELECT * FROM trecon_task WHERE id_network_server = $id_server"; $result1=mysql_query($sql1); $nowtime = time(); $maxlag=0;$maxlag2=0; while ($row1=mysql_fetch_array($result1)){ if (($row1["utimestamp"] + $row1["interval_sweep"]) < $nowtime){ $maxlag2 = $nowtime - ($row1["utimestamp"] + $row1["interval_sweep"]); if ($maxlag2 > $maxlag) $maxlag = $maxlag2; } } if ($maxlag < 60) echo $maxlag." sec"; elseif ($maxlag < 86400) echo format_numeric($maxlag/60) . " min"; elseif ($maxlag > 86400) echo "+1 ".$lang_label["day"]; } else echo "--"; } } echo '
'; } echo "
"; ?>