2018-08-09 13:08:08 +02:00
< script type = " text/javascript " >
function effectFadeOut () {
2019-01-30 16:18:44 +01:00
$ ( '.content' ) . fadeOut ( 800 ) . fadeIn ( 800 )
2018-08-09 13:08:08 +02:00
}
$ ( document ) . ready ( function (){
2019-01-30 16:18:44 +01:00
setInterval ( effectFadeOut , 1600 );
2018-08-09 13:08:08 +02:00
});
</ script >
2009-06-01 16:41:00 +02:00
< ? php
// Pandora FMS - the Flexible Monitoring System
// ============================================
2010-11-08 15:37:51 +01:00
// Copyright (c) 2010 Artica Soluciones Tecnologicas, http://www.artica.es
2009-06-01 16:41:00 +02:00
// Please see http://pandora.sourceforge.net 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.
2018-08-09 13:08:08 +02:00
global $config ;
2019-01-30 16:18:44 +01:00
check_login ();
2018-08-09 13:08:08 +02:00
2019-01-30 16:18:44 +01:00
if ( ! check_acl ( $config [ 'id_user' ], 0 , 'PM' )) {
db_pandora_audit ( 'ACL Violation' , 'Trying to change License settings' );
include 'general/noaccess.php' ;
return ;
2018-08-09 13:08:08 +02:00
}
2019-01-30 16:18:44 +01:00
$update_settings = ( bool ) get_parameter_post ( 'update_settings' );
2018-08-09 13:08:08 +02:00
if ( $update_settings ) {
2019-01-30 16:18:44 +01:00
foreach ( $_POST [ 'keys' ] as $key => $value ) {
db_process_sql_update (
'tupdate_settings' ,
[ db_escape_key_identifier ( 'value' ) => $value ],
[ db_escape_key_identifier ( 'key' ) => $key ]
);
}
ui_print_success_message ( __ ( 'License updated' ));
2018-08-09 13:08:08 +02:00
}
ui_require_javascript_file_enterprise ( 'load_enterprise' );
enterprise_include_once ( 'include/functions_license.php' );
$license = enterprise_hook ( 'license_get_info' );
$rows = db_get_all_rows_in_table ( 'tupdate_settings' );
$settings = new StdClass ;
foreach ( $rows as $row ) {
2019-01-30 16:18:44 +01:00
$settings -> { $row [ 'key' ]} = $row [ 'value' ];
2018-08-09 13:08:08 +02:00
}
echo '<script type="text/javascript">' ;
2019-01-30 16:18:44 +01:00
if ( enterprise_installed ()) {
print_js_var_enteprise ();
}
2018-08-09 13:08:08 +02:00
echo '</script>' ;
2019-01-30 16:18:44 +01:00
function render_info ( $table )
{
global $console_mode ;
$info = db_get_sql ( " SELECT COUNT(*) FROM $table " );
render_row ( $info , " DB Table $table " );
2009-06-01 16:41:00 +02:00
}
2019-01-30 16:18:44 +01:00
function render_info_data ( $query , $label )
{
global $console_mode ;
$info = db_get_sql ( $query );
render_row ( $info , $label );
2009-06-01 16:41:00 +02:00
}
2019-01-30 16:18:44 +01:00
function render_row ( $data , $label )
{
global $console_mode ;
if ( $console_mode == 1 ) {
echo $label ;
echo '|' ;
echo $data ;
echo " \n " ;
} else {
echo '<tr>' ;
echo " <td style='padding:2px;border:0px;' width='60%'><div style='padding:5px;background-color:#f2f2f2;border-radius:2px;text-align:left;border:0px;'> " . $label ;
echo '</div></td>' ;
echo " <td style='font-weight:bold;padding:2px;border:0px;' width='40%'><div style='padding:5px;background-color:#f2f2f2;border-radius:2px;text-align:left;border:0px;'> " . $data ;
echo '</div></td>' ;
echo '</tr>' ;
}
2009-06-01 16:41:00 +02:00
}
2019-01-30 16:18:44 +01:00
function get_value_sum ( $arr )
{
foreach ( $arr as $clave ) {
foreach ( $clave as $valor ) {
2019-02-25 13:02:39 +01:00
if ( is_numeric ( $valor ) === true ) {
$result += $valor ;
}
2019-01-30 16:18:44 +01:00
}
}
return $result ;
2018-08-09 13:08:08 +02:00
}
2018-08-10 10:41:18 +02:00
2019-01-30 16:18:44 +01:00
function execution_time ()
{
$times = db_get_all_rows_sql ( 'SELECT datos FROM tagente_datos WHERE id_agente_modulo = 29 ORDER BY utimestamp DESC LIMIT 2' );
if ( $times [ 0 ][ 'datos' ] > ( $times [ 1 ][ 'datos' ] * 1.2 )) {
return " <a class= 'content' style= 'color: red;'>Warning Status</a><a>   The execution time could be degrading. For a more extensive information of this data consult the Execution Time graph</a> " ;
} else {
2019-04-29 15:17:59 +02:00
return " <a style ='color: green;'>Normal Status</a><a>   The execution time is correct. For more information about this data, check the Execution Time graph</a> " ;
2019-01-30 16:18:44 +01:00
}
2018-08-09 13:08:08 +02:00
}
2018-08-13 12:52:01 +02:00
2019-01-30 16:18:44 +01:00
function get_logs_size ( $file )
{
$file_name = '/var' . $file . '' ;
$size_server_log = filesize ( $file_name );
return $size_server_log ;
2018-08-09 13:08:08 +02:00
}
2019-01-30 16:18:44 +01:00
function get_status_logs ( $path )
{
$status_server_log = '' ;
2019-03-26 11:18:15 +01:00
$size_server_log = get_logs_size ( $path );
2019-02-18 16:25:30 +01:00
if ( $size_server_log <= 1048576 ) {
2019-01-30 16:18:44 +01:00
$status_server_log = " <a style ='color: green;text-decoration: none;'>Normal Status</a><a style ='text-decoration: none;'>   You have less than 10 MB of logs</a> " ;
} else {
$status_server_log = " <a class= 'content' style= 'color: red;text-decoration: none;'>Warning Status</a><a style ='text-decoration: none;'>   You have more than 10 MB of logs</a> " ;
}
return $status_server_log ;
2018-08-09 13:08:08 +02:00
}
2019-01-30 16:18:44 +01:00
function percentage_modules_per_agent ()
{
$status_average_modules = '' ;
$total_agents = db_get_value_sql ( 'SELECT count(*) FROM tagente' );
$total_modules = db_get_value_sql ( 'SELECT count(*) FROM tagente_modulo' );
$average_modules_per_agent = ( $total_modules / $total_agents );
if ( $average_modules_per_agent <= 40 ) {
2019-03-26 11:18:15 +01:00
$status_average_modules = " <a style ='color: green;text-decoration: none;'>Normal Status</a><a style ='text-decoration: none;'>   The average of modules per agent is less than 40</a> " ;
2019-01-30 16:18:44 +01:00
} else {
2019-03-26 11:18:15 +01:00
$status_average_modules = " <a class= 'content' style= 'color: red;text-decoration: none;'>Warning Status</a><a style ='text-decoration: none;'>  The average of modules per agent is more than 40. You can have performance problems</a> " ;
2019-01-30 16:18:44 +01:00
}
return $status_average_modules ;
2018-08-09 13:08:08 +02:00
}
2019-01-30 16:18:44 +01:00
function license_capacity ()
{
$license = enterprise_hook ( 'license_get_info' );
$license_limit = $license [ 'limit' ];
$status_license_capacity = '' ;
$current_count = db_get_value_sql ( 'SELECT count(*) FROM tagente' );
if ( $current_count > ( $license_limit * 90 / 100 )) {
2019-04-29 15:17:59 +02:00
$status_license_capacity = " <a class= 'content' style= 'color: red;text-decoration: none;'>Warning Status</a><a style ='text-decoration: none;'>   License capacity exceeds 90 percent</a> " ;
2019-01-30 16:18:44 +01:00
} else {
2019-04-29 15:17:59 +02:00
$status_license_capacity = " <a style= 'color: green;text-decoration: none;'>Normal Status</a><a style ='text-decoration: none;'>   License capacity is less than 90 percent</a> " ;
2019-01-30 16:18:44 +01:00
}
return $status_license_capacity ;
2018-08-09 13:08:08 +02:00
}
2019-01-30 16:18:44 +01:00
function status_license_params ( $license_param )
{
$status_license_par = '' ;
if ( $license_param <= 0 ) {
$status_license_par = 'OFF' ;
} else {
$status_license_par = 'ON' ;
}
return $status_license_par ;
2018-08-09 13:08:08 +02:00
}
2019-01-30 16:18:44 +01:00
function interval_average_of_network_modules ()
{
$total_network_modules = db_get_value_sql ( 'SELECT count(*) FROM tagente_modulo WHERE id_tipo_modulo BETWEEN 6 AND 18' );
$total_module_interval_time = db_get_value_sql ( 'SELECT SUM(module_interval) FROM tagente_modulo WHERE id_tipo_modulo BETWEEN 6 AND 18' );
$average_time = (( int ) $total_module_interval_time / $total_network_modules );
if ( $average_time < 180 ) {
2019-04-29 15:17:59 +02:00
$status_average_modules = " <a class= 'content' style= 'color: red;text-decoration: none;'>Warning Status</a><a style ='text-decoration: none;'>   The system is overloaded (average time $average_time ) and a very fine configuration is required</a> " ;
2019-01-30 16:18:44 +01:00
} else {
2019-04-29 15:17:59 +02:00
$status_average_modules = " <a style ='color: green;text-decoration: none;'>Normal Status</a><a style ='text-decoration: none;'>   The system is not overloaded (average time $average_time ) </a> " ;
2019-01-30 16:18:44 +01:00
}
if ( $average_time == 0 ) {
$status_average_modules = " <a style ='color: green;text-decoration: none;'>Normal Status</a><a style ='text-decoration: none;'>   The system has no load</a> " ;
}
return $status_average_modules ;
2018-08-09 13:08:08 +02:00
}
2019-01-30 16:18:44 +01:00
$attachment_total_files = count ( glob ( $config [ 'homedir' ] . '/attachment/{*.*}' , GLOB_BRACE ));
function files_attachment_folder ( $total_files )
{
if ( $total_files <= 700 ) {
2019-04-29 15:17:59 +02:00
$status_total_files = " <a style ='color: green;text-decoration: none;'>Normal Status</a><a style ='text-decoration: none;'>   The attached folder contains less than 700 files.</a> " ;
2019-01-30 16:18:44 +01:00
} else {
2019-04-29 15:17:59 +02:00
$status_total_files = " <a class= 'content' style= 'color: red;text-decoration: none;'>Warning Status</a><a style ='text-decoration: none;'>   The attached folder contains more than 700 files.</a> " ;
2019-01-30 16:18:44 +01:00
}
return $status_total_files ;
2018-08-09 13:08:08 +02:00
}
2019-01-30 16:18:44 +01:00
2018-08-09 13:08:08 +02:00
$tagente_datos_size = db_get_value_sql ( 'SELECT COUNT(*) FROM tagente_datos' );
2019-01-30 16:18:44 +01:00
function status_tagente_datos ( $tagente_datos_size )
{
if ( $tagente_datos_size <= 3000000 ) {
2019-04-29 15:17:59 +02:00
$tagente_datos_size = " <a style ='color: green;text-decoration: none;'>Normal Status</a><a style ='text-decoration: none;'>   The tagente_datos table contains an acceptable amount of data.</a> " ;
2019-01-30 16:18:44 +01:00
} else {
2019-04-29 15:17:59 +02:00
$tagente_datos_size = " <a class= 'content' style ='color: red;text-decoration: none;'>Warning Status</a><a>   The tagente_datos table contains too much data. A historical database is recommended.</a> " ;
2019-01-30 16:18:44 +01:00
}
return $tagente_datos_size ;
2018-08-09 13:08:08 +02:00
}
2019-01-30 16:18:44 +01:00
function status_values ( $val_rec , $val )
{
if ( $val_rec <= $val ) {
return $val . " <a style='text-decoration: none;'> (Min. Recommended Value </a> " . $val_rec . '<a>)</a>' ;
} else {
return $val . " <a style='text-decoration: none;'> (Min. Recommended Value </a> " . $val_rec . " <a>)</a><a class= 'content' style ='color: red;text-decoration: none;'> Warning Status</a> " ;
}
2018-08-13 12:52:01 +02:00
}
2019-01-30 16:18:44 +01:00
$tables_fragmentation = db_get_sql (
" SELECT (data_free/(index_length+data_length))
as frag_ratio from information_schema . tables where DATA_FREE > 0 and table_name = 'tagente_datos' and table_schema = 'pandora' "
);
$db_size = db_get_all_rows_sql (
' SELECT table_schema ,
2018-08-09 13:08:08 +02:00
ROUND ( SUM ( data_length + index_length ) / 1024 / 1024 , 3 )
FROM information_schema . TABLES
2019-01-30 16:18:44 +01:00
GROUP BY table_schema ; '
2018-08-09 13:08:08 +02:00
);
2018-08-10 10:41:18 +02:00
2019-01-30 16:18:44 +01:00
if ( strtoupper ( substr ( PHP_OS , 0 , 3 )) !== 'WIN' ) {
$total_server_threads = shell_exec ( 'ps -T aux | grep pandora_server | grep -v grep | wc -l' );
$percentage_threads_ram = shell_exec ( " ps axo pmem,cmd | grep pandora_server | awk ' { sum+= $ 1} END { print sum}' " );
$percentage_threads_cpu = shell_exec ( " ps axo pcpu,cmd | grep pandora_server | awk ' { sum+= $ 1} END { print sum}' " );
$innodb_buffer_pool_size_min_rec_value = shell_exec ( " cat /proc/meminfo | grep -i total | head -1 | awk ' { print $ (NF-1)*0.4/1024}' " );
2018-08-10 10:41:18 +02:00
}
2019-01-30 16:18:44 +01:00
$path_server_logs = '/log/pandora/pandora_server.log' ;
2019-03-26 11:18:15 +01:00
$path_err_logs = '/log/pandora/pandora_server.error' ;
2019-01-30 16:18:44 +01:00
$path_console_logs = '/www/html/pandora_console/pandora_console.log' ;
$innodb_log_file_size_min_rec_value = '64M' ;
$innodb_log_buffer_size_min_rec_value = '16M' ;
2018-08-09 13:08:08 +02:00
$innodb_flush_log_at_trx_commit_min_rec_value = 0 ;
2019-01-30 16:18:44 +01:00
$query_cache_limit_min_rec_value = 2 ;
2018-08-13 12:52:01 +02:00
$max_allowed_packet_min_rec_value = 32 ;
$innodb_buffer_pool_size_min_rec_value = shell_exec ( " cat /proc/meminfo | grep -i total | head -1 | awk ' { print $ (NF-1)*0.4/1024}' " );
$sort_buffer_size_min_rec_value = 32 ;
$join_buffer_size_min_rec_value = 265 ;
2019-01-30 16:18:44 +01:00
$query_cache_type_min_rec_value = 'ON' ;
2018-08-13 12:52:01 +02:00
$query_cache_size_min_rec_value = 24 ;
$innodb_lock_wait_timeout_max_rec_value = 120 ;
2018-08-09 13:08:08 +02:00
$tables_fragmentation_max_rec_value = 10 ;
2018-08-13 12:52:01 +02:00
$thread_cache_size_max_rec_value = 8 ;
$thread_stack_min_rec_value = 256 ;
$max_connections_max_rec_value = 150 ;
$key_buffer_size_min_rec_value = 256 ;
$read_buffer_size_min_rec_value = 32 ;
$read_rnd_buffer_size_min_rec_value = 32 ;
$query_cache_min_res_unit_min_rec_value = 2 ;
$innodb_file_per_table_min_rec_value = 0 ;
2018-08-09 13:08:08 +02:00
2019-01-30 16:18:44 +01:00
function status_fragmentation_tables ( $tables_fragmentation_max_rec_value , $tables_fragmentation )
{
$status_tables_frag = '' ;
if ( $tables_fragmentation > $tables_fragmentation_max_rec_value ) {
2019-04-29 15:17:59 +02:00
$status_tables_frag = " <a class= 'content' style ='color: red; text-decoration: none;'>Warning Status</a><a style ='text-decoration: none;'>   Table fragmentation is higher than recommended. They should be defragmented.</a> " ;
2019-01-30 16:18:44 +01:00
} else {
2019-04-29 15:17:59 +02:00
$status_tables_frag = " <a style ='color: green; text-decoration: none;'>Normal Status</a><a style ='text-decoration: none;'>   Table fragmentation is correct.</a> " ;
2019-01-30 16:18:44 +01:00
}
return $status_tables_frag ;
2018-08-09 13:08:08 +02:00
}
2009-06-01 16:41:00 +02:00
2019-01-30 16:18:44 +01:00
2009-06-01 16:41:00 +02:00
$console_mode = 1 ;
2019-01-30 16:18:44 +01:00
if ( ! isset ( $argc )) {
$console_mode = 0 ;
}
2009-06-01 16:41:00 +02:00
if ( $console_mode == 1 ) {
2019-01-30 16:18:44 +01:00
echo " \n Pandora FMS PHP diagnostic tool v3.2 (c) Artica ST 2009-2010 \n " ;
if ( $argc == 1 || in_array ( $argv [ 1 ], [ '--help' , '-help' , '-h' , '-?' ])) {
2019-04-29 15:17:59 +02:00
echo " \n This command line script contains information about Pandora FMS database.
This program can only be executed from the console , and it needs a parameter , the
full path to Pandora FMS 'config.php' file .
2009-06-01 16:41:00 +02:00
Usage :
php pandora_diag . php path_to_pandora_console
Example :
php pandora_diag . php / var / www / pandora_console
" ;
2019-01-30 16:18:44 +01:00
exit ;
}
if ( preg_match ( '/[^a-zA-Z0-9_\/\.]|(\/\/)|(\.\.)/' , $argv [ 1 ])) {
echo " Invalid path: $argv[1] . Always use absolute paths. " ;
exit ;
}
include $argv [ 1 ] . '/include/config.php' ;
} else {
if ( file_exists ( '../include/config.php' )) {
include '../include/config.php' ;
}
// Not from console, this is a web session
if (( ! isset ( $config [ 'id_user' ])) or ( ! check_acl ( $config [ 'id_user' ], 0 , 'PM' ))) {
echo " <h2>You don't have privileges to use diagnostic tool</h2> " ;
echo '<p>Please login with an administrator account before try to use this tool</p>' ;
exit ;
}
// Header
ui_print_page_header ( __ ( 'Pandora FMS Diagnostic tool' ), '' , false , '' , true );
echo " <table width='1000px' border='0' style='border:0px;' class='databox data' cellpadding='4' cellspacing='4'> " ;
echo " <tr><th style='background-color:#b1b1b1;font-weight:bold;font-style:italic;border-radius:2px;' align=center colspan='2'> " . __ ( 'Pandora status info' ) . '</th></tr>' ;
}
render_row ( $build_version , 'Pandora FMS Build' );
render_row ( $pandora_version , 'Pandora FMS Version' );
render_info_data ( " SELECT value FROM tconfig where token ='MR' " , 'Minor Release' );
render_row ( $config [ 'homedir' ], 'Homedir' );
render_row ( $config [ 'homeurl' ], 'HomeUrl' );
render_info_data (
" SELECT `value`
2017-10-04 19:02:45 +02:00
FROM tconfig
2019-01-30 16:18:44 +01:00
WHERE `token` = 'enterprise_installed' " ,
'Enterprise installed'
);
$full_key = db_get_sql (
" SELECT value
2017-10-04 19:02:45 +02:00
FROM tupdate_settings
2019-01-30 16:18:44 +01:00
WHERE `key` = 'customer_key' "
);
$compressed_key = substr ( $full_key , 0 , 5 ) . '...' . substr ( $full_key , - 5 );
render_row ( $compressed_key , 'Update Key' );
render_info_data (
" SELECT value
2017-10-04 19:02:45 +02:00
FROM tupdate_settings
2019-01-30 16:18:44 +01:00
WHERE `key` = 'updating_code_path' " ,
'Updating code path'
);
render_info_data (
" SELECT value
2017-10-04 19:02:45 +02:00
FROM tupdate_settings
2019-01-30 16:18:44 +01:00
WHERE `key` = 'current_update' " ,
'Current Update #'
);
2017-10-04 19:02:45 +02:00
2019-01-30 16:18:44 +01:00
echo " <tr><th style='background-color:#b1b1b1;font-weight:bold;font-style:italic;border-radius:2px;' align=center colspan='2'> " . __ ( 'PHP setup' ) . '</th></tr>' ;
2017-10-04 19:02:45 +02:00
2019-01-30 16:18:44 +01:00
render_row ( phpversion (), 'PHP Version' );
2009-06-01 16:41:00 +02:00
2019-01-30 16:18:44 +01:00
render_row ( ini_get ( 'max_execution_time' ) . ' seconds' , 'PHP Max execution time' );
2017-10-04 19:02:45 +02:00
2019-01-30 16:18:44 +01:00
render_row ( ini_get ( 'max_input_time' ) . ' seconds' , 'PHP Max input time' );
2017-10-04 19:02:45 +02:00
2019-01-30 16:18:44 +01:00
render_row ( ini_get ( 'memory_limit' ), 'PHP Memory limit' );
2017-10-04 19:02:45 +02:00
2019-01-30 16:18:44 +01:00
render_row ( ini_get ( 'session.cookie_lifetime' ), 'Session cookie lifetime' );
2017-10-04 19:02:45 +02:00
2019-01-30 16:18:44 +01:00
echo " <tr><th style='background-color:#b1b1b1;font-weight:bold;font-style:italic;border-radius:2px;' align=center colspan='2'> " . __ ( 'Database size stats' ) . '</th></tr>' ;
2017-10-04 19:02:45 +02:00
2019-01-30 16:18:44 +01:00
render_info_data ( 'SELECT COUNT(*) FROM tagente' , 'Total agents' );
render_info_data ( 'SELECT COUNT(*) FROM tagente_modulo' , 'Total modules' );
render_info_data ( 'SELECT COUNT(*) FROM tgrupo' , 'Total groups' );
render_info_data ( 'SELECT COUNT(*) FROM tagente_datos' , 'Total module data records' );
render_info_data ( 'SELECT COUNT(*) FROM tagent_access' , 'Total agent access record' );
render_info_data ( 'SELECT COUNT(*) FROM tevento' , 'Total events' );
2017-10-04 19:02:45 +02:00
2019-01-30 16:18:44 +01:00
if ( $config [ 'enterprise_installed' ]) {
render_info_data ( 'SELECT COUNT(*) FROM ttrap' , 'Total traps' );
}
2017-10-04 19:02:45 +02:00
2019-01-30 16:18:44 +01:00
render_info_data ( 'SELECT COUNT(*) FROM tusuario' , 'Total users' );
render_info_data ( 'SELECT COUNT(*) FROM tsesion' , 'Total sessions' );
2017-10-04 19:02:45 +02:00
2019-01-30 16:18:44 +01:00
echo " <tr><th style='background-color:#b1b1b1;font-weight:bold;font-style:italic;border-radius:2px;' align=center colspan='2'> " . __ ( 'Database sanity' ) . '</th></tr>' ;
render_info_data (
' SELECT COUNT ( DISTINCT tagente . id_agente )
2017-10-04 19:02:45 +02:00
FROM tagente_estado , tagente , tagente_modulo
WHERE tagente . disabled = 0
AND tagente_modulo . id_agente_modulo = tagente_estado . id_agente_modulo
AND tagente_modulo . disabled = 0
AND tagente_estado . id_agente = tagente . id_agente
2019-01-30 16:18:44 +01:00
AND tagente_estado . estado = 3 ' ,
'Total unknown agents'
);
render_info_data (
' SELECT COUNT ( tagente_estado . estado )
2017-10-09 15:36:28 +02:00
FROM tagente_estado
2019-01-30 16:18:44 +01:00
WHERE tagente_estado . estado = 4 ' ,
'Total not-init modules'
);
2017-10-04 19:02:45 +02:00
2019-01-30 16:18:44 +01:00
$last_run_difference = '' ;
2017-10-04 19:02:45 +02:00
2019-01-30 16:18:44 +01:00
$diferencia = ( time () - date (
db_get_sql (
" SELECT `value`
2017-10-04 19:02:45 +02:00
FROM tconfig
2019-01-30 16:18:44 +01:00
WHERE `token` = 'db_maintance' "
)
));
$last_run_difference_months = 0 ;
$last_run_difference_weeks = 0 ;
$last_run_difference_days = 0 ;
$last_run_difference_minutos = 0 ;
$last_run_difference_seconds = 0 ;
while ( $diferencia >= 2419200 ) {
$diferencia -= 2419200 ;
$last_run_difference_months ++ ;
}
while ( $diferencia >= 604800 ) {
$diferencia -= 604800 ;
$last_run_difference_weeks ++ ;
}
while ( $diferencia >= 86400 ) {
$diferencia -= 86400 ;
$last_run_difference_days ++ ;
}
while ( $diferencia >= 3600 ) {
$diferencia -= 3600 ;
$last_run_difference_hours ++ ;
}
while ( $diferencia >= 60 ) {
$diferencia -= 60 ;
$last_run_difference_minutes ++ ;
}
$last_run_difference_seconds = $diferencia ;
if ( $last_run_difference_months > 0 ) {
$last_run_difference .= $last_run_difference_months . 'month/s ' ;
}
if ( $last_run_difference_weeks > 0 ) {
$last_run_difference .= $last_run_difference_weeks . ' week/s ' ;
}
if ( $last_run_difference_days > 0 ) {
$last_run_difference .= $last_run_difference_days . ' day/s ' ;
}
if ( $last_run_difference_hours > 0 ) {
$last_run_difference .= $last_run_difference_hours . ' hour/s ' ;
}
if ( $last_run_difference_minutes > 0 ) {
$last_run_difference .= $last_run_difference_minutes . ' minute/s ' ;
}
$last_run_difference .= $last_run_difference_seconds . ' second/s ago' ;
render_row (
date (
'Y/m/d H:i:s' ,
db_get_sql (
" SELECT `value`
FROM tconfig
WHERE `token` = 'db_maintance' "
)
) . ' (' . $last_run_difference . ')' . ' *' ,
'PandoraDB Last run'
);
echo " <tr><th style='background-color:#b1b1b1;font-weight:bold;font-style:italic;border-radius:2px;' align=center colspan='2'> " . __ ( 'Database status info' ) . '</th></tr>' ;
switch ( $config [ 'dbtype' ]) {
case 'mysql' :
render_info_data (
" SELECT `value`
FROM tconfig
WHERE `token` = 'db_scheme_first_version' " ,
'DB Schema Version (first installed)'
);
render_info_data (
" SELECT `value`
FROM tconfig
WHERE `token` = 'db_scheme_version' " ,
'DB Schema Version (actual)'
);
render_info_data (
" SELECT `value`
FROM tconfig
WHERE `token` = 'db_scheme_build' " ,
'DB Schema Build'
);
2017-10-04 19:02:45 +02:00
2019-01-30 16:18:44 +01:00
render_row ( get_value_sum ( $db_size ) . 'M' , 'DB Size' );
2017-10-04 19:02:45 +02:00
2019-01-30 16:18:44 +01:00
if ( strtoupper ( substr ( PHP_OS , 0 , 3 )) !== 'WIN' ) {
echo " <tr><th style='background-color:#b1b1b1;font-weight:bold;font-style:italic;border-radius:2px;' align=center colspan='2'> " . __ ( 'System info' ) . '</th></tr>' ;
2017-10-04 19:02:45 +02:00
2019-01-30 16:18:44 +01:00
$output = 'cat /proc/cpuinfo | grep "model name" | tail -1 | cut -f 2 -d ":"' ;
$output2 = 'cat /proc/cpuinfo | grep "processor" | wc -l' ;
2017-10-04 19:02:45 +02:00
2019-01-30 16:18:44 +01:00
render_row ( exec ( $output ) . ' x ' . exec ( $output2 ), 'CPU' );
2017-10-04 19:02:45 +02:00
2019-01-30 16:18:44 +01:00
$output = 'cat /proc/meminfo | grep "MemTotal"' ;
2017-10-04 19:02:45 +02:00
2019-01-30 16:18:44 +01:00
render_row ( exec ( $output ), 'RAM' );
}
break ;
2010-02-19 Sancho Lerena <slerena@artica.es>
* functions_events.php: Fixed typo (switched meaning) in two labels.
* include/styles/pandora.css: Changed background color of th default style.
* include/functions_reporting.php: Improved function get_group_stats(). Now
supports stats from batch-mode and get realtime stats in a more efficient
way. Fixed get_fired_alerts_reporting_table() to avoid problems in external
reporting (PDF & XML).
* include/functions_servers.php: get_server_performance() now uses batch mode
stats reporting, and improved also the realtime stats generation. Same with
function get_server_info().
* include/functions_config.php: Added new config tokens (not fully
implemented yet) for event, trap, strings and audit automatic purge.
* include/functions_ui.php: Added new print_page_header() function to set
the new standard header in all pages, using the "tabbed" format to show
the title, subtitle and other options like help, or custom-tabs for the page
* pandoradb.sql: Added tserver.stat_utimestamp field. Added indexes to
tsession table. Fixed typo in field name in tgroup_stat: agents_uknown to
agents_unknown.
* extensions/ext_backup: New directory to place "deleted" extensions.
* extensions/dbmanager/dbmanager.css: Table names now are in it's original
lowercase/uppercase format.
* extensions/dbmanager.php: Updated headers, and now return "empty" when
a search is empty, instead "error" as before.
* extensions/users_connected.php
extensions/module_groups.php
extensions/plugin_registration.php
extensions/pandora_logs.php
operation/incidents/incident.php
operation/snmpconsole/snmp_view.php
operation/users/user.php
operation/users/user_edit.php
godmode/agentes/planned_downtime.php
operation/events/events.php
operation/visual_console/index.php
operation/agentes/estado_generalagente.php
operation/agentes/estado_agente.php
operation/agentes/exportdata.php
operation/agentes/ver_agente.php
operation/agentes/status_monitor.php
operation/agentes/alerts_status.php
operation/users/user_statistics.php: Added new header format.
* operation/agentes/estado_grupo.php: Removed old group view.
* operation/agentes/tactical.php: Adapted to use new realtime/batch
statistical system. Placed events above server info. Showing only pending
events and other minor changes.
* operation/agentes/group_view.php: NEW screen, replacing old one. Probably
most ugly, but much more useful than before.
* operation/agentes/networkmap.php: Added title.
* operation/messages/message.php: Added title and adding some exists in
code was missing before.
* operation/reporting/reporting_viewer.php: Added title.
* operation/reporting/graph_viewer.php: Added title.
* operation/reporting/custom_reporting.php: Added title.
* operation/servers/view_server.php:
* operation/menu.php: Replaced old group view with new (this has english
name). Removed autorefresh "by default" in server view.
* extras/pandoradb_migrate_v3.0_to_v3.1.sql: Fixed typo.
* extras/pandora_diag.php: Minor changes, removed some info and added other.
* general/logon_ok.php: Minor aesthetic changes.
* general/header.php: Fixed missing ";"
* operation/extensions.php,
godmode/extensions.php: Added support for delete extensions.
* godmode/menu.php: New setup items.
* godmode/setup/setup.php,
godmode/setup/performance.php,
godmode/setup/setup_visuals.php: Reordered setup options, new setup section
"Performance", added new performance options to set "realtime" statistics
or "batchmode" with it's own interval. Some setup info is now shared with
the servers (but it it's any change in setup, servers should be restarted
anyway).
git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@2390 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2010-02-19 16:16:03 +01:00
2019-01-30 16:18:44 +01:00
case 'postgresql' :
render_info_data (
" SELECT \" value \"
2012-08-17 13:39:25 +02:00
FROM tconfig
2019-01-30 16:18:44 +01:00
WHERE \ " token \" = 'db_scheme_version' " ,
'DB Schema Version'
);
render_info_data (
" SELECT \" value \"
2015-07-22 11:24:50 +02:00
FROM tconfig
2019-01-30 16:18:44 +01:00
WHERE \ " token \" = 'db_scheme_build' " ,
'DB Schema Build'
);
render_info_data (
" SELECT \" value \"
2012-08-17 13:39:25 +02:00
FROM tconfig
2019-01-30 16:18:44 +01:00
WHERE \ " token \" = 'enterprise_installed' " ,
'Enterprise installed'
);
render_row (
date (
'Y/m/d H:i:s' ,
db_get_sql (
" SELECT \" value \"
FROM tconfig WHERE \ " token \" = 'db_maintance' "
)
),
'PandoraDB Last run'
);
render_info_data (
" SELECT value
2012-08-17 13:39:25 +02:00
FROM tupdate_settings
2019-01-30 16:18:44 +01:00
WHERE \ " key \" = 'customer_key'; " ,
'Update Key'
);
render_info_data (
" SELECT value
2012-08-17 13:39:25 +02:00
FROM tupdate_settings
2019-01-30 16:18:44 +01:00
WHERE \ " key \" = 'updating_code_path' " ,
'Updating code path'
);
render_info_data (
" SELECT value
2012-08-17 13:39:25 +02:00
FROM tupdate_settings
2019-01-30 16:18:44 +01:00
WHERE \ " key \" = 'current_update' " ,
'Current Update #'
);
break ;
case 'oracle' :
render_info_data (
" SELECT value
2015-10-19 19:44:26 +02:00
FROM tconfig
2019-01-30 16:18:44 +01:00
WHERE token = 'db_scheme_version' " ,
'DB Schema Version'
);
render_info_data (
" SELECT value
2015-10-19 19:44:26 +02:00
FROM tconfig
2019-01-30 16:18:44 +01:00
WHERE token = 'db_scheme_build' " ,
'DB Schema Build'
);
render_info_data (
" SELECT value
2015-10-19 19:44:26 +02:00
FROM tconfig
2019-01-30 16:18:44 +01:00
WHERE token = 'enterprise_installed' " ,
'Enterprise installed'
);
render_row (
db_get_sql (
" SELECT value
2015-10-19 19:44:26 +02:00
FROM tconfig
2019-01-30 16:18:44 +01:00
WHERE token = 'db_maintance' "
),
'PandoraDB Last run'
);
render_info_data (
'SELECT ' . db_escape_key_identifier ( 'value' ) . " FROM tupdate_settings
WHERE \ " key \" = 'customer_key' " ,
'Update Key'
);
render_info_data (
'SELECT ' . db_escape_key_identifier ( 'value' ) . " FROM tupdate_settings
WHERE \ " key \" = 'updating_code_path' " ,
'Updating code path'
);
render_info_data (
'SELECT ' . db_escape_key_identifier ( 'value' ) . " FROM tupdate_settings
WHERE \ " key \" = 'current_update' " ,
'Current Update #'
);
break ;
}
$innodb_log_file_size = ( db_get_value_sql ( 'SELECT @@innodb_log_file_size' ) / 1048576 );
$innodb_log_buffer_size = ( db_get_value_sql ( 'SELECT @@innodb_log_buffer_size' ) / 1048576 );
$innodb_flush_log_at_trx_commit = db_get_value_sql ( 'SELECT @@innodb_flush_log_at_trx_commit' );
$max_allowed_packet = ( db_get_value_sql ( 'SELECT @@max_allowed_packet' ) / 1048576 );
$innodb_buffer_pool_size = ( db_get_value_sql ( 'SELECT @@innodb_buffer_pool_size' ) / 1024 );
$sort_buffer_size = number_format (( db_get_value_sql ( 'SELECT @@sort_buffer_size' ) / 1024 ), 2 );
$join_buffer_size = ( db_get_value_sql ( 'SELECT @@join_buffer_size' ) / 1024 );
$query_cache_type = db_get_value_sql ( 'SELECT @@query_cache_type' );
$query_cache_size = ( db_get_value_sql ( 'SELECT @@query_cache_size' ) / 1048576 );
$query_cache_limit = ( db_get_value_sql ( 'SELECT @@query_cache_limit' ) / 1048576 );
$innodb_lock_wait_timeout = db_get_value_sql ( 'SELECT @@innodb_lock_wait_timeout' );
$thread_cache_size = db_get_value_sql ( 'SELECT @@thread_cache_size' );
$thread_stack = ( db_get_value_sql ( 'SELECT @@thread_stack' ) / 1024 );
$max_connections = db_get_value_sql ( 'SELECT @@max_connections' );
$key_buffer_size = ( db_get_value_sql ( 'SELECT @@key_buffer_size' ) / 1024 );
$read_buffer_size = ( db_get_value_sql ( 'SELECT @@read_buffer_size' ) / 1024 );
$read_rnd_buffer_size = ( db_get_value_sql ( 'SELECT @@read_rnd_buffer_size' ) / 1024 );
$query_cache_min_res_unit = ( db_get_value_sql ( 'SELECT @@query_cache_min_res_unit' ) / 1024 );
$innodb_file_per_table = db_get_value_sql ( 'SELECT @@innodb_file_per_table' );
echo " <tr><th style='background-color:#b1b1b1;font-weight:bold;font-style:italic;border-radius:2px;' align=center colspan='2'> " . __ ( 'MySQL Performance metrics' ) . '</th></tr>' ;
render_row ( status_values ( $innodb_log_file_size_min_rec_value , $innodb_log_file_size ), 'InnoDB log file size ' , 'InnoDB log file size ' );
render_row ( status_values ( $innodb_log_buffer_size_min_rec_value , $innodb_log_buffer_size ), 'InnoDB log buffer size ' , 'InnoDB log buffer size ' );
render_row ( status_values ( $innodb_flush_log_at_trx_commit_min_rec_value , $innodb_flush_log_at_trx_commit ), 'InnoDB flush log at trx-commit ' , 'InnoDB flush log at trx-commit ' );
render_row ( status_values ( $max_allowed_packet_min_rec_value , $max_allowed_packet ), 'Maximun allowed packet ' , 'Maximun allowed packet ' );
render_row ( status_values ( $innodb_buffer_pool_size_min_rec_value , $innodb_buffer_pool_size ), 'InnoDB buffer pool size ' , 'InnoDB buffer pool size ' );
render_row ( status_values ( $sort_buffer_size_min_rec_value , $sort_buffer_size ), 'Sort buffer size ' , 'Sort buffer size ' );
render_row ( status_values ( $join_buffer_size_min_rec_value , $join_buffer_size ), 'Join buffer size ' , 'Join buffer size ' );
render_row ( status_values ( $query_cache_type_min_rec_value , $query_cache_type ), 'Query cache type ' , 'Query cache type ' );
render_row ( status_values ( $query_cache_size_min_rec_value , $query_cache_size ), 'Query cache size ' , 'Query cache size ' );
render_row ( status_values ( $query_cache_limit_min_rec_value , $query_cache_limit ), 'Query cache limit ' , 'Query cache limit ' );
render_row ( status_values ( $innodb_lock_wait_timeout_max_rec_value , $innodb_lock_wait_timeout ), 'InnoDB lock wait timeout ' , 'InnoDB lock wait timeout ' );
render_row ( status_values ( $thread_cache_size_max_rec_value , $thread_cache_size ), 'Thread cache size ' , 'Thread cache size ' );
render_row ( status_values ( $thread_stack_min_rec_value , $thread_stack ), 'Thread stack ' , 'Thread stack ' );
render_row ( status_values ( $max_connections_max_rec_value , $max_connections ), 'Maximum connections ' , 'Maximun connections ' );
render_row ( status_values ( $key_buffer_size_min_rec_value , $key_buffer_size ), 'Key buffer size ' , 'Key buffer size ' );
render_row ( status_values ( $read_buffer_size_min_rec_value , $read_buffer_size ), 'Read buffer size ' , 'Read buffer size ' );
render_row ( status_values ( $read_rnd_buffer_size_min_rec_value , $read_rnd_buffer_size ), 'Read rnd-buffer size ' , 'Read rnd-buffer size ' );
render_row ( status_values ( $query_cache_min_res_unit_min_rec_value , $query_cache_min_res_unit ), 'Query cache min-res-unit ' , 'Query cache min-res-unit ' );
render_row ( status_values ( $innodb_file_per_table_min_rec_value , $innodb_file_per_table ), 'InnoDB file per table ' , 'InnoDB file per table ' );
2019-02-18 16:25:30 +01:00
echo " <tr><th style='background-color:#b1b1b1;font-weight:bold;font-style:italic;border-radius:2px;' align=center colspan='2'> " . __ ( 'Tables fragmentation in the Pandora FMS database' ) . '</th></tr>' ;
2019-01-30 16:18:44 +01:00
render_row ( $tables_fragmentation_max_rec_value . '%' , 'Tables fragmentation (maximum recommended value)' );
render_row ( number_format ( $tables_fragmentation , 2 ) . '%' , 'Tables fragmentation (current value)' );
2019-04-29 15:17:59 +02:00
render_row ( status_fragmentation_tables ( $tables_fragmentation_max_rec_value , $tables_fragmentation ), 'Table fragmentation status' );
2019-01-30 16:18:44 +01:00
2019-02-18 16:25:30 +01:00
echo " <tr><th style='background-color:#b1b1b1;font-weight:bold;font-style:italic;border-radius:2px;' align=center colspan='2'> " . __ ( ' Pandora FMS logs dates' ) . '</th></tr>' ;
2019-01-30 16:18:44 +01:00
2019-02-18 16:25:30 +01:00
render_row ( number_format (( get_logs_size ( $path_server_logs ) / 1048576 ), 3 ) . 'M' , 'Size server logs (current value)' );
2019-01-30 16:18:44 +01:00
render_row ( get_status_logs ( $path_server_logs ), 'Status server logs' );
2019-03-26 11:18:15 +01:00
render_row ( number_format (( get_logs_size ( $path_err_logs ) / 1048576 ), 3 ) . 'M' , 'Size error logs (current value)' );
render_row ( get_status_logs ( $path_err_logs ), 'Status error logs' );
2019-02-18 16:25:30 +01:00
render_row ( number_format (( get_logs_size ( $path_console_logs ) / 1048576 ), 3 ) . 'M' , 'Size console logs (current value)' );
2019-01-30 16:18:44 +01:00
render_row ( get_status_logs ( $path_console_logs ), 'Status console logs' );
2019-02-18 16:25:30 +01:00
echo " <tr><th style='background-color:#b1b1b1;font-weight:bold;font-style:italic;border-radius:2px;' align=center colspan='2'> " . __ ( ' Pandora FMS Licence Information' ) . '</th></tr>' ;
2019-01-30 16:18:44 +01:00
render_row ( html_print_textarea ( 'keys[customer_key]' , 10 , 255 , $settings -> customer_key , 'style="height:40px; width:450px;"' , true ), 'Customer key' );
render_row ( $license [ 'expiry_date' ], 'Expires' );
render_row ( $license [ 'limit' ] . ' agents' , 'Platform Limit' );
render_row ( $license [ 'count' ] . ' agents' , 'Current Platform Count' );
render_row ( $license [ 'count_enabled' ] . ' agents' , 'Current Platform Count (enabled: items)' );
render_row ( $license [ 'count_disabled' ] . ' agents' , 'Current Platform Count (disabled: items)' );
render_row ( $license [ 'license_mode' ], 'License Mode' );
render_row ( status_license_params ( $license [ 'nms' ]), 'Network Management System' );
render_row ( status_license_params ( $license [ 'dhpm' ]), 'Satellite' );
render_row ( $license [ 'licensed_to' ], 'Licensed to' );
render_row ( license_capacity (), 'Status of agents capacity' );
render_row ( percentage_modules_per_agent (), 'Status of average modules per agent' );
render_row ( interval_average_of_network_modules (), 'Interval average of the network modules' );
echo " <tr><th style='background-color:#b1b1b1;font-weight:bold;font-style:italic;border-radius:2px;' align=center colspan='2'> " . __ ( ' Status of the attachment folder' ) . '</th></tr>' ;
2019-04-29 15:17:59 +02:00
render_row ( $attachment_total_files , 'Total files in the attached folder' );
2019-01-30 16:18:44 +01:00
render_row ( files_attachment_folder ( $attachment_total_files ), 'Status of the attachment folder' );
echo " <tr><th style='background-color:#b1b1b1;font-weight:bold;font-style:italic;border-radius:2px;' align=center colspan='2'> " . __ ( ' Information from the tagente_datos table' ) . '</th></tr>' ;
2019-04-29 15:17:59 +02:00
render_row ( $tagente_datos_size , 'Total data in tagente_datos table' );
render_row ( status_tagente_datos ( $tagente_datos_size ), 'Tangente_datos table status' );
render_row ( execution_time (), 'Execution time degradation when executing a count' );
2019-01-30 16:18:44 +01:00
echo " <tr><th style='background-color:#b1b1b1;font-weight:bold;font-style:italic;border-radius:2px;' align=center colspan='2'> " . __ ( ' Pandora FMS server threads' ) . '</th></tr>' ;
render_row ( $total_server_threads , 'Total server threads' );
render_row ( $percentage_threads_ram . '%' , 'Percentage of threads used by the RAM' );
render_row ( $percentage_threads_cpu . '%' , 'Percentage of threads used by the CPU' );
echo " <tr><th style='background-color:#b1b1b1;font-weight:bold;font-style:italic;border-radius:2px;' align=center colspan='2'> " . __ ( ' Graphs modules that represent the self-monitoring system' ) . '</th></tr>' ;
$server_name = db_get_value_sql ( 'SELECT name FROM tserver WHERE master = 1' );
$agent_id = db_get_value_sql ( " SELECT id_agente FROM tagente WHERE nombre = ' $server_name ' " );
$id_modules = agents_get_modules ( $agent_id );
$id_modules = [
modules_get_agentmodule_id ( 'Agents_Unknown' , $agent_id ),
modules_get_agentmodule_id ( 'Database Maintenance' , $agent_id ),
modules_get_agentmodule_id ( 'FreeDisk_SpoolDir' , $agent_id ),
modules_get_agentmodule_id ( 'Free_RAM' , $agent_id ),
modules_get_agentmodule_id ( 'Queued_Modules' , $agent_id ),
modules_get_agentmodule_id ( 'Status' , $agent_id ),
modules_get_agentmodule_id ( 'System_Load_AVG' , $agent_id ),
modules_get_agentmodule_id ( 'Execution_time' , $agent_id ),
];
foreach ( $id_modules as $id_module ) {
$params = [
'agent_module_id' => $id_module [ 'id_agente_modulo' ],
'period' => SECONDS_1MONTH ,
'date' => time (),
'height' => '150' ,
];
render_row ( grafico_modulo_sparse ( $params ), 'Graph of the ' . $id_module [ 'nombre' ] . ' module.' );
}
if ( $console_mode == 0 ) {
echo '</table>' ;
}
echo " <hr color='#b1b1b1' size=1 width=1000 align=left> " ;
echo '<span>' . __ (
2019-04-29 15:17:59 +02:00
' ( * ) Please check your Pandora Server setup and make sure that the database maintenance daemon is running . It\ ' is very important to
keep the database up - to - date to get the best performance and results in Pandora '
2019-01-30 16:18:44 +01:00
) . '</span><br><br><br>' ;