log statistics module, fixed several errors

This commit is contained in:
Ulf Gebhardt 2013-12-23 23:20:01 +01:00
parent 51ad6f8cff
commit 5a6294bdb6
7 changed files with 349 additions and 161 deletions

View File

@ -11,11 +11,11 @@ class ConnectionMYS extends ConnectionAbstr {
$this->connection = mysqli_connect($dbinfo->m_host, $dbinfo->m_user, $dbinfo->m_password, $new_link, $client_flag);
if(!$this->connection){
throw new \Exception('Could not connect to Database. Check ur Database Settings');}
throw new \SYSTEM\LOG\ERROR('Could not connect to Database. Check ur Database Settings');}
if(!mysqli_select_db($this->connection, $dbinfo->m_database)){
mysqli_close($this->connection);
throw new \Exception('Could not select Database. Check ur Database Settings: '.mysqli_error($this->connection));}
throw new \SYSTEM\LOG\ERROR('Could not select Database. Check ur Database Settings: '.mysqli_error($this->connection));}
}
public function __destruct(){
@ -24,7 +24,7 @@ class ConnectionMYS extends ConnectionAbstr {
public function prepare($stmtName, $stmt, $values){
$prepStmt = \mysqli_prepare($this->connection, $stmt);
if(!$prepStmt){
throw new \Exception('Prepared Statement prepare fail: '. \mysqli_error($this->connection));}
throw new \SYSTEM\LOG\ERROR('Prepared Statement prepare fail: '. \mysqli_error($this->connection));}
$types = '';
$binds = array($prepStmt,null);
@ -36,7 +36,7 @@ class ConnectionMYS extends ConnectionAbstr {
\call_user_func_array('mysqli_stmt_bind_param', $binds);
if(!mysqli_stmt_execute($prepStmt)){
throw new \Exception("Could not execute prepare statement: ". \mysqli_stmt_error($prepStmt));}
throw new \SYSTEM\LOG\ERROR("Could not execute prepare statement: ". \mysqli_stmt_error($prepStmt));}
return new ResultMysqliPrepare($prepStmt);
}
@ -47,7 +47,7 @@ class ConnectionMYS extends ConnectionAbstr {
public function query($query){
$result = mysqli_query($this->connection, $query);
if(!$result){
throw new \Exception('Could not query Database. Check ur Query Syntax or required Rights: '.mysqli_error($this->connection));}
throw new \SYSTEM\LOG\ERROR('Could not query Database. Check ur Query Syntax or required Rights: '.mysqli_error($this->connection));}
if($result === TRUE){
return TRUE;}

View File

@ -32,5 +32,7 @@ INSERT INTO system.api ("ID", "group", type, "parentID", "parentValue", name, ve
INSERT INTO system.api ("ID", "group", type, "parentID", "parentValue", name, verify) VALUES (50, 42, 3, 3, 'filter', 'filter', 'STRING');
INSERT INTO system.api ("ID", "group", type, "parentID", "parentValue", name, verify) VALUES (51, 42, 3, 3, 'error', 'error', 'INT');
INSERT INTO system.api ("ID", "group", type, "parentID", "parentValue", name, verify) VALUES (52, 42, 0, 3, 'stats', 'name', null);
INSERT INTO system.api ("ID", "group", type, "parentID", "parentValue", name, verify) VALUES (53, 42, 3, 52, null, 'filter', 'UINT');
INSERT INTO system.api ("ID", "group", type, "parentID", "parentValue", name, verify) VALUES (300, 42, 4, -1, NULL, '_lang', 'LANG');

View File

@ -18,8 +18,8 @@ function load_log_tab(action){
$('img#loader').hide();});
return;
case 'stats':
$('#tab_stats').load(SAI_ENDPOINT+'sai_mod=.SYSTEM.SAI.saimod_sys_log&action='+action, function(){
drawVisualization();
$('#tab_stats').load(SAI_ENDPOINT+'sai_mod=.SYSTEM.SAI.saimod_sys_log&action='+action, function(){
register_stats();
$('img#loader').hide();});
return;
case 'admin':
@ -58,6 +58,31 @@ function register_log(){
load_table_log($(this).attr('filter'));
});
}
var filter_time = 604800;
var last_active = "#basic_tab";
function register_stats(){
filter_time = 604800;
$('#stats_tabs a').click(function (e) {
e.preventDefault();
$(this).tab('show');
last_active = $(this).attr('href');
$($(this).attr('href')+' .visualisation').each(function(){
load_visualisation($(this).attr('id'),filter_time);
});
});
$("#stats_filter a").click(function(){
$('#stats_filter li').each(function(){
$(this).removeClass('active');});
$(this).parent().addClass('active');
filter_time = $(this).attr('filter');
$(last_active+' .visualisation').each(function(){
load_visualisation($(this).attr('id'),filter_time);
});
});
$('#basic_tab .visualisation').each(function(){
load_visualisation($(this).attr('id'),filter_time);
});
}
function register_admin(){
$('#truncate_table').click(function(){
@ -76,107 +101,28 @@ function register_admin(){
});
}
function drawVisualization() {
function load_visualisation(id, filter){
$('img#loader').show();
$.getJSON(SAI_ENDPOINT+'sai_mod=.SYSTEM.SAI.saimod_sys_log&action=visualization',function(json){
if(!json || json.status != true){
$.getJSON(SAI_ENDPOINT+'sai_mod=.SYSTEM.SAI.saimod_sys_log&action=stats&name='+id+'&filter='+filter,function(json){
if(!json || json.status != true || !json.result){
$('img#loader').hide();
return;
}
}
json = json.result;
var data1 = new google.visualization.DataTable();
data1.addColumn('date', 'day');
data1.addColumn('number', 'count');
//data.addColumn('string', 'from to');
data1.addColumn('number', 'file_unique');
data1.addColumn('number', 'ip_unique');
data1.addColumn('number', 'text_unique');
data1.addColumn('number', 'class_unique');
var data2 = new google.visualization.DataTable();
data2.addColumn('date', 'day');
data2.addColumn('number', 'count');
data2.addColumn('number', 'querytime avg');
data2.addColumn('number', 'querytime max');
data2.addColumn('number', 'querytime min');
var data3 = new google.visualization.DataTable();
data3.addColumn('date', 'day');
data3.addColumn('number', 'count');
data3.addColumn('number', 'class_info');
data3.addColumn('number', 'class_deprecated');
data3.addColumn('number', 'class_warning');
data3.addColumn('number', 'class_error');
data3.addColumn('number', 'class_apperror');
var data4 = new google.visualization.DataTable();
data4.addColumn('date', 'day');
data4.addColumn('number', 'count');
data4.addColumn('number', 'class_system_log_info');
data4.addColumn('number', 'class_system_log_deprecated');
data4.addColumn('number', 'class_system_log_warning');
data4.addColumn('number', 'class_system_log_error');
data4.addColumn('number', 'class_system_log_errorexception');
data4.addColumn('number', 'class_system_log_shutdownexception');
var data5 = new google.visualization.DataTable();
data5.addColumn('date', 'day');
data5.addColumn('number', 'count');
data5.addColumn('number', 'class_exception');
data5.addColumn('number', 'class_runtimeexception');
data5.addColumn('number', 'class_errorexception');
data5.addColumn('number', 'class_other');
$.each(json, function(key, value){
data1.addRow([ new Date(value.day),
parseInt(value.count),
parseInt(value.file_unique),
parseInt(value.ip_unique),
parseInt(value.text_unique),
parseInt(value.class_unique)]);
data2.addRow([ new Date(value.day),
parseInt(value.count),
parseFloat(value.querytime_avg),
parseFloat(value.querytime_max),
parseFloat(value.querytime_min)]);
data3.addRow([ new Date(value.day),
parseInt(value.count),
parseInt(value.class_info)+0.5,
parseInt(value.class_deprecated)+0.5,
parseInt(value.class_warning)+0.5,
parseInt(value.class_error)+0.5,
parseInt(value.class_apperror)+0.5]);
data4.addRow([ new Date(value.day),
parseInt(value.count),
parseInt(value.class_system_log_info)+0.5,
parseInt(value.class_system_log_deprecated)+0.5,
parseInt(value.class_system_log_warning)+0.5,
parseInt(value.class_system_log_error)+0.5,
parseInt(value.class_system_log_errorexception)+0.5,
parseInt(value.class_system_log_shutdownexception)+0.5]);
data5.addRow([ new Date(value.day),
parseInt(value.count),
parseInt(value.class_exception)+0.5,
parseInt(value.class_runtimeexception)+0.5,
parseInt(value.class_errorexception)+0.5,
parseInt(value.count)+0.5 - parseInt(value.class_info) - parseInt(value.class_deprecated) - parseInt(value.class_warning) - parseInt(value.class_error) - parseInt(value.class_apperror) - parseInt(value.class_system_log_info) - parseInt(value.class_system_log_deprecated) - parseInt(value.class_system_log_warning) - parseInt(value.class_system_log_error) - parseInt(value.class_system_log_errorexception) - parseInt(value.class_system_log_shutdownexception) - parseInt(value.class_exception) - parseInt(value.class_runtimeexception) - parseInt(value.class_errorexception)]);
});
// Create and draw the visualization.
var options = {title: 'Exception Occurrence', aggregationTarget: 'category', selectionMode: 'multiple', /*focusTarget: 'category',*/ chartArea:{left:100,top:40}, vAxis:{logScale: true}, interpolateNulls: false, width: "1400", height: "500"};
new google.visualization.LineChart(document.getElementById('visualization1')).draw(data1, options);
var options = {title: 'Exception Querytime', /*focusTarget: 'category',*/ chartArea:{left:100,top:40}, vAxis:{logScale: true}, interpolateNulls: false, width: "1400", height: "500"};
new google.visualization.LineChart(document.getElementById('visualization2')).draw(data2, options);
var options = {title: 'Exception Classes - basic', /*focusTarget: 'category',*/ chartArea:{left:100,top:40}, vAxis:{logScale: true}, interpolateNulls: false, width: "1400", height: "500"};
new google.visualization.LineChart(document.getElementById('visualization3')).draw(data3, options);
var options = {title: 'Exception Classes - system', /*focusTarget: 'category',*/ chartArea:{left:100,top:40}, vAxis:{logScale: true}, interpolateNulls: false, width: "1400", height: "500"};
new google.visualization.LineChart(document.getElementById('visualization4')).draw(data4, options);
var options = {title: 'Exception Classes - other', /*focusTarget: 'category',*/ chartArea:{left:100,top:40}, vAxis:{logScale: true}, interpolateNulls: false, width: "1400", height: "500"};
new google.visualization.LineChart(document.getElementById('visualization5')).draw(data5, options);
$('img#loader').hide();
});
var data = new google.visualization.DataTable();
first = true;
$.each(json[0], function(key, value){
if(first){
data.addColumn('datetime',key);
first = false;
} else {
data.addColumn('number',key);
}
});
$.each(json, function(key, value){first = true; data.addRow($.map(value, function(v) { if(first){first=false;return [new Date(v)];}else{return [(v == null || parseFloat(v) <= 0) ? 0.1 : parseFloat(v)];}}));});
var options = {title: id, aggregationTarget: 'category', selectionMode: 'multiple', /*focusTarget: 'category',*/ chartArea:{left:100,top:40}, vAxis:{logScale: true}, interpolateNulls: false, width: "1200", height: "500"};
new google.visualization.LineChart(document.getElementById(id)).draw(data, options);
});
}

View File

@ -24,74 +24,279 @@ class saimod_sys_log extends \SYSTEM\SAI\SaiModule {
return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_log/saimod_sys_log_admin.tpl'), $vars);
}
public static function sai_mod__SYSTEM_SAI_saimod_sys_log_action_visualization(){
public static function sai_mod__SYSTEM_SAI_saimod_sys_log_action_stats_name_class_system($filter){
$con = new \SYSTEM\DB\Connection(\SYSTEM\system::getSystemDBInfo());
if(\SYSTEM\system::isSystemDbInfoPG()){
$res = $con->query('SELECT '.\SYSTEM\DBD\system_log::FIELD_TIME.'::date as day,'
.'min('.\SYSTEM\DBD\system_log::FIELD_TIME.') as time_min,'
.'max('.\SYSTEM\DBD\system_log::FIELD_TIME.') as time_max,'
$res = $con->query('SELECT to_timestamp(extract(epoch from '.\SYSTEM\DBD\system_log::FIELD_TIME.')::int - (extract(epoch from '.\SYSTEM\DBD\system_log::FIELD_TIME.')::int % '.$filter.')) as day,'
.'count(*) as count,'
.'avg('.\SYSTEM\DBD\system_log::FIELD_QUERYTIME.') as querytime_avg,'
.'max('.\SYSTEM\DBD\system_log::FIELD_QUERYTIME.') as querytime_max,'
.'min('.\SYSTEM\DBD\system_log::FIELD_QUERYTIME.') as querytime_min,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_FILE.') as file_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_IP.') as ip_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_MESSAGE.') as text_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_CLASS.') as class_unique,'
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'INFO\' then 1 else 0 end) class_INFO,'
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'DEPRECATED\' then 1 else 0 end) class_DEPRECATED,'
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'WARNING\' then 1 else 0 end) class_WARNING,'
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'ERROR\' then 1 else 0 end) class_ERROR,'
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'AppError\' then 1 else 0 end) class_AppError,'
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'SYSTEM\LOG\COUNTER\' then 1 else 0 end) class_SYSTEM_LOG_COUNTER,'
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'SYSTEM\LOG\INFO\' then 1 else 0 end) class_SYSTEM_LOG_INFO,'
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'SYSTEM\LOG\DEPRECATED\' then 1 else 0 end) class_SYSTEM_LOG_DEPRECATED,'
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'SYSTEM\LOG\WARNING\' then 1 else 0 end) class_SYSTEM_LOG_WARNING,'
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'SYSTEM\LOG\ERROR\' then 1 else 0 end) class_SYSTEM_LOG_ERROR,'
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'SYSTEM\LOG\ERROR_EXCEPTION\' then 1 else 0 end) class_SYSTEM_LOG_ERROR_EXCEPTION,'
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'SYSTEM\LOG\SHUTDOWN_EXCEPTION\' then 1 else 0 end) class_SYSTEM_LOG_SHUTDOWN_EXCEPTION,'
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'SYSTEM\LOG\SHUTDOWN_EXCEPTION\' then 1 else 0 end) class_SYSTEM_LOG_SHUTDOWN_EXCEPTION'
.' FROM '.\SYSTEM\DBD\system_log::NAME_PG
.' GROUP BY day'
.' ORDER BY day DESC'
.' LIMIT 30;');
} else {
}
$result = array();
while($row = $res->next()){
$result[] = $row;}
return \SYSTEM\LOG\JsonResult::toString($result);
}
public static function sai_mod__SYSTEM_SAI_saimod_sys_log_action_stats_name_class_other($filter){
$con = new \SYSTEM\DB\Connection(\SYSTEM\system::getSystemDBInfo());
if(\SYSTEM\system::isSystemDbInfoPG()){
$res = $con->query('SELECT to_timestamp(extract(epoch from '.\SYSTEM\DBD\system_log::FIELD_TIME.')::int - (extract(epoch from '.\SYSTEM\DBD\system_log::FIELD_TIME.')::int % '.$filter.')) as day,'
.'count(*) as count,'
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'Exception\' then 1 else 0 end) class_Exception,'
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'RuntimeException\' then 1 else 0 end) class_RuntimeException,'
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'ErrorException\' then 1 else 0 end) class_ErrorException'
.' FROM '.\SYSTEM\DBD\system_log::NAME_PG
.' GROUP BY day'
.' ORDER BY day DESC'
.' LIMIT 365;');
} else {
$res = $con->query('SELECT DATE('.\SYSTEM\DBD\system_log::FIELD_TIME.') as day,'
.'min('.\SYSTEM\DBD\system_log::FIELD_TIME.') as time_min,'
.'max('.\SYSTEM\DBD\system_log::FIELD_TIME.') as time_max,'
.'count(*) as count,'
.'avg('.\SYSTEM\DBD\system_log::FIELD_QUERYTIME.') as querytime_avg,'
.'max('.\SYSTEM\DBD\system_log::FIELD_QUERYTIME.') as querytime_max,'
.'min('.\SYSTEM\DBD\system_log::FIELD_QUERYTIME.') as querytime_min,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_FILE.') as file_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_IP.') as ip_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_MESSAGE.') as text_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_CLASS.') as class_unique,'
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'INFO\' then 1 else 0 end) class_INFO,'
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'DEPRECATED\' then 1 else 0 end) class_DEPRECATED,'
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'WARNING\' then 1 else 0 end) class_WARNING,'
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'ERROR\' then 1 else 0 end) class_ERROR,'
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'AppError\' then 1 else 0 end) class_AppError,'
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'SYSTEM\LOG\INFO\' then 1 else 0 end) class_SYSTEM_LOG_INFO,'
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'SYSTEM\LOG\DEPRECATED\' then 1 else 0 end) class_SYSTEM_LOG_DEPRECATED,'
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'SYSTEM\LOG\WARNING\' then 1 else 0 end) class_SYSTEM_LOG_WARNING,'
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'SYSTEM\LOG\ERROR\' then 1 else 0 end) class_SYSTEM_LOG_ERROR,'
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'SYSTEM\LOG\ERROR_EXCEPTION\' then 1 else 0 end) class_SYSTEM_LOG_ERROR_EXCEPTION,'
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'SYSTEM\LOG\SHUTDOWN_EXCEPTION\' then 1 else 0 end) class_SYSTEM_LOG_SHUTDOWN_EXCEPTION,'
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'Exception\' then 1 else 0 end) class_Exception,'
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'RuntimeException\' then 1 else 0 end) class_RuntimeException,'
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'ErrorException\' then 1 else 0 end) class_ErrorException'
.' FROM '.\SYSTEM\DBD\system_log::NAME_MYS
.' GROUP BY day'
.' ORDER BY day DESC'
.' LIMIT 365;');
.' LIMIT 30;');
} else {
}
$result = array();
while($row = $res->next()){
$result[] = $row;}
return \SYSTEM\LOG\JsonResult::toString($result);
return \SYSTEM\LOG\JsonResult::toString($result);
}
public static function sai_mod__SYSTEM_SAI_saimod_sys_log_action_stats_name_class_basic($filter){
$con = new \SYSTEM\DB\Connection(\SYSTEM\system::getSystemDBInfo());
if(\SYSTEM\system::isSystemDbInfoPG()){
$res = $con->query('SELECT to_timestamp(extract(epoch from '.\SYSTEM\DBD\system_log::FIELD_TIME.')::int - (extract(epoch from '.\SYSTEM\DBD\system_log::FIELD_TIME.')::int % '.$filter.')) as day,'
.'count(*) as count,'
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'ERROR\' then 1 else 0 end) class_ERROR,'
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'WARNING\' then 1 else 0 end) class_WARNING,'
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'INFO\' then 1 else 0 end) class_INFO,'
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'DEPRECATED\' then 1 else 0 end) class_DEPRECATED,'
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'AppError\' then 1 else 0 end) class_AppError'
.' FROM '.\SYSTEM\DBD\system_log::NAME_PG
.' GROUP BY day'
.' ORDER BY day DESC'
.' LIMIT 30;');
} else {
}
$result = array();
while($row = $res->next()){
$result[] = $row;}
return \SYSTEM\LOG\JsonResult::toString($result);
}
public static function sai_mod__SYSTEM_SAI_saimod_sys_log_action_stats_name_basic_sucess($filter){
$con = new \SYSTEM\DB\Connection(\SYSTEM\system::getSystemDBInfo());
if(\SYSTEM\system::isSystemDbInfoPG()){
$res = $con->query('SELECT to_timestamp(extract(epoch from '.\SYSTEM\DBD\system_log::FIELD_TIME.')::int - (extract(epoch from '.\SYSTEM\DBD\system_log::FIELD_TIME.')::int % '.$filter.')) as day,'
.'count(*) as count,'
.'sum(case when not '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'SYSTEM\LOG\COUNTER\' and'
.' not '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'SYSTEM\LOG\INFO\' and'
.' not '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'INFO\' and'
.' not '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'SYSTEM\LOG\DEPRECATED\' and'
.' not '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'EPRECATED\' '
.'then 1 else 0 end) class_fail,'
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'SYSTEM\LOG\INFO\' or '
.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'SYSTEM\LOG\INFO\' or '
.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'INFO\' or '
.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'SYSTEM\LOG\DEPRECATED\' or '
.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'EPRECATED\' '
.'then 1 else 0 end) class_log,'
.'sum(case when '.\SYSTEM\DBD\system_log::FIELD_CLASS.' = \'SYSTEM\LOG\COUNTER\' then 1 else 0 end) class_sucess'
.' FROM '.\SYSTEM\DBD\system_log::NAME_PG
.' GROUP BY day'
.' ORDER BY day DESC'
.' LIMIT 30;');
} else {
}
$result = array();
while($row = $res->next()){
$result[] = $row;}
return \SYSTEM\LOG\JsonResult::toString($result);
}
public static function sai_mod__SYSTEM_SAI_saimod_sys_log_action_stats_name_basic_querytime($filter){
$con = new \SYSTEM\DB\Connection(\SYSTEM\system::getSystemDBInfo());
if(\SYSTEM\system::isSystemDbInfoPG()){
$res = $con->query('SELECT to_timestamp(extract(epoch from '.\SYSTEM\DBD\system_log::FIELD_TIME.')::int - (extract(epoch from '.\SYSTEM\DBD\system_log::FIELD_TIME.')::int % '.$filter.')) as day,'
.'count(*) as count,'
.'avg('.\SYSTEM\DBD\system_log::FIELD_QUERYTIME.') as querytime_avg,'
.'max('.\SYSTEM\DBD\system_log::FIELD_QUERYTIME.') as querytime_max,'
.'min('.\SYSTEM\DBD\system_log::FIELD_QUERYTIME.') as querytime_min,'
.'variance('.\SYSTEM\DBD\system_log::FIELD_QUERYTIME.') as querytime_var'
.' FROM '.\SYSTEM\DBD\system_log::NAME_PG
.' GROUP BY day'
.' ORDER BY day DESC'
.' LIMIT 30;');
} else {
}
$result = array();
while($row = $res->next()){
$result[] = $row;}
return \SYSTEM\LOG\JsonResult::toString($result);
}
public static function sai_mod__SYSTEM_SAI_saimod_sys_log_action_stats_name_unique_basic($filter){
$con = new \SYSTEM\DB\Connection(\SYSTEM\system::getSystemDBInfo());
if(\SYSTEM\system::isSystemDbInfoPG()){
$res = $con->query('SELECT to_timestamp(extract(epoch from '.\SYSTEM\DBD\system_log::FIELD_TIME.')::int - (extract(epoch from '.\SYSTEM\DBD\system_log::FIELD_TIME.')::int % '.$filter.')) as day,'
.'count(*) as count,'
.'count(distinct "'.\SYSTEM\DBD\system_log::FIELD_USER.'") as user_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_IP.') as ip_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_FILE.') as file_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_LINE.') as line_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_TRACE.') as trace_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_MESSAGE.') as text_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_CLASS.') as class_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_QUERYTIME.') as querytime_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_TIME.') as time_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_SERVER_NAME.') as server_name_unique'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_SERVER_PORT.') as server_port_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_REQUEST_URI.') as request_uri_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_POST.') as post_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_HTTP_REFERER.') as http_referer_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_HTTP_USER_AGENT.') as http_user_agent_unique'
.' FROM '.\SYSTEM\DBD\system_log::NAME_PG
.' GROUP BY day'
.' ORDER BY day DESC'
.' LIMIT 30;');
} else {
}
$result = array();
while($row = $res->next()){
$result[] = $row;}
return \SYSTEM\LOG\JsonResult::toString($result);
}
public static function sai_mod__SYSTEM_SAI_saimod_sys_log_action_stats_name_unique_request($filter){
$con = new \SYSTEM\DB\Connection(\SYSTEM\system::getSystemDBInfo());
if(\SYSTEM\system::isSystemDbInfoPG()){
$res = $con->query('SELECT to_timestamp(extract(epoch from '.\SYSTEM\DBD\system_log::FIELD_TIME.')::int - (extract(epoch from '.\SYSTEM\DBD\system_log::FIELD_TIME.')::int % '.$filter.')) as day,'
.'count(*) as count,'
//.'count(distinct "'.\SYSTEM\DBD\system_log::FIELD_USER.'") as user_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_IP.') as ip_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_FILE.') as file_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_LINE.') as line_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_TRACE.') as trace_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_MESSAGE.') as text_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_CLASS.') as class_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_QUERYTIME.') as querytime_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_TIME.') as time_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_SERVER_NAME.') as server_name_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_SERVER_PORT.') as server_port_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_REQUEST_URI.') as request_uri_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_POST.') as post_unique'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_HTTP_REFERER.') as http_referer_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_HTTP_USER_AGENT.') as http_user_agent_unique'
.' FROM '.\SYSTEM\DBD\system_log::NAME_PG
.' GROUP BY day'
.' ORDER BY day DESC'
.' LIMIT 30;');
} else {
}
$result = array();
while($row = $res->next()){
$result[] = $row;}
return \SYSTEM\LOG\JsonResult::toString($result);
}
public static function sai_mod__SYSTEM_SAI_saimod_sys_log_action_stats_name_unique_exception($filter){
$con = new \SYSTEM\DB\Connection(\SYSTEM\system::getSystemDBInfo());
if(\SYSTEM\system::isSystemDbInfoPG()){
$res = $con->query('SELECT to_timestamp(extract(epoch from '.\SYSTEM\DBD\system_log::FIELD_TIME.')::int - (extract(epoch from '.\SYSTEM\DBD\system_log::FIELD_TIME.')::int % '.$filter.')) as day,'
.'count(*) as count,'
//.'count(distinct "'.\SYSTEM\DBD\system_log::FIELD_USER.'") as user_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_IP.') as ip_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_FILE.') as file_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_LINE.') as line_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_TRACE.') as trace_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_MESSAGE.') as text_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_CLASS.') as class_unique'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_QUERYTIME.') as querytime_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_TIME.') as time_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_SERVER_NAME.') as server_name_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_SERVER_PORT.') as server_port_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_REQUEST_URI.') as request_uri_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_POST.') as post_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_HTTP_REFERER.') as http_referer_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_HTTP_USER_AGENT.') as http_user_agent_unique'
.' FROM '.\SYSTEM\DBD\system_log::NAME_PG
.' GROUP BY day'
.' ORDER BY day DESC'
.' LIMIT 30;');
} else {
}
$result = array();
while($row = $res->next()){
$result[] = $row;}
return \SYSTEM\LOG\JsonResult::toString($result);
}
public static function sai_mod__SYSTEM_SAI_saimod_sys_log_action_stats_name_unique_referer($filter){
$con = new \SYSTEM\DB\Connection(\SYSTEM\system::getSystemDBInfo());
if(\SYSTEM\system::isSystemDbInfoPG()){
$res = $con->query('SELECT to_timestamp(extract(epoch from '.\SYSTEM\DBD\system_log::FIELD_TIME.')::int - (extract(epoch from '.\SYSTEM\DBD\system_log::FIELD_TIME.')::int % '.$filter.')) as day,'
.'count(*) as count,'
.'count(distinct "'.\SYSTEM\DBD\system_log::FIELD_USER.'") as user_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_IP.') as ip_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_FILE.') as file_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_LINE.') as line_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_TRACE.') as trace_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_MESSAGE.') as text_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_CLASS.') as class_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_QUERYTIME.') as querytime_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_TIME.') as time_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_SERVER_NAME.') as server_name_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_SERVER_PORT.') as server_port_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_REQUEST_URI.') as request_uri_unique,'
//.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_POST.') as post_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_HTTP_REFERER.') as http_referer_unique,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_HTTP_USER_AGENT.') as http_user_agent_unique'
.' FROM '.\SYSTEM\DBD\system_log::NAME_PG
.' GROUP BY day'
.' ORDER BY day DESC'
.' LIMIT 30;');
} else {
}
$result = array();
while($row = $res->next()){
$result[] = $row;}
return \SYSTEM\LOG\JsonResult::toString($result);
}
public static function sai_mod__SYSTEM_SAI_saimod_sys_log_action_stats_name_basic_visitor($filter){
$con = new \SYSTEM\DB\Connection(\SYSTEM\system::getSystemDBInfo());
if(\SYSTEM\system::isSystemDbInfoPG()){
$res = $con->query('SELECT to_timestamp(extract(epoch from '.\SYSTEM\DBD\system_log::FIELD_TIME.')::int - (extract(epoch from '.\SYSTEM\DBD\system_log::FIELD_TIME.')::int % '.$filter.')) as day,'
.'count(*) as count,'
.'count(distinct "'.\SYSTEM\DBD\system_log::FIELD_USER.'") as user_unique,'
//.'variance(distinct "'.\SYSTEM\DBD\system_log::FIELD_USER.'") as user_var,'
.'count(distinct '.\SYSTEM\DBD\system_log::FIELD_IP.') as ip_unique'
.' FROM '.\SYSTEM\DBD\system_log::NAME_PG
.' GROUP BY day'
.' ORDER BY day DESC'
.' LIMIT 30;');
} else {
}
$result = array();
while($row = $res->next()){
$result[] = $row;}
return \SYSTEM\LOG\JsonResult::toString($result);
}
public static function sai_mod__SYSTEM_SAI_saimod_sys_log_action_error($error){

View File

@ -1,6 +1,6 @@
<ul class="nav nav-pills" id="error_filter">
<button id="refresh_error_table" class="btn" style="height: 32px; font-size: 13px; float: right;">Refresh</button>
<ul class="nav nav-pills" id="error_filter">
<li class="active"><a href="#" filter="">All</a></li>
${error_filter}
<button id="refresh_error_table" class="btn" style="margin-right: 15px; height: 32px; font-size: 13px; float: right;">Refresh</button>
</ul>
<div id="table_log">${table}</div>

View File

@ -1,5 +1,40 @@
<div id="visualization1"></div>
<div id="visualization2"></div>
<div id="visualization3"></div>
<div id="visualization4"></div>
<div id="visualization5"></div>
<ul class="nav nav-pills" id="stats_filter" style="">
<!--<li><a href="#" filter="31536000">365d</a></li>-->
<li><a href="#" filter="2592000">30d</a></li>
<li><a href="#" filter="1209600">14d</a></li>
<li class="active"><a href="#" filter="604800">7d</a></li>
<li><a href="#" filter="86400">1d</a></li>
<li><a href="#" filter="43200">12h</a></li>
<li><a href="#" filter="21600">6h</a></li>
<li><a href="#" filter="3600">1h</a></li>
<li><a href="#" filter="60">1m</a></li>
<li><a href="#" filter="1">1s</a></li>
</ul>
<div class="tabbable tabs-left" id="stats_tabs">
<ul class="nav nav-tabs">
<li class="active"><a href="#basic_tab">Basics</a></li>
<li><a href="#class_tab">Class</a></li>
<li><a href="#unique_tab">Unique</a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="basic_tab">
<div class="visualisation" id="basic_visitor"></div>
<div class="visualisation" id="basic_sucess"></div>
<div class="visualisation" id="basic_querytime"></div>
</br>
</div>
<div class="tab-pane" id="class_tab">
<div class="visualisation" id="class_basic"></div>
<div class="visualisation" id="class_system"></div>
<div class="visualisation" id="class_other"></div>
</br>
</div>
<div class="tab-pane" id="unique_tab">
<div class="visualisation" id="unique_basic"></div>
<div class="visualisation" id="unique_exception"></div>
<div class="visualisation" id="unique_referer"></div>
</br>
</div>
</div>
</div>