<?php /** * Funtions real time. * * @category Realtime * @package Pandora FMS * @subpackage Community * @version 1.0.0 * @license See below * * ______ ___ _______ _______ ________ * | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __| * | __/| _ | | _ || _ | _| _ | | ___| |__ | * |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______| * * ============================================================================ * Copyright (c) 2005-2021 Artica Soluciones Tecnologicas * Please see http://pandorafms.org for full contribution list * 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 for 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. * ============================================================================ */ global $config; require_once $config['homedir'].'/include/graphs/fgraph.php'; require_once $config['homedir'].'/include/functions_snmp_browser.php'; /** * Real time charts. * * @return void */ function pandora_realtime_graphs() { global $config; check_login(); if ($config['style'] === 'pandora_black') { ui_require_css_file('pandora_black', 'include/styles/', true); } $id_network = get_parameter('id_network', 0); $action = get_parameter('action', 'list'); $onheader = []; $hide_header = get_parameter('hide_header', 0); if ($hide_header === 0) { // Header. ui_print_standard_header( __('Realtime graphs'), 'images/extensions.png', false, 'real_time_view', false, $onheader, [ [ 'link' => '', 'label' => __('Monitoring'), ], [ 'link' => '', 'label' => __('Views'), ], ] ); } $chart[time()]['graph'] = '0'; $interactive_graph = true; $color = []; $legend = ''; $long_index = []; $no_data_image = ''; $canvas = '<div id="graph_container" class="graph_container">'; $canvas .= '<div id="chartLegend" class="chartLegend"></div>'; $width = 800; $height = 300; $data_array['realtime']['data'][0][0] = (time() - 10); $data_array['realtime']['data'][0][1] = 0; $data_array['realtime']['data'][1][0] = time(); $data_array['realtime']['data'][1][1] = 0; $data_array['realtime']['color'] = 'green'; $params = [ 'agent_module_id' => false, 'period' => 300, 'width' => $width, 'height' => $height, 'unit' => $unit, 'only_image' => $only_image, 'homeurl' => $homeurl, 'type_graph' => 'area', 'font' => $config['fontpath'], 'font-size' => $config['font_size'], 'array_data_create' => $data_array, 'show_legend' => false, 'show_menu' => false, ]; $canvas .= grafico_modulo_sparse($params); $canvas .= '</div>'; echo $canvas; $table->width = '100%'; $table->id = 'table-form'; $table->class = 'databox filters'; $table->style = []; $table->cellpadding = '0'; $table->cellspacing = '0'; $table->style['graph'] = 'font-weight: bold;'; $table->style['refresh'] = 'font-weight: bold;'; $table->style['incremental'] = 'font-weight: bold;'; $table->style['reset'] = 'font-weight: bold;'; $table->style['snmp_address'] = 'font-weight: bold;'; $table->style['snmp_community'] = 'font-weight: bold;'; $table->style['snmp_oid'] = 'font-weight: bold;'; $table->style['snmp_oid'] = 'font-weight: bold;'; $table->data = []; $graph_fields['cpu_load'] = __('%s Server CPU', get_product_name()); $graph_fields['pending_packets'] = __( 'Pending packages from %s Server', get_product_name() ); $graph_fields['disk_io_wait'] = __( '%s Server Disk IO Wait', get_product_name() ); $graph_fields['apache_load'] = __( '%s Server Apache load', get_product_name() ); $graph_fields['mysql_load'] = __( '%s Server MySQL load', get_product_name() ); $graph_fields['server_load'] = __( '%s Server load', get_product_name() ); $graph_fields['snmp_interface'] = __('SNMP Interface throughput'); $graph = get_parameter('graph', 'cpu_load'); $refresh = get_parameter('refresh', '1000'); if ($graph != 'snmp_module') { $data['graph'] = __('Graph').' '; $data['graph'] .= html_print_select( $graph_fields, 'graph', $graph, '', '', 0, true ); } $refresh_fields[1000] = human_time_description_raw(1, true, 'large'); $refresh_fields[5000] = human_time_description_raw(5, true, 'large'); $refresh_fields[10000] = human_time_description_raw(10, true, 'large'); $refresh_fields[30000] = human_time_description_raw(30, true, 'large'); if ($graph == 'snmp_module') { $agent_alias = io_safe_output(get_parameter('agent_alias', '')); $module_name = io_safe_output(get_parameter('module_name', '')); $module_incremental = get_parameter('incremental', 0); $data['module_info'] = $agent_alias.': <b>'.$module_name.'</b>'; // Append all the hidden in this cell. $data['module_info'] .= html_print_input_hidden( 'incremental', $module_incremental, true ); $data['module_info'] .= html_print_select( ['snmp_module' => '-'], 'graph', 'snmp_module', '', '', 0, true, false, true, '', false, 'display: none;' ); } $data['refresh'] = __('Refresh interval').' '; $data['refresh'] .= html_print_select( $refresh_fields, 'refresh', $refresh, '', '', 0, true ); if ($graph != 'snmp_module') { $data['incremental'] = __('Incremental').' '; $data['incremental'] .= html_print_checkbox('incremental', 1, 0, true); } $data['reset'] = html_print_button( __('Clear graph'), 'reset', false, 'javascript:realtimeGraphs.clearGraph();', 'class="sub delete mgn_tp_0" ', true ); $table->data[] = $data; if ($graph == 'snmp_interface' || $graph == 'snmp_module') { echo snmp_browser_print_container(true, '100%', '60%', 'none'); } // Print the relative path to AJAX calls. html_print_input_hidden('rel_path', get_parameter('rel_path', '')); // Print the form. echo '<form id="realgraph" method="post">'; html_print_table($table); echo '</form>'; // Define a custom action to save // the OID selected in the SNMP browser to the form. html_print_input_hidden( 'custom_action', urlencode( base64_encode( ' <a href="javascript:realtimeGraphs.setOID();"><img src="'.ui_get_full_url('images').'/input_filter.disabled.png" title="'.__('Use this OID').'" class="vertical_middle"></img></a>' ) ), false ); html_print_input_hidden('incremental_base', '0'); echo '<script type="text/javascript" src="'.ui_get_full_url('include/javascript/pandora_snmp_browser.js').'"></script>'; echo '<script type="text/javascript" src="'.ui_get_full_url('extensions/realtime_graphs/realtime_graphs.js').'"></script>'; if ($config['style'] !== 'pandora_black') { echo '<link rel="stylesheet" type="text/css" href="'.ui_get_full_url('extensions/realtime_graphs/realtime_graphs.css').'"></style>'; } // Store servers timezone offset to be retrieved from js. set_js_value('timezone_offset', date('Z', time())); } extensions_add_operation_menu_option( __('Realtime graphs'), 'estado', null, 'v1r1', 'view' ); extensions_add_main_function('pandora_realtime_graphs'); $db = null;