2012-05-30 Sancho Lerena <slerena@artica.es>

* include/functions_reporting.php
	include/functions_groups.php: Group/tactical stats
	are now done with functins in function_group. This
	method is also used in the server for the batch
	stats system.

	* operation/agentes/estado_ultimopaquete.php: Fixed
	view on non-init policy modules, shown in the data tab.



git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@6379 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
This commit is contained in:
slerena 2012-05-30 17:20:55 +00:00
parent 005f6f40ce
commit e243e7c19f
4 changed files with 265 additions and 186 deletions

View File

@ -1,3 +1,14 @@
2012-05-30 Sancho Lerena <slerena@artica.es>
* include/functions_reporting.php
include/functions_groups.php: Group/tactical stats
are now done with functins in function_group. This
method is also used in the server for the batch
stats system.
* operation/agentes/estado_ultimopaquete.php: Fixed
view on non-init policy modules, shown in the data tab.
2012-05-30 Juan Manuel Ramon <juanmanuel.ramon@artica.es>
* operation/events/export_csv.php: Fixed csv events exportation

View File

@ -838,4 +838,216 @@ function groups_create_group($group_name, $rest_values){
}
// Get unknown agents by using the status code in modules.
function groups_agent_unknown ($group_array) {
// If there are not groups to query, we jump to nextone
if (empty ($group_array)) {
return 0;
} else if (!is_array ($group_array)){
$group_array[0] = $group_array;
}
$group_clause = implode (",", $group_array);
$group_clause = "(" . $group_clause . ")";
return db_get_sql ("SELECT COUNT( DISTINCT tagente_estado.id_agente) FROM tagente_estado, tagente, tagente_modulo WHERE tagente.disabled = 0 AND tagente_estado.utimestamp != 0 AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo AND tagente_modulo.disabled = 0 AND estado = 3 AND tagente_estado.id_agente = tagente.id_agente AND tagente.id_grupo IN $group_clause");
}
// Get monitor NOT INIT, except disabled AND async modules
function groups_monitor_not_init ($group_array) {
// If there are not groups to query, we jump to nextone
if (empty ($group_array)) {
return 0;
} else if (!is_array ($group_array)){
$group_array[0] = $group_array;
}
$group_clause = implode (",", $group_array);
$group_clause = "(" . $group_clause . ")";
return db_get_sql ("SELECT COUNT(tagente_estado.id_agente_estado)
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente.id_grupo IN $group_clause AND tagente.disabled = 0
AND tagente.id_agente = tagente_estado.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente_modulo.disabled = 0
AND tagente_modulo.id_tipo_modulo NOT IN (21,22,23,24) AND utimestamp = 0");
}
// Get monitor OK, except disabled and non-init
function groups_monitor_ok ($group_array) {
// If there are not groups to query, we jump to nextone
if (empty ($group_array)) {
return 0;
} else if (!is_array ($group_array)){
$group_array[0] = $group_array;
}
$group_clause = implode (",", $group_array);
$group_clause = "(" . $group_clause . ")";
return db_get_sql ("SELECT COUNT(tagente_estado.id_agente_estado)
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente.id_grupo IN $group_clause AND tagente.disabled = 0
AND tagente_estado.id_agente = tagente.id_agente AND tagente_estado.estado = 0
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo AND tagente_modulo.disabled = 0 AND tagente_estado.utimestamp != 0");
}
// Get monitor CRITICAL, except disabled and non-init
function groups_monitor_critical ($group_array) {
// If there are not groups to query, we jump to nextone
if (empty ($group_array)) {
return 0;
} else if (!is_array ($group_array)){
$group_array[0] = $group_array;
}
$group_clause = implode (",", $group_array);
$group_clause = "(" . $group_clause . ")";
return db_get_sql ("SELECT COUNT(tagente_estado.id_agente_estado)
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente.id_grupo IN $group_clause AND tagente.disabled = 0
AND tagente_estado.id_agente = tagente.id_agente AND tagente_estado.estado = 1
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo AND tagente_modulo.disabled = 0 AND tagente_estado.utimestamp != 0");
}
// Get monitor WARNING, except disabled and non-init
function groups_monitor_warning ($group_array) {
// If there are not groups to query, we jump to nextone
if (empty ($group_array)) {
return 0;
} else if (!is_array ($group_array)){
$group_array[0] = $group_array;
}
$group_clause = implode (",", $group_array);
$group_clause = "(" . $group_clause . ")";
return db_get_sql ("SELECT COUNT(tagente_estado.id_agente_estado)
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente.id_grupo IN $group_clause AND tagente.disabled = 0
AND tagente_estado.id_agente = tagente.id_agente AND tagente_estado.estado = 2
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo AND tagente_modulo.disabled = 0 AND tagente_estado.utimestamp != 0");
}
// Get monitor UNKNOWN, except disabled and non-init
function groups_monitor_unknown ($group_array) {
// If there are not groups to query, we jump to nextone
if (empty ($group_array)) {
return 0;
} else if (!is_array ($group_array)){
$group_array[0] = $group_array;
}
$group_clause = implode (",", $group_array);
$group_clause = "(" . $group_clause . ")";
return db_get_sql ("SELECT COUNT(tagente_estado.id_agente_estado)
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente.id_grupo IN $group_clause AND tagente.disabled = 0
AND tagente_estado.id_agente = tagente.id_agente AND tagente_estado.estado = 3
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo AND tagente_modulo.disabled = 0 AND tagente_estado.utimestamp != 0");
}
// Get alerts defined for a given group, except disabled
function groups_monitor_alerts ($group_array) {
// If there are not groups to query, we jump to nextone
if (empty ($group_array)) {
return 0;
} else if (!is_array ($group_array)){
$group_array[0] = $group_array;
}
$group_clause = implode (",", $group_array);
$group_clause = "(" . $group_clause . ")";
return db_get_sql ("SELECT COUNT(talert_template_modules.id)
FROM talert_template_modules, tagente_modulo, tagente_estado, tagente
WHERE tagente.id_grupo IN $group_clause AND tagente_modulo.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente_modulo.disabled = 0 AND tagente.disabled = 0
AND talert_template_modules.disabled = 0
AND talert_template_modules.id_agent_module = tagente_modulo.id_agente_modulo");
}
// Get alert configured currently FIRED, except disabled
function groups_monitor_fired_alerts ($group_array) {
// If there are not groups to query, we jump to nextone
if (empty ($group_array)) {
return 0;
} else if (!is_array ($group_array)){
$group_array[0] = $group_array;
}
$group_clause = implode (",", $group_array);
$group_clause = "(" . $group_clause . ")";
return db_get_sql ("SELECT COUNT(talert_template_modules.id)
FROM talert_template_modules, tagente_modulo, tagente_estado, tagente
WHERE tagente.id_grupo IN $group_clause AND tagente_modulo.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente_modulo.disabled = 0 AND tagente.disabled = 0
AND talert_template_modules.disabled = 0
AND talert_template_modules.id_agent_module = tagente_modulo.id_agente_modulo
AND times_fired > 0");
}
// Total agents in a group, except disabled ones
function groups_total_agents ($group_array) {
if (empty ($group_array)) {
return 0;
} else if (!is_array ($group_array)){
$group_array[0] = $group_array;
}
$group_clause = implode (",", $group_array);
$group_clause = "(" . $group_clause . ")";
return db_get_sql ("SELECT COUNT(*) FROM tagente WHERE id_grupo IN $group_clause AND disabled = 0");
}
?>

View File

@ -900,202 +900,58 @@ function reporting_get_group_stats ($id_group = 0) {
array_push($covered_groups, $group);
array_push($group_array, $group);
}
// If there are not groups to query, we jump to nextone
if(empty($group_array)) {
if (empty($group_array)) {
continue;
}
// Get unknown agents by using the status code in modules.
$data["agents_unknown"] = groups_agent_unknown ($group_array);
// Get monitor NOT INIT, except disabled AND async modules
$data["monitor_not_init"] = groups_monitor_not_init ($group_array);
// Get monitor OK, except disabled and non-init
$group_clause = implode(",",$group_array);
$data["monitor_ok"] = groups_monitor_ok ($group_array);
$group_clause = "(".$group_clause.")";
// Get monitor CRITICAL, except disabled and non-init
$data["monitor_critical"] = groups_monitor_critical ($group_array);
switch ($config["dbtype"]) {
case "mysql":
$agents_in_group = db_get_all_rows_sql ("SELECT id_agente
FROM tagente
WHERE id_grupo IN $group_clause AND disabled = 0");
break;
case "postgresql":
$agents_in_group = db_get_all_rows_sql ("SELECT id_agente
FROM tagente
WHERE id_grupo IN $group_clause AND disabled = 0");
break;
case "oracle":
$agents_in_group = db_get_all_rows_sql ("SELECT id_agente
FROM tagente
WHERE id_grupo IN $group_clause AND disabled = 0");
break;
}
//Count unkown agents, forget agent without modules
if (!$agents_in_group) {
$agents_in_group = array();
}
$data["agents_unknown"] = 0;
foreach ($agents_in_group as $id) {
$info = reporting_get_agent_module_info($id['id_agente']);
//If the agent has modules then is counted
if ($info['monitor_unknown']) {
$data["agents_unknown"]++;
}
}
//Calculate other metrics
$data["total_agents"] += db_get_sql ("SELECT COUNT(*)
FROM tagente WHERE id_grupo IN $group_clause AND disabled = 0");
$data["monitor_checks"] += db_get_sql ("SELECT COUNT(tagente_estado.id_agente_estado)
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente.id_grupo IN $group_clause AND tagente.disabled = 0
AND tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo AND tagente_modulo.disabled = 0");
$data["total_not_init"] += db_get_sql ("SELECT COUNT(tagente_estado.id_agente_estado)
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente.id_grupo IN $group_clause AND tagente.disabled = 0
AND tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente_modulo.disabled = 0 AND tagente_modulo.id_tipo_modulo NOT IN (21,22,23,24)
AND tagente_estado.utimestamp = 0");
switch ($config["dbtype"]) {
case "mysql":
$data["monitor_ok"] += db_get_sql ("SELECT COUNT(tagente_estado.id_agente_estado)
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente.id_grupo IN $group_clause AND tagente.disabled = 0
AND tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente_modulo.disabled = 0 AND estado = 0
AND ((UNIX_TIMESTAMP(NOW()) - tagente_estado.utimestamp) < (tagente_estado.current_interval * 2)
OR (tagente_modulo.id_tipo_modulo IN(21,22,23,24,100)))
AND (utimestamp > 0 OR (tagente_modulo.id_tipo_modulo IN(21,22,23,24)))");
break;
case "postgresql":
$data["monitor_ok"] += db_get_sql ("SELECT COUNT(tagente_estado.id_agente_estado)
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente.id_grupo IN $group_clause AND tagente.disabled = 0
AND tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente_modulo.disabled = 0 AND estado = 0
AND ((ceil(date_part('epoch', CURRENT_TIMESTAMP)) - tagente_estado.utimestamp) < (tagente_estado.current_interval * 2)
OR (tagente_modulo.id_tipo_modulo IN(21,22,23,24,100)))
AND (utimestamp > 0 OR (tagente_modulo.id_tipo_modulo IN(21,22,23,24)))");
break;
case "oracle":
$data["monitor_ok"] += db_get_sql ("SELECT COUNT(tagente_estado.id_agente_estado)
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente.id_grupo IN $group_clause AND tagente.disabled = 0
AND tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente_modulo.disabled = 0 AND estado = 0
AND ((ceil((sysdate - to_date('19700101000000','YYYYMMDDHH24MISS')) * (86400)) - tagente_estado.utimestamp) < (tagente_estado.current_interval * 2)
OR (tagente_modulo.id_tipo_modulo IN(21,22,23,24,100)))
AND (utimestamp > 0 OR (tagente_modulo.id_tipo_modulo IN(21,22,23,24)))");
break;
}
switch ($config["dbtype"]) {
case "mysql":
$data["monitor_critical"] += db_get_sql ("SELECT COUNT(tagente_estado.id_agente_estado)
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente.id_grupo IN $group_clause AND tagente.disabled = 0
AND tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente_modulo.disabled = 0 AND estado = 1
AND ((UNIX_TIMESTAMP(NOW()) - tagente_estado.utimestamp) < (tagente_estado.current_interval * 2) OR (tagente_modulo.id_tipo_modulo IN(21,22,23,24,100))) AND utimestamp > 0");
break;
case "postgresql":
$data["monitor_critical"] += db_get_sql ("SELECT COUNT(tagente_estado.id_agente_estado)
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente.id_grupo IN $group_clause AND tagente.disabled = 0
AND tagente_estado.id_agente = tagente.id_agente AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente_modulo.disabled = 0 AND estado = 1 AND ((ceil(date_part('epoch', CURRENT_TIMESTAMP)) - tagente_estado.utimestamp) < (tagente_estado.current_interval * 2) OR (tagente_modulo.id_tipo_modulo IN(21,22,23,24,100))) AND utimestamp > 0");
break;
case "oracle":
$data["monitor_critical"] += db_get_sql ("SELECT COUNT(tagente_estado.id_agente_estado)
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente.id_grupo IN $group_clause AND tagente.disabled = 0
AND tagente_estado.id_agente = tagente.id_agente AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente_modulo.disabled = 0 AND estado = 1 AND ((ceil((sysdate - to_date('19700101000000','YYYYMMDDHH24MISS')) * (86400)) - tagente_estado.utimestamp) < (tagente_estado.current_interval * 2) OR (tagente_modulo.id_tipo_modulo IN(21,22,23,24,100))) AND utimestamp > 0");
break;
}
// Get monitor WARNING, except disabled and non-init
switch ($config["dbtype"]) {
case "mysql":
$data["monitor_warning"] += db_get_sql ("SELECT COUNT(tagente_estado.id_agente_estado)
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente.id_grupo IN $group_clause AND tagente.disabled = 0 AND tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo AND tagente_modulo.disabled = 0
AND estado = 2 AND ((UNIX_TIMESTAMP(NOW()) - tagente_estado.utimestamp) < (tagente_estado.current_interval * 2)
OR (tagente_modulo.id_tipo_modulo IN(21,22,23,24,100))) AND utimestamp > 0");
break;
case "postgresql":
$data["monitor_warning"] += db_get_sql ("SELECT COUNT(tagente_estado.id_agente_estado)
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente.id_grupo IN $group_clause AND tagente.disabled = 0 AND tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo AND tagente_modulo.disabled = 0
AND estado = 2 AND ((ceil(date_part('epoch', CURRENT_TIMESTAMP)) - tagente_estado.utimestamp) < (tagente_estado.current_interval * 2)
OR (tagente_modulo.id_tipo_modulo IN(21,22,23,24,100))) AND utimestamp > 0");
break;
case "oracle":
$data["monitor_warning"] += db_get_sql ("SELECT COUNT(tagente_estado.id_agente_estado)
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente.id_grupo IN $group_clause AND tagente.disabled = 0 AND tagente_estado.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo AND tagente_modulo.disabled = 0
AND estado = 2 AND ((ceil((sysdate - to_date('19700101000000','YYYYMMDDHH24MISS')) * (86400)) - tagente_estado.utimestamp) < (tagente_estado.current_interval * 2)
OR (tagente_modulo.id_tipo_modulo IN(21,22,23,24,100))) AND utimestamp > 0");
break;
}
$data["monitor_warning"] = groups_monitor_warning ($group_array);
// Get monitor UNKNOWN, except disabled and non-init
$data["monitor_unknown"] = groups_monitor_unknown ($group_array);
// Get alerts configured, except disabled
switch ($config["dbtype"]) {
case "mysql":
$data["monitor_unknown"] += db_get_sql ("SELECT COUNT(tagente_estado.id_agente_estado)
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente.id_grupo IN $group_clause AND tagente.disabled = 0 AND tagente.id_agente = tagente_estado.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo AND tagente_modulo.disabled = 0
AND utimestamp > 0 AND tagente_modulo.id_tipo_modulo NOT IN(21,22,23,24,100)
AND (UNIX_TIMESTAMP(NOW()) - tagente_estado.utimestamp) >= (tagente_estado.current_interval * 2)");
break;
case "postgresql":
$data["monitor_unknown"] += db_get_sql ("SELECT COUNT(tagente_estado.id_agente_estado)
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente.id_grupo IN $group_clause AND tagente.disabled = 0 AND tagente.id_agente = tagente_estado.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo AND tagente_modulo.disabled = 0
AND utimestamp > 0 AND tagente_modulo.id_tipo_modulo NOT IN(21,22,23,24,100)
AND (ceil(date_part('epoch', CURRENT_TIMESTAMP)) - tagente_estado.utimestamp) >= (tagente_estado.current_interval * 2)");
break;
case "oracle":
$data["monitor_unknown"] += db_get_sql ("SELECT COUNT(tagente_estado.id_agente_estado)
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente.id_grupo IN $group_clause AND tagente.disabled = 0 AND tagente.id_agente = tagente_estado.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo AND tagente_modulo.disabled = 0
AND utimestamp > 0 AND tagente_modulo.id_tipo_modulo NOT IN(21,22,23,24,100)
AND (ceil((sysdate - to_date('19700101000000','YYYYMMDDHH24MISS')) * (86400)) - tagente_estado.utimestamp) >= (tagente_estado.current_interval * 2)");
break;
}
$data["monitor_alerts"] += groups_monitor_alerts ($group_array) ;
$data["monitor_not_init"] += db_get_sql ("SELECT COUNT(tagente_estado.id_agente_estado)
FROM tagente_estado, tagente, tagente_modulo
WHERE tagente.id_grupo IN $group_clause AND tagente.disabled = 0 AND tagente.id_agente = tagente_estado.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo AND tagente_modulo.disabled = 0
AND tagente_modulo.id_tipo_modulo NOT IN (21,22,23,24) AND utimestamp = 0");
// Get alert configured currently FIRED, except disabled
$data["monitor_alerts"] += db_get_sql ("SELECT COUNT(talert_template_modules.id)
FROM talert_template_modules, tagente_modulo, tagente_estado, tagente
WHERE tagente.id_grupo IN $group_clause AND tagente_modulo.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente_modulo.disabled = 0 AND tagente.disabled = 0
AND talert_template_modules.id_agent_module = tagente_modulo.id_agente_modulo");
$data["monitor_alerts_fired"] += groups_monitor_fired_alerts ($group_array);
// Calculate totals using partial counts from above
// Get TOTAL agents in a group
$data["total_agents"] += groups_total_agents ($group_array);
$data["monitor_alerts_fired"] += db_get_sql ("SELECT COUNT(talert_template_modules.id)
FROM talert_template_modules, tagente_modulo, tagente_estado, tagente
WHERE tagente.id_grupo IN $group_clause AND tagente_modulo.id_agente = tagente.id_agente
AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo
AND tagente_modulo.disabled = 0 AND tagente.disabled = 0
AND talert_template_modules.id_agent_module = tagente_modulo.id_agente_modulo AND times_fired > 0");
// Get TOTAL non-init modules, except disabled ones and async modules
$data["total_not_init"] += $data["monitor_not_init"];
// Get total count of monitors for this group, except disabled.
$data["monitor_checks"] += $data["monitor_not_init"] + $data["monitor_unknown"] + $data["monitor_warning"] + $data["monitor_critical"] + $data["monitor_ok"];
}
/*
Monitor health (percentage)

View File

@ -232,7 +232,7 @@ $where = sprintf("(tagente_modulo.id_policy_module = 0 AND disabled = 0 AND tage
$search_string_entities = io_safe_input($search_string);
$basic_where = sprintf(" tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo AND (nombre LIKE '%%%s%%' OR nombre LIKE '%%%s%%' OR descripcion LIKE '%%%s%%' OR descripcion LIKE '%%%s%%') AND", $search_string, $search_string_entities, $search_string, $search_string_entities);
$basic_where = sprintf(" tagente_estado.utimestamp !=0 AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo AND (nombre LIKE '%%%s%%' OR nombre LIKE '%%%s%%' OR descripcion LIKE '%%%s%%' OR descripcion LIKE '%%%s%%') AND", $search_string, $search_string_entities, $search_string, $search_string_entities);
switch ($config["dbtype"]) {
case "postgresql":