Alias the action name when executing an alert.

When executing an alert, the name of the action retrieved by the Pandora
FMS Server was overwritten by the name of the command, since the names
of the columns are the same. Now the name of the action is aliased to
preserve it.
This commit is contained in:
Ramon Novoa 2021-10-14 11:02:48 +02:00
parent 1344dee2c4
commit 118b0c3ff0
1 changed files with 12 additions and 12 deletions

View File

@ -840,7 +840,7 @@ sub pandora_execute_alert ($$$$$$$$$;$$) {
if ($alert_mode == RECOVERED_ALERT) {
# Avoid the use of alias bigger than 30 characters.
@actions = get_db_rows ($dbh,
'SELECT taa.*, tac.*, tatma.id AS id_alert_templ_module_actions,
'SELECT taa.name as action_name, taa.*, tac.*, tatma.id AS id_alert_templ_module_actions,
tatma.id_alert_template_module, tatma.id_alert_action, tatma.fires_min,
tatma.fires_max, tatma.module_action_threshold, tatma.last_execution
FROM talert_template_module_actions tatma, talert_actions taa, talert_commands tac
@ -854,7 +854,7 @@ sub pandora_execute_alert ($$$$$$$$$;$$) {
# Avoid the use of alias bigger than 30 characters.
if ($forced_alert){
@actions = get_db_rows ($dbh,
'SELECT taa.*, tac.*, tatma.id AS id_alert_templ_module_actions,
'SELECT taa.name as action_name, taa.*, tac.*, tatma.id AS id_alert_templ_module_actions,
tatma.id_alert_template_module, tatma.id_alert_action, tatma.fires_min,
tatma.fires_max, tatma.module_action_threshold, tatma.last_execution
FROM talert_template_module_actions tatma, talert_actions taa, talert_commands tac
@ -865,7 +865,7 @@ sub pandora_execute_alert ($$$$$$$$$;$$) {
} else {
@actions = get_db_rows ($dbh,
'SELECT taa.*, tac.*, tatma.id AS id_alert_templ_module_actions,
'SELECT taa.name as action_name, taa.*, tac.*, tatma.id AS id_alert_templ_module_actions,
tatma.id_alert_template_module, tatma.id_alert_action, tatma.fires_min,
tatma.fires_max, tatma.module_action_threshold, tatma.last_execution
FROM talert_template_module_actions tatma, talert_actions taa, talert_commands tac
@ -881,7 +881,7 @@ sub pandora_execute_alert ($$$$$$$$$;$$) {
# Get default action
if ($#actions < 0) {
@actions = get_db_rows ($dbh, 'SELECT * FROM talert_actions, talert_commands
@actions = get_db_rows ($dbh, 'SELECT talert_actions.name as action_name, * FROM talert_actions, talert_commands
WHERE talert_actions.id = ?
AND talert_actions.id_alert_command = talert_commands.id',
$alert->{'id_alert_action'});
@ -890,7 +890,7 @@ sub pandora_execute_alert ($$$$$$$$$;$$) {
# Event alert
else {
if ($alert_mode == RECOVERED_ALERT) {
@actions = get_db_rows ($dbh, 'SELECT * FROM tevent_alert_action, talert_actions, talert_commands
@actions = get_db_rows ($dbh, 'SELECT talert_actions.name as action_name, * FROM tevent_alert_action, talert_actions, talert_commands
WHERE tevent_alert_action.id_alert_action = talert_actions.id
AND talert_actions.id_alert_command = talert_commands.id
AND tevent_alert_action.id_event_alert = ?
@ -898,7 +898,7 @@ sub pandora_execute_alert ($$$$$$$$$;$$) {
OR ? >= fires_min)',
$alert->{'id'}, $alert->{'times_fired'});
} else {
@actions = get_db_rows ($dbh, 'SELECT * FROM tevent_alert_action, talert_actions, talert_commands
@actions = get_db_rows ($dbh, 'SELECT talert_actions.name as action_name, * FROM tevent_alert_action, talert_actions, talert_commands
WHERE tevent_alert_action.id_alert_action = talert_actions.id
AND talert_actions.id_alert_command = talert_commands.id
AND tevent_alert_action.id_event_alert = ?
@ -910,7 +910,7 @@ sub pandora_execute_alert ($$$$$$$$$;$$) {
# Get default action
if ($#actions < 0) {
@actions = get_db_rows ($dbh, 'SELECT * FROM talert_actions, talert_commands
@actions = get_db_rows ($dbh, 'SELECT talert_actions.name as action_name, * FROM talert_actions, talert_commands
WHERE talert_actions.id = ?
AND talert_actions.id_alert_command = talert_commands.id',
$alert->{'id_alert_action'});
@ -960,7 +960,7 @@ sub pandora_execute_alert ($$$$$$$$$;$$) {
}
pandora_execute_action ($pa_config, $data, $agent, $alert, $alert_mode, $action, $module, $dbh, $timestamp, $extra_macros);
push(@{$custom_data->{'actions'}}, safe_output($action->{'name'}));
push(@{$custom_data->{'actions'}}, safe_output($action->{'action_name'}));
} else {
if (defined ($module)) {
logger ($pa_config, "Skipping action " . safe_output($action->{'name'}) . " for alert '" . safe_output($alert->{'name'}) . "' module '" . safe_output($module->{'nombre'}) . "'.", 10);
@ -4218,7 +4218,7 @@ sub pandora_evaluate_snmp_alerts ($$$$$$$$$) {
}
# Execute alert
my $action = get_db_single_row ($dbh, 'SELECT *
my $action = get_db_single_row ($dbh, 'SELECT talert_actions.name as action_name, *
FROM talert_actions, talert_commands
WHERE talert_actions.id_alert_command = talert_commands.id
AND talert_actions.id = ?', $alert->{'id_alert'});
@ -4231,7 +4231,7 @@ sub pandora_evaluate_snmp_alerts ($$$$$$$$$) {
};
pandora_execute_action ($pa_config, $trap_rcv_full, \%agent, \%alert, 1, $action, undef, $dbh, $timestamp, \%macros) if (defined ($action));
push(@{$custom_data->{'actions'}}, safe_output($action->{'name'}));
push(@{$custom_data->{'actions'}}, safe_output($action->{'action_name'}));
# Generate an event, ONLY if our alert action is different from generate an event.
if ($action->{'id_alert_command'} != 3 && $alert->{'disable_event'} == 0){
@ -4252,7 +4252,7 @@ sub pandora_evaluate_snmp_alerts ($$$$$$$$$) {
$alert->{'id_as'});
foreach my $other_alert (@more_actions_snmp) {
my $other_action = get_db_single_row ($dbh, 'SELECT *
my $other_action = get_db_single_row ($dbh, 'SELECT talert_actions.name as action_name, *
FROM talert_actions, talert_commands
WHERE talert_actions.id_alert_command = talert_commands.id
AND talert_actions.id = ?', $other_alert->{'alert_type'});
@ -4293,7 +4293,7 @@ sub pandora_evaluate_snmp_alerts ($$$$$$$$$) {
);
pandora_execute_action ($pa_config, $trap_rcv_full, \%agent, \%alert_action, 1, $other_action, undef, $dbh, $timestamp, \%macros) if (defined ($other_action));
push(@{$custom_data->{'actions'}}, safe_output($other_action->{'name'}));
push(@{$custom_data->{'actions'}}, safe_output($other_action->{'action_name'}));
# Generate an event, ONLY if our alert action is different from generate an event.
if ($other_action->{'id_alert_command'} != 3 && $alert->{'disable_event'} == 0){