Hi Sunnavy,<br><br>Thanks a lot for this tip, because on the link (<a href="http://wiki.bestpractical.com/view/AutoCloseOnNagiosRecoveryMessages">http://wiki.bestpractical.com/view/AutoCloseOnNagiosRecoveryMessages</a>) it was not wrote.<br>
<br>I have read the file README.<br><br>After make and install, I have add this line in file /opt/rt3/etc/RT_SiteConfig.pm<br>Set(@Plugins,qw(RT::Extension::Nagios));<br><br>But when I have initialized database (make initdb), i have a message error :<br>
[Mon Nov  2 13:30:56 2009] [error]: Action 'Nagios' not found (/opt/rt3/sbin/../lib/RT/Handle.pm:987)<br>
<br>And the scrip after that doesn't close always any messages. In the log :<br>[Mon Nov  2 13:45:32 2009] [debug]: Committing scrip #13 on txn #451 of ticket #55 (/opt/rt3/bin/../lib/RT/Scrips_Overlay.pm:190)<br>[Mon Nov  2 13:45:32 2009] [debug]: Found a recovery msg:  ((eval 3253):18)<br>
<br>And that's all.<br><br><br><br><br><br>Regards,<br><br>Rodolphe<br><br><br>The scrip<br><br>---------------------------------<br><br># If the subject of the ticket matches a pattern suggesting<br># that this is a Nagios RECOVERY message  AND there is<br>
# an existing ticket (open or new) in the "General" queue with a matching<br># "problem description", (that is not this ticket)<br># merge this ticket into that ticket<br>#<br># Based on <a href="http://marc.free.net.ph/message/20040319.180325.27528377.en.html">http://marc.free.net.ph/message/20040319.180325.27528377.en.html</a><br>
<br>my $problem_desc = undef;<br><br>my $Transaction = $self->TransactionObj;<br>my $subject = $Transaction->Attachments->First->GetHeader('Subject');<br>#if ($subject =~ /\*\* RECOVERY (\w+) - (.*) OK \*\*/) {<br>
if ($subject =~ /\*\* RECOVERY (.*) OK \*\*/) {<br>    # This looks like a nagios recovery message<br>    $problem_desc = $2;<br><br>    $RT::Logger->debug("Found a recovery msg: $problem_desc");<br>} else {<br>
    $RT::Logger->debug("Not a recovery msg: $problem_desc");<br>    return 1;<br>}<br><br># Ok, now let's merge this ticket with it's PROBLEM msg.<br>my $search = RT::Tickets->new($RT::SystemUser);<br>
$search->LimitQueue(VALUE => 'General');<br>$search->LimitStatus(VALUE => 'new', OPERATOR => '=', ENTRYAGGREGATOR => 'or');<br>$search->LimitStatus(VALUE => 'open', OPERATOR => '=');<br>
<br>if ($search->Count == 0) { return 1; }<br>my $id = undef;<br>while (my $ticket = $search->Next) {<br>    # Ignore the ticket that opened this transation (the recovery one...)<br>    next if $self->TicketObj->Id == $ticket->Id;<br>
    # Look for nagios PROBLEM warning messages...<br>    if ( $ticket->Subject =~ /\*\* PROBLEM (\w+) - (.*) (\w+) \*\*/ ) {<br>        if ($2 eq $problem_desc){<br>            # Aha! Found the Problem TICKET corresponding to this RECOVERY<br>
            # ticket<br>            $id = $ticket->Id;<br>            # Nagios may send more then one PROBLEM message, right?<br>            $RT::Logger->debug("Merging ticket " . $self->TicketObj->Id . " into $id because of OA number match.");<br>
            $self->TicketObj->MergeInto($id);<br>            # Keep looking for more PROBLEM tickets...<br>        }<br>    }<br>}<br><br>$id || return 1;<br># Auto-close/resolve this whole thing<br>$self->TicketObj->SetStatus( "resolved" );<br>
1;<br><br><br>-----------------------------------<br><br><br><br><div class="gmail_quote">2009/11/2 sunnavy <span dir="ltr"><<a href="mailto:sunnavy@bestpractical.com" target="_blank">sunnavy@bestpractical.com</a>></span><br>


<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div>Hi Rodolphe<br>
<br>
Maybe you're interested in the RT extension attached, which is based on the wiki you read.<br>
I'm thinking of publishing it to CPAN soon.<br>
<br>
best wishes<br>
sunnavy<br>
<br>
On 09-11-02 12:00, Rodolphe ALT wrote:<br>
</div><div>> Hi all,<br>
><br>
> I am trying create a scrip in RT3 for close automaticly the tickets from<br>
> Nagios alert.<br>
><br>
> I am working from the scrips "AutoCloseOnNagiosRecoveryMessages - RT<br>
> Integration" from website<br>
><br>
> <a href="http://exchange.nagios.org/directory/Addons/Helpdesk-and-Ticketing/RT/AutoCloseOnNagiosRecoveryMessages-%252D-RT-Integration/details" target="_blank">http://exchange.nagios.org/directory/Addons/Helpdesk-and-Ticketing/RT/AutoCloseOnNagiosRecoveryMessages-%252D-RT-Integration/details</a><br>




><br>
> <a href="http://wiki.bestpractical.com/view/AutoCloseOnNagiosRecoveryMessages" target="_blank">http://wiki.bestpractical.com/view/AutoCloseOnNagiosRecoveryMessages</a><br>
><br>
</div>> <goog_1257158193783><br>
<div><div></div><div>><br>
> <a href="https://wiki.koumbit.net/RequestTracker/NagiosBridge" target="_blank">https://wiki.koumbit.net/RequestTracker/NagiosBridge</a><br>
><br>
><br>
><br>
> But with RT3 3.8.6 and Nagios 3.2, The subject of the email is not analyzed<br>
> correctly.<br>
><br>
> I mean when I have enabled debug log and this is a log messages like :<br>
> [Mon Nov  2 10:30:33 2009] [debug]: Committing scrip #14 on txn #397 of<br>
> ticket #46 (/opt/rt3/bin/../lib/RT/Scrips_Overlay.pm:190)<br>
> [Mon Nov  2 10:30:33 2009] [debug]: Message Lancement Scrip 14 ((eval<br>
> 2528):12)<br>
> [Mon Nov  2 10:30:33 2009] [debug]: Found a recovery msg:  ((eval 2528):21)<br>
> [Mon Nov  2 10:30:33 2009] [debug]: Boucle 14 : 45 ((eval 2528):36)<br>
> [Mon Nov  2 10:30:33 2009] [debug]: Boucle 14 : 46 ((eval 2528):36)<br>
> [Mon Nov  2 10:30:33 2009] [debug]: Boucle 14 : 27 ((eval 2528):36)<br>
><br>
> And that' all. not Merging ticket !<br>
><br>
><br>
> in scrip, I think this is the line who detect not the ticket :<br>
>     if ( $ticket->Subject =~ /\*\* PROBLEM (\w+(?:\s*\d+)?) - (.*) is (\w+)<br>
> \*\*/ ) {<br>
><br>
> I have tested also without success :<br>
> if ( $ticket->Subject =~ /\*\* PROBLEM (\w+) - (.*) (\w+) \*\*/ ) {<br>
><br>
><br>
> And the email subject is like :<br>
> ** PROBLEM Service Alert: srv08.athome.local/Portail is CRITICAL **<br>
> ** RECOVERY Service Alert: srv08.athome.local/Portail is OK **<br>
><br>
><br>
> Can you help me to resolve this code ?<br>
><br>
><br>
> Thanks,<br>
><br>
> Regards,<br>
><br>
> Rodolphe<br>
><br>
><br>
> ----------------<br>
><br>
><br>
> ALL CODE of actual scrip is here :<br>
><br>
> # If the subject of the ticket matches a pattern suggesting<br>
> # that this is a Nagios RECOVERY message  AND there is<br>
> # an existing ticket (open or new) in the "General" queue with a matching<br>
> # "problem description", (that is not this ticket)<br>
> # merge this ticket into that ticket<br>
> #<br>
> # Based on <a href="http://marc.free.net.ph/message/20040319.180325.27528377.en.html" target="_blank">http://marc.free.net.ph/message/20040319.180325.27528377.en.html</a><br>
><br>
> my $problem_desc = undef;<br>
> my $report_type = undef;<br>
><br>
> $RT::Logger->debug("Message Lancement Scrip 14");<br>
><br>
> my $Transaction = $self->TransactionObj;<br>
> my $subject = $Transaction->Attachments->First->GetHeader('Subject');<br>
> if ($subject =~ /\*\* RECOVERY (.*) OK \*\*/) {<br>
>     # This looks like a nagios recovery message<br>
>     $report_type = $1;<br>
>     $problem_desc = $3;<br>
><br>
>     $RT::Logger->debug("Found a recovery msg: $problem_desc");<br>
> } else {<br>
>     $RT::Logger->debug("Not a recovery msg: $problem_desc");<br>
>     return 1;<br>
> }<br>
><br>
> # Ok, now let's merge this ticket with it's PROBLEM msg.<br>
> my $search = RT::Tickets->new($RT::SystemUser);<br>
> $search->LimitQueue(VALUE => 'General');<br>
> $search->LimitStatus(VALUE => 'new', OPERATOR => '=', ENTRYAGGREGATOR =><br>
> 'or');<br>
> $search->LimitStatus(VALUE => 'open', OPERATOR => '=');<br>
><br>
> if ($search->Count == 0) { return 1; }<br>
> my $id = undef;<br>
> while (my $ticket = $search->Next) {<br>
>     $RT::Logger->debug("Boucle 14 : ".($ticket->Id));<br>
>     # Ignore the ticket that opened this transation (the recovery one...)<br>
>     next if $self->TicketObj->Id == $ticket->Id;<br>
>     # Look for nagios PROBLEM warning messages...<br>
>     if ( $ticket->Subject =~ /\*\* PROBLEM (\w+(?:\s*\d+)?) - (.*) is (\w+)<br>
> \*\*/ ) {<br>
>         if ($2 eq $problem_desc){<br>
>             # Aha! Found the Problem TICKET corresponding to this RECOVERY<br>
>             # ticket<br>
>             $id = $ticket->Id;<br>
>             # Nagios may send more then one PROBLEM message, right?<br>
>             $RT::Logger->debug("Merging ticket " . $self->TicketObj->Id . "<br>
> into $id because of OA number match.");<br>
>             $self->TicketObj->MergeInto($id);<br>
>             # Keep looking for more PROBLEM tickets...<br>
>             $RT::Logger->debug("Scrip 14 : 1 ticket trouvé $ticket->Id  avec<br>
> la régle 1!");<br>
><br>
>         }<br>
>     }<br>
><br>
>    if ( $ticket->Subject =~ /\*\* PROBLEM (\w+) - (.*) (\w+) \*\*/ ) {<br>
>     $RT::Logger->debug("Scrip 14 : 1 ticket trouvé $ticket->Id  avec la<br>
> régle 2!");<br>
>    }<br>
> }<br>
><br>
> $id || return 1;<br>
><br>
> if ($report_type eq "RECOVERY") {<br>
>   # Auto-close/resolve this whole thing<br>
>   $self->TicketObj->SetStatus( "resolved" );<br>
> #$Ticket->_Set(Field => 'Status', Value => 'resolved', RecordTransaction =><br>
> 0);<br>
><br>
> }<br>
> 1;<br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
> ----------------<br>
<br>
</div></div><div><div></div><div>> _______________________________________________<br>
> <a href="http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users" target="_blank">http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-users</a><br>
><br>
> Community help: <a href="http://wiki.bestpractical.com" target="_blank">http://wiki.bestpractical.com</a><br>
> Commercial support: <a href="mailto:sales@bestpractical.com" target="_blank">sales@bestpractical.com</a><br>
><br>
><br>
> Discover RT's hidden secrets with RT Essentials from O'Reilly Media.<br>
> Buy a copy at <a href="http://rtbook.bestpractical.com" target="_blank">http://rtbook.bestpractical.com</a><br>
<br>
</div></div></blockquote></div><br>