2006-03-27 05:37:27 +02:00
|
|
|
<?php
|
2006-06-30 00:28:49 +02:00
|
|
|
|
2007-03-02 18:56:07 +01:00
|
|
|
// Pandora FMS - the Free monitoring system
|
|
|
|
// ========================================
|
2007-03-12 18:58:52 +01:00
|
|
|
// Copyright (c) 2004-2007 Sancho Lerena, slerena@gmail.com
|
|
|
|
// Main PHP/SQL code development and project architecture and management
|
2007-03-02 18:56:07 +01:00
|
|
|
// Copyright (c) 2004-2007 Raul Mateos Martin, raulofpandora@gmail.com
|
2007-03-12 18:58:52 +01:00
|
|
|
// CSS and some PHP additions
|
|
|
|
// Copyright (c) 2006 Jose Navarro <contacto@indiseg.net>
|
2007-06-08 17:55:53 +02:00
|
|
|
// Additions to Pandora FMS 1.2 graph code
|
2007-03-12 18:58:52 +01:00
|
|
|
// Copyright (c) 2005-2007 Artica Soluciones Tecnologicas, info@artica.es
|
|
|
|
//
|
2006-07-09 02:33:33 +02:00
|
|
|
// This program is free software; you can redistribute it and/or
|
|
|
|
// modify it under the terms of the GNU General Public License
|
2007-03-12 18:58:52 +01:00
|
|
|
// as published by the Free Software Foundation; version 2
|
2006-07-09 02:33:33 +02:00
|
|
|
// 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.
|
2007-06-08 17:55:53 +02:00
|
|
|
|
2007-03-02 18:56:07 +01:00
|
|
|
// Load global vars
|
|
|
|
require("include/config.php");
|
2007-04-11 05:12:48 +02:00
|
|
|
|
|
|
|
if (! isset($config_show_lastalerts))
|
|
|
|
$config_show_lastalerts=1;
|
2007-03-02 18:56:07 +01:00
|
|
|
|
|
|
|
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 "<h2>".$lang_label["ag_title"]." > ".$lang_label["group_view"]."
|
|
|
|
<a href='help/".$help_code."/chap3.php#324' target='_help' class='help'>
|
|
|
|
<span>".$lang_label["help"]."</span>
|
|
|
|
</a></h2>";
|
|
|
|
|
2007-03-28 18:07:29 +02:00
|
|
|
// Get group list that user has access
|
2007-03-02 18:56:07 +01:00
|
|
|
$mis_grupos = list_group2 ($id_user);
|
|
|
|
|
|
|
|
// Update network modules for this group
|
|
|
|
// Check for Network FLAG change request
|
|
|
|
if (isset ($_GET["update_netgroup"])) {
|
|
|
|
if (give_acl ($id_user, $_GET["update_netgroup"], "AW") == 1) {
|
|
|
|
$sql = "SELECT * FROM tagente WHERE id_grupo = ".
|
|
|
|
$_GET["update_netgroup"];
|
|
|
|
$result = mysql_query ($sql);
|
|
|
|
while ($row = mysql_fetch_array ($result)) {
|
|
|
|
$id_agente = $row["id_agente"];
|
|
|
|
$query2 ="UPDATE tagente_modulo SET flag=1
|
|
|
|
WHERE id_agente = ".$id_agente;
|
|
|
|
$res = mysql_query ($query2);
|
|
|
|
}
|
2007-01-01 19:41:27 +01:00
|
|
|
}
|
2007-03-02 18:56:07 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
$contador_grupo = 0;
|
|
|
|
$contador_agente = 0;
|
|
|
|
$array_index = 0;
|
2007-06-08 17:55:53 +02:00
|
|
|
$ahora=date("Y/m/d H:i:s");
|
|
|
|
$ahora_sec = strtotime($ahora);
|
2007-03-12 18:58:52 +01:00
|
|
|
// Prepare data to show
|
2007-03-02 18:56:07 +01:00
|
|
|
// For each valid group for this user, take data from agent and modules
|
|
|
|
foreach ($mis_grupos as $migrupo) {
|
|
|
|
if ($migrupo != "") {
|
2007-03-28 18:07:29 +02:00
|
|
|
$existen_agentes = 0;
|
2007-03-02 18:56:07 +01:00
|
|
|
$grupo[$array_index]["agent"] = 0;
|
|
|
|
$grupo[$array_index]["ok"] = 0;
|
|
|
|
$grupo[$array_index]["bad"] = 0;
|
|
|
|
$grupo[$array_index]["alerts"] = 0;
|
2007-04-13 20:47:58 +02:00
|
|
|
$grupo[$array_index]["down"] = 0;
|
2007-03-02 18:56:07 +01:00
|
|
|
$grupo[$array_index]["icon"] = dame_grupo_icono ($migrupo);
|
|
|
|
$grupo[$array_index]["id_grupo"] = $migrupo;
|
2007-03-28 18:07:29 +02:00
|
|
|
$grupo[$array_index]["group"] = dame_nombre_grupo ($migrupo);
|
|
|
|
|
|
|
|
$sql0 = "SELECT COUNT(id_agente) FROM tagente WHERE id_grupo = $migrupo AND disabled = 0";
|
|
|
|
$result0 = mysql_query ($sql0);
|
|
|
|
$row0 = mysql_fetch_array ($result0);
|
|
|
|
$contador_agente = $contador_agente + $row0[0];
|
|
|
|
$grupo[$array_index]["agent"] = $row0[0];
|
|
|
|
if ($row0[0] > 0)
|
|
|
|
$existen_agentes = 1;
|
|
|
|
|
|
|
|
// SQL Join to get monitor status for agents belong this group
|
2007-06-08 17:55:53 +02:00
|
|
|
$sql1 = "SELECT tagente.id_agente, tagente_estado.estado, tagente_estado.datos, tagente_estado.current_interval, tagente_estado.utimestamp, tagente_estado.id_agente_modulo FROM tagente, tagente_estado WHERE tagente.disabled = 0 AND tagente.id_grupo = $migrupo AND tagente.id_agente = tagente_estado.id_agente AND tagente_estado.estado != 100";
|
2007-03-28 18:07:29 +02:00
|
|
|
if ($result1 = mysql_query ($sql1)){
|
2007-03-02 18:56:07 +01:00
|
|
|
while ($row1 = mysql_fetch_array ($result1)) {
|
2007-03-28 18:07:29 +02:00
|
|
|
$id_agente = $row1[0];
|
|
|
|
$estado = $row1[1];
|
|
|
|
$datos = $row1[2];
|
2007-06-08 17:55:53 +02:00
|
|
|
$module_interval = $row1[3];
|
|
|
|
$seconds = $ahora_sec - $row1[4];
|
|
|
|
$id_agente_modulo = $row1[5];
|
|
|
|
if ($seconds >= ($module_interval*2))
|
|
|
|
$grupo[$array_index]["down"]++;
|
|
|
|
elseif ($datos != 0) {
|
2007-03-28 18:07:29 +02:00
|
|
|
$grupo[$array_index]["ok"]++;
|
|
|
|
} else {
|
|
|
|
$grupo[$array_index]["bad"]++;
|
2006-12-15 16:25:19 +01:00
|
|
|
}
|
2007-01-01 19:41:27 +01:00
|
|
|
}
|
2007-03-02 18:56:07 +01:00
|
|
|
}
|
2007-03-28 18:07:29 +02:00
|
|
|
|
|
|
|
if ($config_show_lastalerts == 1){
|
|
|
|
// How many alerts has been fired recently for this group:
|
|
|
|
// SQL Join to get alert status for agents belong this group
|
|
|
|
$sql1 = "SELECT SUM(talerta_agente_modulo.times_fired)
|
|
|
|
FROM tagente_modulo, talerta_agente_modulo, tagente WHERE tagente.disabled = 0 AND tagente.id_grupo = $migrupo AND tagente.id_agente = tagente_modulo.id_agente AND talerta_agente_modulo.id_agente_modulo = tagente_modulo.id_agente_modulo";
|
|
|
|
if ($result1 = mysql_query ($sql1)){
|
|
|
|
$row1 = mysql_fetch_array ($result1);
|
|
|
|
$grupo[$array_index]["alerts"] = $row1[0];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2007-03-02 18:56:07 +01:00
|
|
|
if ($existen_agentes == 1){
|
|
|
|
$array_index++;
|
2006-03-27 05:37:27 +02:00
|
|
|
}
|
2007-01-01 19:41:27 +01:00
|
|
|
}
|
2007-03-28 18:07:29 +02:00
|
|
|
|
2007-03-02 18:56:07 +01:00
|
|
|
}
|
2006-12-15 16:25:19 +01:00
|
|
|
|
2007-03-02 18:56:07 +01:00
|
|
|
// Draw data
|
|
|
|
if ($contador_agente != 0) {
|
|
|
|
$ancho = ceil(sqrt($array_index+1));
|
|
|
|
$real_count =0;
|
2007-03-12 18:58:52 +01:00
|
|
|
echo "<table cellpadding=10 cellspacing=10 border=0>";
|
2007-03-02 18:56:07 +01:00
|
|
|
for ($table=0; $table < $ancho; $table++) {
|
|
|
|
echo "<tr class='bot'>";
|
|
|
|
for ($table_row=0; $table_row < $ancho; $table_row++) {
|
|
|
|
if ($real_count < $array_index) {
|
|
|
|
$group_name = $grupo[$real_count]["group"];
|
|
|
|
$icono_grupo = $grupo[$real_count]["icon"];
|
|
|
|
$icono_type = "";
|
|
|
|
if ($grupo[$real_count]["bad"] > 0) {
|
|
|
|
$icono_type = $icono_type."
|
|
|
|
<img src='images/dot_red.gif' alt=''>";
|
|
|
|
}
|
|
|
|
if ($grupo[$real_count]["ok"] > 0) {
|
|
|
|
$icono_type = $icono_type."
|
|
|
|
<img src='images/dot_green.gif' alt=''>";
|
|
|
|
}
|
|
|
|
// Show yellow light if there are recent alerts fired for this group
|
|
|
|
if ($grupo[$real_count]["alerts"] > 0 ){
|
|
|
|
$icono_type=$icono_type."
|
|
|
|
<img src='images/dot_yellow.gif' alt=''>";
|
|
|
|
}
|
2007-04-13 20:47:58 +02:00
|
|
|
|
|
|
|
// Show grey light if there are agent down for this group
|
|
|
|
if ($grupo[$real_count]["down"] > 0 ){
|
|
|
|
$icono_type=$icono_type."
|
|
|
|
<img src='images/dot_white.gif' alt=''>";
|
|
|
|
}
|
2007-04-22 03:08:58 +02:00
|
|
|
|
|
|
|
// Show red flag is group has disabled alert system
|
|
|
|
if (give_disabled_group($grupo[$real_count]["id_grupo"]) == 1)
|
2007-05-01 15:28:33 +02:00
|
|
|
$icono_type = $icono_type."
|
|
|
|
<img src='images/flag_red.png' alt='".$lang_label["disabled"]."'>";
|
2007-03-02 18:56:07 +01:00
|
|
|
|
2007-04-13 20:47:58 +02:00
|
|
|
// By default green border
|
2007-05-01 15:28:33 +02:00
|
|
|
$celda = "<td class='top' style='border: 3px solid #aeff21;' width='100'>";
|
2007-04-13 20:47:58 +02:00
|
|
|
|
|
|
|
// Grey border if agent down
|
|
|
|
if ($grupo[$real_count]["down"] > 0)
|
2007-05-01 15:28:33 +02:00
|
|
|
$celda = "<td class='top' style='border: 3px solid #aabbaa;' width='100'>";
|
2007-04-13 20:47:58 +02:00
|
|
|
|
2007-03-28 18:07:29 +02:00
|
|
|
// Yellow border if agents with alerts
|
|
|
|
if ($grupo[$real_count]["alerts"] > 0)
|
2007-05-01 15:28:33 +02:00
|
|
|
$celda = "<td class='top' style='border: 3px solid #ffea00;' width='100'>";
|
2007-03-12 18:58:52 +01:00
|
|
|
|
|
|
|
// Red border if agents bad
|
|
|
|
if ($grupo[$real_count]["bad"] > 0)
|
|
|
|
$celda = "<td class='top' style='border: 3px solid #ff0000;' width='100'>";
|
2007-03-28 18:07:29 +02:00
|
|
|
|
|
|
|
// Orange if alerts and down modules
|
|
|
|
if (($grupo[$real_count]["bad"] > 0) && ($grupo[$real_count]["alerts"] > 0))
|
2007-05-01 15:28:33 +02:00
|
|
|
$celda = "<td class='top' style='border: 3px solid #ffbb00;' width='100'>";
|
2007-04-13 20:47:58 +02:00
|
|
|
|
2007-03-12 18:58:52 +01:00
|
|
|
|
|
|
|
$celda .= "<a href='index.php?sec=estado&
|
2007-03-02 18:56:07 +01:00
|
|
|
sec2=operation/agentes/estado_agente&
|
|
|
|
refr=60&
|
|
|
|
group_id=".$grupo[$real_count]["id_grupo"]."'
|
2007-03-12 18:58:52 +01:00
|
|
|
class='info'>";
|
|
|
|
|
|
|
|
// Add group icon
|
|
|
|
$celda .= "<img class='top'
|
|
|
|
src='images/groups_small/".$icono_grupo.".png' height='32' width='32' alt=''>";
|
|
|
|
|
|
|
|
// Add float info table
|
|
|
|
$celda .= "
|
|
|
|
<span>
|
|
|
|
<table cellspacing='2' cellpadding='0'
|
2007-03-28 18:07:29 +02:00
|
|
|
style='margin-left:2px;'>
|
2007-06-17 17:05:30 +02:00
|
|
|
<tr><th colspan='2' width='91'>".
|
|
|
|
$lang_label["agents"].": </th></tr>
|
2007-03-12 18:58:52 +01:00
|
|
|
<tr><td colspan='2' class='datos' align='center'><b>".
|
|
|
|
$grupo[$real_count]["agent"]."</b></td></tr>
|
|
|
|
</table>
|
|
|
|
<table cellspacing='2' cellpadding='0'
|
2007-03-28 18:07:29 +02:00
|
|
|
style='margin-left:2px'>
|
2007-03-12 18:58:52 +01:00
|
|
|
<tr>
|
2007-06-17 17:05:30 +02:00
|
|
|
<th colspan='2' width='90'>".
|
|
|
|
ucfirst($lang_label["monitors"]).":</th>
|
2007-03-12 18:58:52 +01:00
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td class='datos'>
|
|
|
|
<img src='images/b_green.gif' align='top' alt='' >
|
|
|
|
".$lang_label["ok"].": </td>
|
|
|
|
<td class='datos'>
|
|
|
|
<font class='greenb'>".$grupo[$real_count]["ok"]."</font>
|
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td class='datos'>
|
|
|
|
<img src='images/b_red.gif' align='top' alt=''>
|
|
|
|
".$lang_label["fail"].": </td>
|
|
|
|
<td class='datos'><font class='redb'>".
|
|
|
|
$grupo[$real_count]["bad"]."</font></td>
|
2007-04-13 20:47:58 +02:00
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td class='datos'>
|
|
|
|
<img src='images/b_white.gif' align='top' alt=''>
|
|
|
|
".$lang_label["down"].": </td>
|
|
|
|
<td class='datos'><font class='redb'>".
|
|
|
|
$grupo[$real_count]["down"]."</font></td>
|
2007-03-28 18:07:29 +02:00
|
|
|
</tr>";
|
|
|
|
if ($config_show_lastalerts == 1)
|
|
|
|
$celda .= "<tr>
|
|
|
|
<td class='datos'>
|
|
|
|
<img src='images/b_yellow.gif' align='top' alt=''>
|
|
|
|
".$lang_label["alerts"].": </td>
|
|
|
|
<td class='datos'><font class='grey'>".
|
|
|
|
$grupo[$real_count]["alerts"]."</font></td>
|
|
|
|
</tr>";
|
|
|
|
$celda .= "</table></span></a>";
|
|
|
|
|
|
|
|
|
2007-03-02 18:56:07 +01:00
|
|
|
// Render network exec module button, only when this group is writtable by user
|
|
|
|
if (give_acl ($id_user, $grupo[$real_count]["id_grupo"], "AW") == 1) {
|
|
|
|
$celda .= " <a href='index.php?
|
|
|
|
sec=estado&
|
|
|
|
sec2=operation/agentes/estado_grupo&
|
|
|
|
update_netgroup=".$grupo[$real_count]["id_grupo"]."'>
|
|
|
|
<img src='images/target.gif'></a>";
|
|
|
|
}
|
|
|
|
$celda .= "<br><br>".
|
|
|
|
$icono_type."<br><br>
|
|
|
|
<span class='gr'>".$group_name."</span>";
|
|
|
|
echo $celda;
|
2006-06-29 21:29:20 +02:00
|
|
|
}
|
2007-03-02 18:56:07 +01:00
|
|
|
$real_count++;
|
2006-03-27 05:37:27 +02:00
|
|
|
}
|
2007-03-02 18:56:07 +01:00
|
|
|
echo "</tr>";
|
2006-12-08 17:57:43 +01:00
|
|
|
}
|
2007-03-02 18:56:07 +01:00
|
|
|
|
|
|
|
echo "</table>";
|
2006-12-08 17:57:43 +01:00
|
|
|
} else {
|
2007-03-02 18:56:07 +01:00
|
|
|
echo "<div class='nf'>".$lang_label["no_agent_def"]."</div>";
|
2006-07-05 15:33:13 +02:00
|
|
|
}
|
2007-03-02 18:56:07 +01:00
|
|
|
|
|
|
|
|
2007-06-17 17:05:30 +02:00
|
|
|
?>
|