Hi all,
I’m experimenting with the Nagios Autoclose.
It seems I get an abort caused by a null pointer exception.
[Tue Jul 5 14:47:02 2011] [info]: Extracted type, category, host,
problem_type and problem_severity from
subject with values RECOVERY, Service, sambadev2, sambadev2_root and OK
(/opt/rt4/local/plugins/RT-Extension-Nagios/lib/RT/Action/UpdateNagiosTickets.pm:35)
[Tue Jul 5 14:47:02 2011] [error]: Scrip Commit 12 died. - Can’t call
method “SetStatus” on an undefined value at
/opt/rt4/local/plugins/RT-Extension-Nagios/lib/RT/Action/UpdateNagiosTickets.pm
line 76.
Stack:
[/opt/rt4/local/plugins/RT-Extension-Nagios/lib/RT/Action/UpdateNagiosTickets.pm:76]
[/opt/rt4/sbin/…/lib/RT/ScripAction.pm:232]
[/opt/rt4/sbin/…/lib/RT/Scrip.pm:475]
[/opt/rt4/sbin/…/lib/RT/Scrips.pm:189]
[/opt/rt4/sbin/…/lib/RT/Transaction.pm:198]
[/opt/rt4/sbin/…/lib/RT/Record.pm:1450]
[/opt/rt4/sbin/…/lib/RT/Ticket.pm:669]
[/opt/rt4/sbin/…/lib/RT/Interface/Email.pm:1495]
[/opt/rt4/share/html/REST/1.0/NoAuth/mail-gateway:61]
(/opt/rt4/sbin/…/lib/RT/Scrip.pm:483)
[Tue Jul 5 14:47:02 2011] [info]: Ticket 306 created in queue ‘Nagios’
by gsollazz (/opt/rt4/sbin/…/lib/RT/Ticket.pm:681)
What is causing this?
I have this as my reg exp:
if ( my ( $type, $category, $host, $problem_type, $problem_severity ) =
$subject =~
m{(PROBLEM|RECOVERY|ACKNOWLEDGEMENT)\s+(Service|Host) Alert:
([^/]+)/?(.)\s+is\s+(\w+)}i
)
#m{(PROBLEM|RECOVERY|ACKNOWLEDGEMENT)\s+alert\s±\s+(Service|Host):
([^/]+)/?(.)\s+is\s+(\w+)}i
#qr{(PROBLEM|RECOVERY|ACKNOWLEDGEMENT)\s+(Service|Host) Alert:
([^/]+)/?(.*)\s+is\s+(\w+)}i
{
$problem_type ||= ‘’;
$RT::Logger->info(
“Extracted type, category, host, problem_type and problem_severity from
subject with values $type, $category, $host, $problem_type and
$problem_severity”
);
my $tickets = RT::Tickets->new( $self->CurrentUser );
$tickets->LimitQueue( VALUE => $new_ticket->Queue )
unless RT->Config->Get(‘NagiosSearchAllQueues’);
$tickets->LimitSubject(
VALUE => “$category $host”
. ( $problem_type ? “/$problem_type” : ‘’ ),
OPERATOR => ‘LIKE’,
);
my @active = RT::Queue->ActiveStatusArray();
for my $active (@active) {
$tickets->LimitStatus(
VALUE => $active,
OPERATOR => ‘=’,
);
}
However, line 78 is just this:
my ( $ret, $msg ) = $merged_ticket->SetStatus($resolved);
So I assume somewhat it doesn’t manage to merge the tickets. But why
does it fail here and not, say, when it calls “MergeInto”?
Thanks to anyone who can help,
Giuseppe
Giuseppe Sollazzo
Senior Systems Analyst
Computing Services
Information Services
St. George’s, University Of London
Cranmer Terrace
London SW17 0RE
Email: gsollazz@sgul.ac.uk
Direct Dial: +44 20 8725 5160
Fax: +44 20 8725 3583