Okay here's a quick and dirty little perl script to monitor the PRI Status and mimic nagios plugin output.
-Daniel On Mon, 21 Feb 2005 07:50:45 -0600, Brian Roy <[EMAIL PROTECTED]> wrote: > On Mon, 21 Feb 2005 08:00:40 -0500, Daniel Corbe > <[EMAIL PROTECTED]> wrote: > > I need to make sure the PRIs connected to my box stay up and I need to > > make sure calls are not failing for any reason. Are there any * > > monitoring packages like this? > > There aren't any specific tools that do exactly what you want afaik. > It wouldn't take much to taylor a few things yourself though. > > As for the PRI processing calls. You could always drop a call file in > from the cron every 10 minutes that makes a call out and back in. Then > you you can run a script that looks over your CDR to verify that the > call was received. Have it call a specific context or application to > look for. > > As for calls "failing" this could be a challange. What do you consider > failing? You could use something like my-swatch to tail the log file > looking for certain patterns. PRI alarms would be an obvious. > > Might take you a day or so to get these things going, but it would be > well worth your time and piece of mind. > > -Chuji >
#!/usr/bin/perl ############################################################################### # Michael Jastremski # Monitor Asterisk PBX via Manager Interface # http://megaglobal.net/docs/ ############################################################################### # Based upon: # # TACI - Trivial Asterisk Call Interface v.02 # Last update 3/30/2004 # Tony Wasson [EMAIL PROTECTED] # # # Modified by Daniel Corbe to monitor PRI spans # [EMAIL PROTECTED] # # -Daniel # $ENV{'PATH'}=''; $ENV{'BASH_ENV'}=''; $ENV{'ENV'}=''; $| = 1; use Net::Telnet (); use File::Basename; use lib "/usr/local/nagios/libexec"; use utils qw(%ERRORS); my $mgr_user = "nagios"; my $mgr_secret = "XyXyXyXyXy"; my $failed = 0; my $reason = undef; my $server_ip = "127.0.0.1"; my $prispan = $ARGV[0]; $tn = new Net::Telnet (Port => 5038, Prompt => '/.*[\$%#>] $/', Output_record_separator => '', Errmode => 'return' ); $tn->open($server_ip); $tn->waitfor('/0\n$/'); $tn->print("Action: Login\nUsername: $mgr_user\nSecret: $mgr_secret\n\n"); unless($tn->waitfor('/Authentication accept*/')) { $failed = 1; $reason = "Failed Connect"; } else { $tn->print("Action: Command\n"); $tn->print("Command: pri show span $prispan\n\n"); #Response: Follows #Primary D-channel: 24 #Status: Provisioned, Up, Active unless($tn->waitfor('/Response: Follows\nPrimary D-channel: (.*)?\nStatus: Provisioned, Up, Active/')) { $failed = 1; $reason = "PRI Span #" . $prispan . " is down"; } else { $tn->print("Action: Logoff\n\n"); } } print "PRI Span #$prispan is up\n" unless $failed; print "$reason\n" if $failed; exit $ERRORS{'CRITICAL'} if $failed; exit $ERRORS{'OK'}; exit 0; __END__ TODO: -- Maybe check other variables?
_______________________________________________ Asterisk-Users mailing list [email protected] http://lists.digium.com/mailman/listinfo/asterisk-users To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-users
