Discovery, notify critical issues in console

This commit is contained in:
fbsanchez 2022-02-22 18:48:35 +01:00
parent 4c31e4cda3
commit 4cd8006db4
2 changed files with 46 additions and 12 deletions

View File

@ -1832,18 +1832,7 @@ sub pandora_execute_action ($$$$$$$$$;$$) {
my @user_list = map {clean_blank($_)} split /,/, $field1;
my @group_list = map {clean_blank($_)} split /,/, $field2;
my $notification = {};
$notification->{'subject'} = safe_input($field3);
$notification->{'mensaje'} = safe_input($field4);
$notification->{'id_source'} = get_db_value($dbh, 'SELECT id FROM tnotification_source WHERE description = ?', safe_input('System status'));
# Create message
my $notification_id = db_process_insert($dbh,'id_mensaje','tmensajes',$notification);
if (!$notification_id) {
logger($pa_config, "Failed action '" . $action->{'name'} . "' for alert '". $alert->{'name'} . "' agent '" . (defined($agent) ? $agent->{'alias'} : 'N/A') . "'.", 3);
} else {
notification_set_targets($pa_config, $dbh, $notification_id, \@user_list, \@group_list);
}
send_console_notification($pa_config, $dbh, $field3, $field4, \@user_list, \@group_list);
} else {
logger($pa_config, "Failed action '" . $action->{'name'} . "' for alert '". $alert->{'name'} . "' agent '" . (defined($agent) ? $agent->{'alias'} : 'N/A') . "' Empty targets. Ignored.", 3);
}
@ -1860,6 +1849,40 @@ sub pandora_execute_action ($$$$$$$$$;$$) {
}
}
##########################################################################
=head2 C<< send_console_notification (I<$pa_config>, I<$dbh>, I<$subject>, I<$message>, I<$user_list>, I<$group_list>) >>
Send message (with subject) to given userlist and/ or group list.
=cut
##########################################################################
sub send_console_notification {
my ($pa_config, $dbh, $subject, $message, $user_list, $group_list) = @_;
my $notification = {};
$notification->{'subject'} = safe_input($subject);
$notification->{'mensaje'} = safe_input($message);
$notification->{'id_source'} = get_db_value($dbh,
'SELECT id FROM tnotification_source WHERE description = ?',
safe_input('System status')
);
# Create message
my $notification_id = db_process_insert($dbh, 'id_mensaje', 'tmensajes', $notification);
if (!$notification_id) {
logger($pa_config, "Cannot send notification '" . $subject . "'", 3);
} else {
notification_set_targets(
$pa_config,
$dbh,
$notification_id,
$user_list,
$group_list
);
}
}
##########################################################################
=head2 C<< pandora_access_update (I<$pa_config>, I<$agent_id>, I<$dbh>) >>

View File

@ -251,6 +251,7 @@ sub data_consumer ($$) {
}
my $recon = new PandoraFMS::Recon::Base(
parent => $self,
communities => \@communities,
dbh => $dbh,
group_id => $task->{'id_group'},
@ -1727,6 +1728,16 @@ sub PandoraFMS::Recon::Base::delete_connections($) {
sub PandoraFMS::Recon::Base::message($$$) {
my ($self, $message, $verbosity) = @_;
if ($verbosity <= 1) {
PandoraFMS::Core::send_console_notification(
$self->{'pa_config'},
$self->{'parent'}->getDBH(),
"[Recon task " . $self->{'task_id'} . "]",
$message,
['admin']
)
}
logger($self->{'pa_config'}, "[Recon task " . $self->{'task_id'} . "] $message", $verbosity);
}