Hi, Thanks for the numerous response and I was able to have a scrip that merges RECOVERY alerts from nagios with PROBLEM tickets. I need help again for minor modifications.I prefer to merge PROBLEM open tickets to the RECOVERY alert ID.
Here's how the scrip goes: An alert, ** PROBLEM alert - TESTONLYE DC2/check_test is CRITICAL **. RT will assigned ID 2912 A new alert, ** PROBLEM alert - TESTONLYE DC2/check_test is CRITICAL **. RT will assigned new ID 2913. A recovery alert, ** RECOVERY alert - TESTONLYE DC2/check_test is OK **. RT will assigned #2915. The scrip will merge ticket 2915 into 2912 ticket 2912 into 2913 I prefer to merge 2912 and 2913 into 2915. So when I lookup tickets, it'll be easier for us. I've been playing around with the scrips but nothing came out right. Need help. Thanks! The working scrip is below. # If the subject of the ticket matches a pattern suggesting # that this is a Nagios RECOVERY message AND there is # an existing ticket (open or new) in the "IT" queue with a matching # "problem description", (that is not this ticket) # merge this ticket into that ticket # # Based on http://marc.free.net.ph/message/20040319.180325.27528377.en.html my $problem_desc = undef; my $Transaction = $self->TransactionObj; my $subject = $Transaction->Attachments->First->GetHeader('Subject'); if ($subject =~ /\*\* RECOVERY (\w+) - (.*) OK \*\*/) { # This looks like a nagios recovery message $problem_desc = $2; $RT::Logger->debug("Found a recovery msg: $problem_desc"); } else { return 1; } # Ok, now let's merge this ticket with it's PROBLEM msg. my $search = RT::Tickets->new($RT::SystemUser); $search->LimitQueue(VALUE => 'IT'); $search->LimitStatus(VALUE => 'new', OPERATOR => '=', ENTRYAGGREGATOR => 'or'); $search->LimitStatus(VALUE => 'open', OPERATOR => '='); if ($search->Count == 0) { return 1; } my $id = undef; while (my $ticket = $search->Next) { # Ignore the ticket that opened this transation (the recovery one...) next if $self->TicketObj->Id == $ticket->Id; # Look for nagios PROBLEM warning messages... if ( $ticket->Subject =~ /\*\* PROBLEM (\w+) - (.*) (\w+) \*\*/ ) { if ($2 eq $problem_desc){ # Aha! Found the Problem TICKET corresponding to this RECOVERY # ticket $id = $ticket->Id; # Nagios may send more then one PROBLEM message, right? $RT::Logger->debug("Merging ticket " . $self->TicketObj->Id . " into $id because of OA number match."); $self->TicketObj->MergeInto($id); # Keep looking for more PROBLEM tickets... } } } $id || return 1; # Auto-close/resolve this whole thing #$self->TicketObj->SetStatus( "resolved" ); 1;
_______________________________________________ http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users Community help: http://wiki.bestpractical.com Commercial support: [email protected] Discover RT's hidden secrets with RT Essentials from O'Reilly Media. Buy a copy at http://rtbook.bestpractical.com
