mirror of
				https://github.com/pandorafms/pandorafms.git
				synced 2025-10-31 11:34:51 +01:00 
			
		
		
		
	2011-06-08 Ramon Novoa <rnovoa@artica.es>
* lib/PandoraFMS/DB.pm: Added a function to get the name of an alert template given the alert id. * lib/PandoraFMS/Core.pm: Added support for module tags. * lib/PandoraFMS/DataServer.pm: Do not queue more than max_queue_files files (not max_queue_files + 1!). git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@4417 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
This commit is contained in:
		
							parent
							
								
									3a73b47476
								
							
						
					
					
						commit
						0035e2937e
					
				| @ -1,3 +1,13 @@ | ||||
| 2011-06-08  Ramon Novoa  <rnovoa@artica.es> | ||||
| 
 | ||||
| 	* lib/PandoraFMS/DB.pm: Added a function to get the name of an alert | ||||
| 	  template given the alert id. | ||||
| 	 | ||||
| 	* lib/PandoraFMS/Core.pm: Added support for module tags. | ||||
| 	 | ||||
| 	* lib/PandoraFMS/DataServer.pm: Do not queue more than max_queue_files | ||||
| 	  files (not max_queue_files + 1!). | ||||
| 
 | ||||
| 2011-06-06  Ramon Novoa  <rnovoa@artica.es> | ||||
| 
 | ||||
| 	* util/pandora_db.pl: Use days_compact instead of days_purge in | ||||
|  | ||||
| @ -146,6 +146,7 @@ our @EXPORT = qw( | ||||
| 	pandora_exec_forced_alerts | ||||
| 	pandora_generate_alerts | ||||
| 	pandora_generate_compound_alerts | ||||
| 	pandora_get_module_tags | ||||
| 	pandora_module_keep_alive | ||||
| 	pandora_module_keep_alive_nd | ||||
| 	pandora_module_unknown | ||||
| @ -389,13 +390,15 @@ sub pandora_process_alert ($$$$$$$$;$) { | ||||
| 		# Generate an event | ||||
| 		if ($table eq 'tevent_alert') { | ||||
| 			pandora_event ($pa_config, "Alert ceased (" . | ||||
| 				$alert->{'name'} . ")", 0, 0, $alert->{'priority'}, $id, $alert->{'id_agent_module'},  | ||||
| 				$alert->{'name'} . ")", 0, 0, $alert->{'priority'}, $id, | ||||
| 				(defined ($alert->{'id_agent_module'}) ? $alert->{'id_agent_module'} : 0),  | ||||
| 				"alert_ceased", 0, $dbh); | ||||
| 		}  else { | ||||
| 			pandora_event ($pa_config, "Alert ceased (" . | ||||
| 					$alert->{'name'} . ")", $agent->{'id_grupo'}, | ||||
| 					$agent->{'id_agente'}, $alert->{'priority'}, $id, $alert->{'id_agent_module'},  | ||||
| 					"alert_ceased", 0, $dbh); | ||||
| 					$agent->{'id_agente'}, $alert->{'priority'}, $id, | ||||
| 					(defined ($alert->{'id_agent_module'}) ? $alert->{'id_agent_module'} : 0), | ||||
| 			        "alert_ceased", 0, $dbh); | ||||
| 		} | ||||
| 		return; | ||||
| 	} | ||||
| @ -651,9 +654,9 @@ sub pandora_execute_alert ($$$$$$$$;$) { | ||||
| 	# Generate an event | ||||
| 	my ($text, $event) = ($alert_mode == 0) ? ('recovered', 'alert_recovered') : ('fired', 'alert_fired'); | ||||
| 
 | ||||
| 	pandora_event ($pa_config, "Alert $text (" . $alert->{'name'} . ") " . (defined ($module)) ? 'assigned to ('. $module->{'nombre'} . ")" : "", | ||||
| 			defined ($agent) ? $agent->{'id_grupo'} : 0, defined ($agent) ? $agent->{'id_agente'} : 0 , $alert->{'priority'}, (defined ($alert->{'id_template_module'})) ? $alert->{'id_template_module'} : 0, | ||||
| 			defined ($alert->{'id_agent_module'}) ? $alert->{'id_agent_module'} : 0, $event, 0, $dbh); | ||||
| 	pandora_event ($pa_config, "Alert $text (" . $alert->{'name'} . ") " . (defined ($module) ? 'assigned to ('. $module->{'nombre'} . ")" : ""), | ||||
| 			(defined ($agent) ? $agent->{'id_grupo'} : 0), (defined ($agent) ? $agent->{'id_agente'} : 0), $alert->{'priority'}, (defined ($alert->{'id_template_module'}) ? $alert->{'id_template_module'} : 0), | ||||
| 			(defined ($alert->{'id_agent_module'}) ? $alert->{'id_agent_module'} : 0), $event, 0, $dbh); | ||||
| } | ||||
| 
 | ||||
| ########################################################################## | ||||
| @ -1417,18 +1420,24 @@ Generate an event. | ||||
| 
 | ||||
| =cut | ||||
| ########################################################################## | ||||
| sub pandora_event ($$$$$$$$$$) { | ||||
| sub pandora_event ($$$$$$$$$$;$) { | ||||
| 	my ($pa_config, $evento, $id_grupo, $id_agente, $severity, | ||||
| 		$id_alert_am, $id_agentmodule, $event_type, $event_status, $dbh) = @_; | ||||
| 
 | ||||
| 	logger($pa_config, "Generating event '$evento' for agent ID $id_agente module ID $id_agentmodule.", 10); | ||||
| 
 | ||||
| 	# Get module tags | ||||
| 	my $module_tags = ''; | ||||
| 	if (defined ($id_agentmodule) && $id_agentmodule > 0) { | ||||
| 		$module_tags = pandora_get_module_tags ($pa_config, $dbh, $id_agentmodule); | ||||
| 	}	 | ||||
| 		 | ||||
| 	my $utimestamp = time (); | ||||
| 	my $timestamp = strftime ("%Y-%m-%d %H:%M:%S", localtime ($utimestamp)); | ||||
| 	$id_agentmodule = 0 unless defined ($id_agentmodule); | ||||
| 	 | ||||
| 	db_do ($dbh, 'INSERT INTO tevento (id_agente, id_grupo, evento, timestamp, estado, utimestamp, event_type, id_agentmodule, id_alert_am, criticity, user_comment) | ||||
| 		VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', $id_agente, $id_grupo, safe_input ($evento), $timestamp, $event_status, $utimestamp, $event_type, $id_agentmodule, $id_alert_am, $severity, ''); | ||||
| 	db_do ($dbh, 'INSERT INTO tevento (id_agente, id_grupo, evento, timestamp, estado, utimestamp, event_type, id_agentmodule, id_alert_am, criticity, user_comment, tags) | ||||
| 		VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', $id_agente, $id_grupo, safe_input ($evento), $timestamp, $event_status, $utimestamp, $event_type, $id_agentmodule, $id_alert_am, $severity, '', $module_tags); | ||||
| } | ||||
| 
 | ||||
| ########################################################################## | ||||
| @ -2410,6 +2419,31 @@ sub pandora_module_unknown ($$) { | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| ########################################################################## | ||||
| =head2 C<< get_event_tags (I<$pa_config>, I<$dbh>, I<$id_agentmodule>) >>  | ||||
| 
 | ||||
| Get a list of module tags in the format: |tag|tag| ... |tag| | ||||
| 
 | ||||
| =cut | ||||
| ########################################################################## | ||||
| sub pandora_get_module_tags ($$$) { | ||||
| 	my ($pa_config, $dbh, $id_agentmodule) = @_; | ||||
| 	 | ||||
| 	my @tags = get_db_rows ($dbh, 'SELECT ttag.name FROM ttag, ttag_module | ||||
| 	                               WHERE ttag.id_tag = ttag_module.id_tag | ||||
| 	                               AND ttag_module.id_agente_modulo = ?', $id_agentmodule); | ||||
| 	 | ||||
| 	# No tags found | ||||
| 	return '' if ($#tags < 0); | ||||
| 	 | ||||
| 	my $tag_string = '|'; | ||||
| 	foreach my $tag (@tags) { | ||||
| 		$tag_string .=  $tag->{'name'} . '|'; | ||||
| 	} | ||||
| 	 | ||||
| 	return $tag_string; | ||||
| } | ||||
| 
 | ||||
| # End of function declaration | ||||
| # End of defined Code | ||||
| 
 | ||||
|  | ||||
| @ -44,6 +44,7 @@ our @EXPORT = qw( | ||||
| 		get_agent_name | ||||
| 		get_agent_module_id | ||||
| 		get_alert_template_module_id | ||||
| 		get_alert_template_name | ||||
| 		get_db_rows | ||||
| 		get_db_single_row | ||||
| 		get_db_value | ||||
| @ -547,6 +548,16 @@ sub db_text ($) { | ||||
| 	return $string; | ||||
| } | ||||
| 
 | ||||
| ########################################################################## | ||||
| ## SUB get_alert_template_name(alert_id) | ||||
| ## Return the alert template name, given "alert_id" | ||||
| ########################################################################## | ||||
| sub get_alert_template_name ($$) { | ||||
| 	my ($dbh, $alert_id) = @_; | ||||
| 	 | ||||
| 	return get_db_value ($dbh, "SELECT name FROM talert_templates, talert_template_modules WHERE talert_templates.id = talert_template_modules.id_alert_template AND talert_template_modules.id = ?", $alert_id); | ||||
| } | ||||
| 
 | ||||
| # End of function declaration | ||||
| # End of defined Code | ||||
| 
 | ||||
|  | ||||
| @ -98,13 +98,13 @@ sub data_producer ($) { | ||||
| 		# Data files must have the extension .data | ||||
| 		next if ($file !~ /^.*\.data$/); | ||||
| 		 | ||||
| 		# Do not queue more than max_queue_files files | ||||
| 		if ($file_count > $pa_config->{"max_queue_files"}) { | ||||
| 			last; | ||||
| 		} | ||||
| 
 | ||||
| 		push (@files, $file); | ||||
| 		$file_count++; | ||||
| 
 | ||||
| 		# Do not queue more than max_queue_files files | ||||
| 		if ($file_count >= $pa_config->{"max_queue_files"}) { | ||||
| 			last; | ||||
| 		} | ||||
| 	} | ||||
| 	closedir(DIR); | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user