diff --git a/pandora_server/ChangeLog b/pandora_server/ChangeLog index d30f5e1649..e079044134 100644 --- a/pandora_server/ChangeLog +++ b/pandora_server/ChangeLog @@ -1,3 +1,11 @@ +2013-09-04 Ramon Novoa + + * lib/PandoraFMS/Core.pm, + lib/PandoraFMS/Config.pm, + conf/pandora_server.conf.new: Added support for custom event texts. + + * lib/PandoraFMS/Server.pm: Fixed a comparison. + 2013-09-04 Ramon Novoa * lib/PandoraFMS/Core.pm: Added support for treating events with the diff --git a/pandora_server/conf/pandora_server.conf.new b/pandora_server/conf/pandora_server.conf.new index bd91e772ed..19f5ac41e9 100755 --- a/pandora_server/conf/pandora_server.conf.new +++ b/pandora_server/conf/pandora_server.conf.new @@ -422,3 +422,9 @@ event_auto_validation 1 # Time interval for snmp_storm protection (in seconds). #snmp_storm_timeout 600 +# Default texts for some events. The macros _module_ and _data_ are supported. +#text_going_down_normal Module '_module_' is going to NORMAL (_data_) +#text_going_up_critical Module '_module_' is going to CRITICAL (_data_) +#text_going_up_warning Module '_module_' is going to WARNING (_data_) +#text_going_down_warning Module '_module_' is going to WARNING (_data_) +#text_going_unknown Module '_module_' is going to UNKNOWN diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm index 6e2925ace7..c09edc327c 100644 --- a/pandora_server/lib/PandoraFMS/Config.pm +++ b/pandora_server/lib/PandoraFMS/Config.pm @@ -306,6 +306,13 @@ sub pandora_load_config { # Export events to a text file $pa_config->{"event_file"} = ''; # 5.0 + # Default event messages + $pa_config->{"text_going_down_normal"} = "Module '_module_' is going to NORMAL (_data_)"; # 5.0 + $pa_config->{"text_going_up_critical"} = "Module '_module_' is going to CRITICAL (_data_)"; # 5.0 + $pa_config->{"text_going_up_warning"} = "Module '_module_' is going to WARNING (_data_)"; # 5.0 + $pa_config->{"text_going_down_warning"} = "Module '_module_' is going to WARNING (_data_)"; # 5.0 + $pa_config->{"text_going_unknown"} = "Module '_module_' is going to UNKNOWN"; # 5.0 + # ------------------------------------------------------------------------- # This values are not stored in .conf files. # This values should be stored in database, not in .conf files! @@ -671,6 +678,21 @@ sub pandora_load_config { elsif ($parametro =~ m/^event_file\s+(.*)/i) { $pa_config->{'event_file'}= clean_blank($1); } + elsif ($parametro =~ m/^text_going_down_normal\s+(.*)/i) { + $pa_config->{'text_going_down_normal'} = safe_input ($1); + } + elsif ($parametro =~ m/^text_going_up_critical\s+(.*)/i) { + $pa_config->{'text_going_up_critical'} = safe_input ($1); + } + elsif ($parametro =~ m/^text_going_up_warning\s+(.*)/i) { + $pa_config->{'text_going_up_warning'} = safe_input ($1); + } + elsif ($parametro =~ m/^text_going_down_warning\s+(.*)/i) { + $pa_config->{'text_going_down_warning'} = safe_input ($1); + } + elsif ($parametro =~ m/^text_going_unknown\s+(.*)/i) { + $pa_config->{'text_going_unknown'} = safe_input ($1); + } } # end of loop for parameter # # Set to RDBMS' standard port diff --git a/pandora_server/lib/PandoraFMS/Core.pm b/pandora_server/lib/PandoraFMS/Core.pm index 3a0e58771f..65e97dd3a5 100644 --- a/pandora_server/lib/PandoraFMS/Core.pm +++ b/pandora_server/lib/PandoraFMS/Core.pm @@ -3220,7 +3220,7 @@ sub pandora_validate_event ($$$) { sub generate_status_event ($$$$$$$$) { my ($pa_config, $data, $agent, $module, $status, $last_status, $last_known_status, $dbh) = @_; my ($event_type, $severity); - my $description = "Module " . safe_output($module->{'nombre'}) . " (".safe_output($data).") is "; + my $description = ''; # No events when event storm protection is enabled if ($EventStormProtection == 1) { @@ -3229,7 +3229,7 @@ sub generate_status_event ($$$$$$$$) { # Mark as "validated" any previous event for this module pandora_validate_event ($pa_config, $module->{'id_agente_modulo'}, $dbh); - + # Normal if ($status == 0) { @@ -3239,23 +3239,23 @@ sub generate_status_event ($$$$$$$$) { } ($event_type, $severity) = ('going_down_normal', 2); - $description .= "going to NORMAL"; + $description = $pa_config->{"text_going_down_normal"}; # Critical } elsif ($status == 1) { ($event_type, $severity) = ('going_up_critical', 4); - $description .= "going to CRITICAL"; + $description = $pa_config->{"text_going_up_critical"}; # Warning } elsif ($status == 2) { # From normal if ($last_known_status == 0 || $last_known_status == 4) { ($event_type, $severity) = ('going_up_warning', 3); - $description .= "going to WARNING"; + $description = $pa_config->{"text_going_up_warning"}; # From critical } elsif ($last_known_status == 1) { ($event_type, $severity) = ('going_down_warning', 3); - $description .= "going to WARNING"; + $description = $pa_config->{"text_going_down_warning"}; } else { # Unknown last_status return; @@ -3266,6 +3266,13 @@ sub generate_status_event ($$$$$$$$) { return; } + # Replace macros + my %macros = ( + _module_ => safe_output($module->{'nombre'}), + _data_ => safe_output($data), + ); + $description = subst_alert_macros ($description, \%macros); + # Generate the event if ($status != 0){ pandora_event ($pa_config, $description, $agent->{'id_grupo'}, $module->{'id_agente'}, @@ -3912,7 +3919,14 @@ sub pandora_module_unknown ($$) { # Generate event with severity minor my ($event_type, $severity) = ('going_down_normal', 5); - my $description = "Module " . safe_output($module->{'nombre'}) . " is going to NORMAL"; + my $description = $pa_config->{"text_going_down_normal"}; + + # Replace macros + my %macros = ( + _module_ => safe_output($module->{'nombre'}), + _data_ => 'N/A', + ); + pandora_event ($pa_config, $description, $agent->{'id_grupo'}, $module->{'id_agente'}, $severity, 0, $module->{'id_agente_modulo'}, $event_type, 0, $dbh, 'Pandora', '', '', '', '', $module->{'critical_instructions'}, $module->{'warning_instructions'}, $module->{'unknown_instructions'}); } @@ -3958,7 +3972,14 @@ sub pandora_module_unknown ($$) { # Generate event with severity minor if ($do_event) { my ($event_type, $severity) = ('going_unknown', 5); - my $description = "Module " . safe_output($module->{'nombre'}) . " is going to UNKNOWN"; + my $description = $pa_config->{"going_unknown"}; + + # Replace macros + my %macros = ( + _module_ => safe_output($module->{'nombre'}), + ); + $description = subst_alert_macros ($description, \%macros); + pandora_event ($pa_config, $description, $agent->{'id_grupo'}, $module->{'id_agente'}, $severity, 0, $module->{'id_agente_modulo'}, $event_type, 0, $dbh, 'Pandora', '', '', '', '', $module->{'critical_instructions'}, $module->{'warning_instructions'}, $module->{'unknown_instructions'}); } diff --git a/pandora_server/lib/PandoraFMS/Server.pm b/pandora_server/lib/PandoraFMS/Server.pm index 50fd17a91a..9ec0ae01bd 100644 --- a/pandora_server/lib/PandoraFMS/Server.pm +++ b/pandora_server/lib/PandoraFMS/Server.pm @@ -255,7 +255,7 @@ sub restartEvent ($$) { return unless defined ($self->{'_dbh'}); eval { pandora_event ($self->{'_pa_config'}, $self->{'_pa_config'}->{'servername'} . - $ServerTypes[$self->{'_server_type'}] . " RESTARTING" . (defined ($msg) ? " ($msg)" : ''), + $ServerTypes[$self->{'_server_type'}] . " RESTARTING" . ($msg ne '' ? " ($msg)" : ''), 0, 0, 4, 0, 0, 'system', 0, $self->{'_dbh'}); }; }