2006-03-27 05:37:27 +02:00
< ? php
2008-08-22 20:07:32 +02:00
// Pandora FMS - the Flexible Monitoring System
// ============================================
// Copyright (c) 2008 Artica Soluciones Tecnologicas, http://www.artica.es
// Please see http://pandora.sourceforge.net for full contribution list
2008-04-17 17:27:25 +02:00
2006-07-09 16:20:10 +02:00
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
2008-08-22 20:07:32 +02:00
// as published by the Free Software Foundation for version 2.
2006-07-09 16:20:10 +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.
2006-03-27 05:37:27 +02:00
2008-08-22 20:07:32 +02:00
2006-03-27 05:37:27 +02:00
// Load global vars
2008-10-29 21:03:42 +01:00
require_once ( " include/config.php " );
2008-04-17 17:27:25 +02:00
2008-07-21 14:23:28 +02:00
check_login ();
2006-03-27 05:37:27 +02:00
2008-08-11 Esteban Sanchez <estebans@artica.es>
* include/functions_db.php: Added __ as an alias of lang_string().
* include/functions_reporting_pdf.php,
include/functions_reporting.php, include/functions.php,
include/functions_visual_map.php, index.php,
operation/incidents/incident.php,
operation/incidents/incident_detail.php,
operation/incidents/incident_note.php,
operation/incidents/incident_search.php,
operation/incidents/incident_statistics.php,
operation/snmpconsole/snmp_alert.php,
operation/snmpconsole/snmp_view.php, operation/users/user.php,
operation/users/user_edit.php, operation/users/user_statistics.php,
operation/events/event_statistics.php, operation/events/events.php,
operation/visual_console/render_view.php,
operation/visual_console/index.php, operation/extensions.php,
operation/agentes/estado_alertas.php,
operation/agentes/status_monitor.php,
operation/agentes/estado_grupo.php, operation/agentes/export_csv.php,
operation/agentes/datos_agente.php,
operation/agentes/estado_ultimopaquete.php,
operation/agentes/estado_generalagente.php,
operation/agentes/estado_agente.php, operation/agentes/bulbs.php,
operation/agentes/status_events.php, operation/agentes/sla_view.php,
operation/agentes/exportdata.php,
operation/agentes/estado_monitores.php,
operation/agentes/ver_agente.php, operation/agentes/estadisticas.php,
operation/agentes/tactical.php, operation/agentes/networkmap.php,
operation/messages/message.php,
operation/reporting/reporting_viewer.php,
operation/reporting/graph_viewer.php,
operation/reporting/custom_reporting.php,
operation/servers/view_server.php,
operation/servers/view_server_detail.php, operation/menu.php,
reporting/fgraph.php, reporting/stat_win.php, ajax.php,
general/logoff.php, general/pandora_help.php, general/footer.php,
general/noaccess.php, general/logon_failed.php,
general/links_menu.php, general/login_page.php, general/logon_ok.php,
general/header.php, general/main_menu.php,
godmode/groups/configure_group.php, godmode/groups/group_list.php,
godmode/setup/news.php, godmode/setup/links.php,
godmode/setup/setup.php, godmode/users/user_list.php,
godmode/users/configure_user.php, godmode/profiles/profile_list.php,
godmode/admin_access_logs.php, godmode/db/db_info_data.php,
godmode/db/db_main.php, godmode/db/db_audit.php,
godmode/db/db_sanity.php, godmode/db/db_refine.php,
godmode/db/db_info.php, godmode/db/db_event.php,
godmode/db/db_purge.php, godmode/extensions.php,
godmode/agentes/agent_template.php,
godmode/agentes/module_manager_editor_network.php,
godmode/agentes/module_manager_editor_wmi.php,
godmode/agentes/alert_manager.php,
godmode/agentes/module_manager_editor_plugin.php,
godmode/agentes/module_manager_editor_prediction.php,
godmode/agentes/alert_manager_editor.php,
godmode/agentes/manage_config.php,
godmode/agentes/module_manager_editor_data.php,
godmode/agentes/module_manager.php,
godmode/agentes/modificar_agente.php,
godmode/agentes/configurar_agente.php,
godmode/agentes/agent_disk_conf_editor.php,
godmode/agentes/planned_downtime.php,
godmode/agentes/manage_config_remote.php,
godmode/agentes/agent_manager.php,
godmode/modules/manage_network_components_form.php,
godmode/modules/manage_nc_groups_form.php,
godmode/modules/manage_network_templates.php,
godmode/modules/module_list.php,
godmode/modules/manage_network_templates_form.php,
godmode/modules/manage_network_components_form_network.php,
godmode/modules/manage_network_components_form_wmi.php,
godmode/modules/manage_network_components.php,
godmode/modules/manage_nc_groups.php,
godmode/reporting/reporting_builder.php,
godmode/reporting/map_builder.php,
godmode/reporting/graph_builder.php, godmode/servers/plugin.php,
godmode/servers/manage_recontask.php,
godmode/servers/modificar_server.php,
godmode/servers/manage_recontask_form.php,
godmode/alerts/modify_alert.php, godmode/alerts/configure_alert.php,
godmode/menu.php: Replaced $id_user with $config['id_user']. Use __a
instead of $lang_label to future use of gettext. Style
corrections.
* godmode/agentes/planned_downtime.php: Rewritten to use Pandora
functions and adopt the UI style. Replaced lang_string with __().
* pandoradb.sql: Fields in tplanned_downtime renamed to fit
guidelines.
git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@1005 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2008-08-11 12:59:07 +02:00
if ( ! give_acl ( $config [ 'id_user' ], 0 , " AR " ) && ! give_acl ( $config [ 'id_user' ], 0 , " AW " )) {
audit_db ( $config [ 'id_user' ], $REMOTE_ADDR , " ACL Violation " ,
" Trying to access Agent Management " );
require ( " general/noaccess.php " );
exit ;
2008-01-10 17:40:00 +01:00
}
2006-03-27 05:37:27 +02:00
2008-10-29 21:03:42 +01:00
echo " <h2> " . __ ( 'Pandora Agents' ) . " > " . __ ( 'Full list of Monitors' ) . " </h2> " ;
2008-01-10 17:40:00 +01:00
2008-04-17 17:27:25 +02:00
$ag_freestring = get_parameter ( " ag_freestring " , " " );
$ag_modulename = get_parameter ( " ag_modulename " , " " );
$ag_group = get_parameter ( " ag_group " , - 1 );
$offset = get_parameter ( " offset " , 0 );
2008-06-19 02:24:05 +02:00
$status = get_parameter ( " status " , 0 );
2008-01-10 17:40:00 +01:00
2008-10-29 21:03:42 +01:00
$url = '' ;
if ( $ag_group > 0 ) {
$url .= " &ag_group= " . $ag_group ;
}
if ( $ag_modulename != " " ) {
$url .= " &ag_modulename= " . $ag_modulename ;
}
if ( $ag_freestring != " " ) {
$url .= " &ag_freestring= " . $ag_freestring ;
}
if ( $status != 0 ) {
$url .= " &status= " . $status ;
}
2008-04-17 17:27:25 +02:00
2008-10-29 21:03:42 +01:00
echo '<form method="post" action="index.php?sec=estado&sec2=operation/agentes/status_monitor&refr=60' . $url . '">' ;
2008-04-17 17:27:25 +02:00
2008-10-29 21:03:42 +01:00
echo '<table cellspacing="4" cellpadding="4" width="600" class="databox">' ;
echo '<tr><td valign="middle">' . __ ( 'Group' ) . '</td>' ;
echo '<td valign="middle">' ;
2008-04-17 17:27:25 +02:00
2008-10-29 21:03:42 +01:00
print_select ( get_user_groups (), " ag_group " , $ag_group , 'this.form.submit();' , '' , '0' , false , false , false , 'w130' );
2008-06-19 02:24:05 +02:00
2008-10-29 21:03:42 +01:00
echo " </td> " ;
echo " <td> " . __ ( 'Monitor status' ) . " </td><td> " ;
2008-04-17 17:27:25 +02:00
2008-10-29 21:03:42 +01:00
$fields = array ();
$fields [ 0 ] = __ ( 'Monitors down' ); //default
$fields [ 1 ] = __ ( 'Monitors up' );
$fields [ 2 ] = __ ( 'Monitors unknown' );
2008-01-10 17:40:00 +01:00
2008-10-29 21:03:42 +01:00
print_select ( $fields , " status " , $status , 'this.form.submit();' , __ ( 'All' ), - 1 );
2008-01-10 17:40:00 +01:00
2008-10-29 21:03:42 +01:00
echo '</td></tr><tr><td valign="middle">' . __ ( 'Module name' ) . '</td>' ;
echo '<td valign="middle">' ;
2008-06-19 02:24:05 +02:00
2008-10-29 21:03:42 +01:00
$result = get_db_all_rows_sql ( " SELECT DISTINCT(nombre) FROM tagente_modulo WHERE id_tipo_modulo IN (2, 6, 9, 18, 21, 100) ORDER BY nombre " );
if ( $result === false ) {
$result = array ();
2008-06-19 02:24:05 +02:00
}
2008-10-29 21:03:42 +01:00
$fields = array ();
foreach ( $result as $row ) {
$fields [ $row [ " nombre " ]] = $row [ " nombre " ];
2008-01-10 17:40:00 +01:00
}
2008-04-17 17:27:25 +02:00
2008-10-29 21:03:42 +01:00
print_select ( $fields , " ag_modulename " , $ag_modulename , 'this.form.submit();' , __ ( 'All' ), " " );
2008-04-17 17:27:25 +02:00
2008-10-29 21:03:42 +01:00
echo '</td><td valign="middle">' . __ ( 'Free text' ) . '</td>' ;
2008-04-17 17:27:25 +02:00
2008-10-29 21:03:42 +01:00
echo '<td valign="middle">' ;
print_input_text ( " ag_freestring " , $ag_freestring , '' , 15 );
echo '</td><td valign="middle">' ;
print_submit_button ( __ ( 'Show' ), " uptbutton " , false , 'class="sub"' );
2008-04-17 17:27:25 +02:00
2008-10-29 21:03:42 +01:00
echo " </form> " ;
echo " </table> " ;
// Begin Build SQL sentences
$sql = " FROM tagente, tagente_modulo, tagente_estado
WHERE tagente . id_agente = tagente_modulo . id_agente
AND tagente_modulo . disabled = 0
AND tagente . disabled = 0
AND tagente_modulo . id_tipo_modulo IN ( 2 , 9 , 12 , 18 , 6 , 100 )
AND tagente_estado . id_agente_modulo = tagente_modulo . id_agente_modulo " ;
2008-04-17 17:27:25 +02:00
// Agent group selector
2008-10-29 21:03:42 +01:00
if ( $ag_group > 1 && give_acl ( $config [ " id_user " ], $ag_group , " AR " )) {
$sql .= sprintf ( " AND tagente.id_grupo = %d " , $ag_group );
} else {
2008-07-17 08:41:39 +02:00
// User has explicit permission on group 1 ?
2008-10-29 21:03:42 +01:00
$sql .= " AND tagente.id_grupo IN ( " . implode ( " , " , array_keys ( get_user_groups ())) . " ) " ;
2008-06-09 19:51:18 +02:00
}
2008-04-17 17:27:25 +02:00
// Module name selector
2008-10-29 21:03:42 +01:00
if ( $ag_modulename != " " ) {
$sql .= sprintf ( " AND tagente_modulo.nombre = '%s' " , $ag_modulename );
}
2008-04-17 17:27:25 +02:00
// Freestring selector
2008-10-29 21:03:42 +01:00
if ( $ag_freestring != " " ) {
$sql .= sprintf ( " AND (tagente.nombre LIKE '%%%s%%' OR tagente_modulo.nombre LIKE '%%%s%%' OR tagente_modulo.descripcion LIKE '%%%s%%') " , $ag_freestring , $ag_freestring , $ag_freestring );
}
2008-06-19 02:24:05 +02:00
// Status selector
2008-10-29 21:03:42 +01:00
if ( $status == 1 ) { //Up
$sql .= " AND tagente_estado.estado = 0 AND (UNIX_TIMESTAMP(NOW()) - tagente_estado.utimestamp) < (tagente_estado.current_interval * 2) " ;
} elseif ( $status == 0 ) { //Down
$sql .= " AND tagente_estado.estado = 1 " ;
} elseif ( $status == 2 ) { //Unknown
$sql .= " AND (UNIX_TIMESTAMP(NOW()) - tagente_estado.utimestamp) >= (tagente_estado.current_interval * 2) " ;
}
2008-06-19 02:24:05 +02:00
2008-10-29 21:03:42 +01:00
$sql .= " ORDER BY tagente.id_grupo, tagente.nombre " ;
2008-04-17 17:27:25 +02:00
// Build final SQL sentences
2008-10-29 21:03:42 +01:00
$count = get_db_sql ( " SELECT COUNT(tagente_modulo.id_agente_modulo) " . $sql );
$sql = " SELECT tagente_modulo.id_agente_modulo,
tagente . intervalo AS agent_interval ,
tagente . nombre AS agent_name ,
tagente_modulo . nombre AS module_name ,
tagente_modulo . flag AS flag ,
tagente . id_grupo AS id_group ,
tagente . id_agente AS id_agent ,
tagente_modulo . id_tipo_modulo AS module_type ,
tagente_modulo . module_interval ,
tagente_estado . datos ,
tagente_estado . utimestamp AS utimestamp " . $sql . " LIMIT " . $offset . " , " . $config["block_size"] ;
$result = get_db_all_rows_sql ( $sql );
if ( $count > $config [ " block_size " ]) {
pagination ( $count , " index.php?sec=estado&sec2=operation/agentes/status_monitor&refr=60 " . $url , $offset );
}
2008-04-17 17:27:25 +02:00
2008-10-29 21:03:42 +01:00
if ( $result === false ) {
$result = array ();
2008-07-17 08:41:39 +02:00
}
2008-10-29 21:03:42 +01:00
$table -> cellpadding = 4 ;
$table -> cellspacing = 4 ;
$table -> width = 750 ;
$table -> class = " databox " ;
$table -> head = array ();
$table -> data = array ();
$table -> size = array ();
$table -> align = array ();
$table -> head [ 0 ] = " " ;
$table -> align [ 0 ] = " center " ;
$table -> head [ 1 ] = __ ( 'Agent' );
$table -> head [ 2 ] = __ ( 'Type' );
$table -> align [ 2 ] = " center " ;
2008-07-17 08:41:39 +02:00
2008-10-29 21:03:42 +01:00
$table -> head [ 3 ] = __ ( 'Module Name' );
$table -> head [ 4 ] = __ ( 'Interval' );
$table -> align [ 4 ] = " center " ;
$table -> head [ 5 ] = __ ( 'Status' );
$table -> align [ 5 ] = " center " ;
$table -> head [ 6 ] = __ ( 'Timestamp' );
$table -> algin [ 6 ] = " center " ;
foreach ( $result as $row ) {
$data = array ();
//This should be processed locally. Don't rely on other URL's to do our dirty work. Maybe a process_agentmodule_flag function
$data [ 0 ] = '<a href="index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente=' . $row [ " id_agent " ] . '&id_agente_modulo=' . $row [ " id_agente_modulo " ] . '&flag=1&refr=60">' ;
if ( $row [ " flag " ] == 0 ) {
$data [ 0 ] .= '<img src="images/target.png" />' ;
} else {
$data [ 0 ] .= '<img src="images/refresh.png" />' ;
}
$data [ 0 ] .= '</a>' ;
$data [ 1 ] = '<strong><a href="index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente=' . $row [ " id_agent " ] . '">' ;
$data [ 1 ] .= strtoupper ( substr ( $row [ " agent_name " ], 0 , 25 ));
$data [ 1 ] .= '</a></strong>' ;
$data [ 2 ] = '<img src="images/' . show_icon_type ( $row [ " module_type " ]) . '" border="0" />' ;
$data [ 3 ] = substr ( $row [ " module_name " ], 0 , 30 );
$data [ 4 ] = $row [ " agent_interval " ];
if ( $row [ " datos " ] > 0 ) {
$data [ 5 ] = '<img src="images/pixel_green.png" width="40" height="18" title="' . __ ( 'Monitor up' ) . '">' ;
} else {
$data [ 5 ] = '<img src="images/pixel_red.png" width="40" height="18" title="' . __ ( 'Monitor down' ) . '">' ;
2008-07-17 08:41:39 +02:00
}
2008-10-29 21:03:42 +01:00
$seconds = time () - $row [ " utimestamp " ];
if ( $seconds >= ( $row [ " agent_interval " ] * 2 )) {
$data [ 6 ] = '<span class="redb">' ;
} else {
$data [ 6 ] = '<span>' ;
}
$data [ 6 ] .= human_time_comparation ( $row [ " utimestamp " ]);
$data [ 6 ] .= " </span> " ;
array_push ( $table -> data , $data );
}
if ( ! empty ( $table -> data )) {
print_table ( $table );
echo '<div style="width:700px;"><img src="images/pixel_green.png" width="40" height="18"> ' . __ ( 'Monitor up' ) . ' <img src="images/pixel_red.png" width="40" height="18"> ' . __ ( 'Monitor down' ) . '</div>' ;
2008-01-10 17:40:00 +01:00
} else {
2008-10-29 21:03:42 +01:00
echo '<div class="nf">' . __ ( 'This group doesn\'t have any monitor' ) . '</div>' ;
2008-01-10 17:40:00 +01:00
}
2007-07-28 20:11:48 +02:00
?>