Page 4 of 5
Re: Plug-In check_apache_status, traffic
Posted: Wed Mar 06, 2013 5:42 pm
by A.Cormack
abrist wrote:Try running it from the cli as user "nagios". Report back.
Code: Select all
su nagios
cd /usr/local/nagios/libexec
./check_apache_traffic -H 192.168.19.136 -v traffic -w 5.0 -c 8.0
bash: ./check_apache_traffic: /usr/bin/perl^M: bad interpreter: no such file or directory
You see, now I have a horrible feeling your now going to say "This plug-in uses a perl function that Nagios no longer supports" and I'm not going to be able to use this plug-in... lol
Re: Plug-In check_apache_status, traffic
Posted: Wed Mar 06, 2013 5:54 pm
by abrist
hmmm. It does not like your perl or cannot find it. Post teh output of the following command:
Re: Plug-In check_apache_status, traffic
Posted: Wed Mar 06, 2013 6:03 pm
by lmiltchev
Open your plugin in vi, type:
and hit "Enter". See if it says:
You can change format to unix (if you have to) by running:
BTW, do you see "^M" at the end of the lines?
Re: Plug-In check_apache_status, traffic
Posted: Thu Mar 07, 2013 2:18 pm
by A.Cormack
abrist wrote:hmmm. It does not like your perl or cannot find it. Post teh output of the following command:
Limitchev:
so i changed to
The error has now changed,
Code: Select all
(Return code of 255 is out of bounds)
Re: Plug-In check_apache_status, traffic
Posted: Thu Mar 07, 2013 2:32 pm
by A.Cormack
Now when running the following command on both Nagios and Root
Code: Select all
./check_apache_traffic -H 192.168.19.136
I receive
Code: Select all
[root@localhost libexec]# ./check_apache_traffic -H 192.168.19.136
Can't modify print in scalar assignment at ./check_apache_traffic line 79, near "}) "
syntax error at ./check_apache_traffic line 79, near "}) "
syntax error at ./check_apache_traffic line 82, near "} else"
syntax error at ./check_apache_traffic line 107, near "/) "
(Might be a runaway multi-line // string starting on line 106)
syntax error at ./check_apache_traffic line 116, near "}"
syntax error at ./check_apache_traffic line 119, near "}"
Unmatched right curly bracket at ./check_apache_traffic line 120, at end of line
Unmatched right curly bracket at ./check_apache_traffic line 122, at end of line
Execution of ./check_apache_traffic aborted due to compilation errors.
Re: Plug-In check_apache_status, traffic
Posted: Thu Mar 07, 2013 2:54 pm
by sreinhardt
Why don't you go ahead and attach that file here so we can take a look. Likely going to be a whole lot easier.
Re: Plug-In check_apache_status, traffic
Posted: Thu Mar 07, 2013 2:58 pm
by A.Cormack
The check_Apache_Traffic plugin file is as follows..
Code: Select all
#!/usr/bin/perl
use Getopt::Std;
my %options=();
getopts("H:v:w:c:",\%options);
### CONFIGURATION
%monitor_type = (
'traffic' => 'LiB',
'requests_per_second' => 'LiB',
'bytes_per_request' => 'LiB',
'accesses' => 'LiB',
'bytes_per_second' => 'LiB',
'idle_worker' => 'HiB',
'uptime' => 'LiB',
'current_requests' => 'LiB'
);
%critical = ( 'traffic' => '60', #MB
'requests_per_second' => '6',
'bytes_per_request' => '1024',
'accesses' => '100000',
'bytes_per_second' => '1000',
'idle_worker' => '50',
'current_requests' => '150'
);
%warning = ( 'traffic' => '50', #MB
'requests_per_second' => '4',
'bytes_per_request' => '768',
'accesses' => '50000',
'bytes_per_second' => '800',
'idle_worker' => '150',
'current_requests' => '70'
);
my @pretext = ('APACHE OK','APACHE WARNING','APACHE CRITICAL','APACHE UNKNOWN');
my $server = $options{'H'};
my $mon = $options{'v'};
$warning{$mon} = $options{'w'} if ($options{'w'});
$critical{$mon} = $options{'c'} if ($options{'c'});
help() if (! $options{'H'});
my %data = get_apache_status($server);
if (! keys(%data)) {
print $pretext[3].": $server did not deliver information.\n";
exit(3);
}
if ($mon) {
($status,$text) = CheckValue($mon,\%data);
} else {
($status,$text) = CheckAll(\%data);
}
print $pretext[$status].":".$text."\n";
exit($status);
sub CheckAll(\%) {
my $data = shift();
my %stati = ();
my $fin_status = 0;
foreach my $mon (keys(%monitor_type)) {
my ($status,$txt) = CheckValue($mon,$data);
$stati{$status}{$mon} = $txt;
$fin_status = $status if ($status > $fin_status);
}
if ($fin_status == 2) {
map{ $text .= " $_"; }keys(%{$stati{2}});
} elsif ($fin_status == 1) {
map{ $text .= " $_"; }keys(%{$stati{1}});
}
$text .= ' ('.scalar(keys(%{$stati{2}})).'c/'.scalar(keys(%{$stati{1}})).'w/'.scalar(keys(%{$stati{0}})).'o)';
return($fin_status,$text);
}
sub help() {
print = $warning{$mon}) {
# status WARNING for "lower = better"
$ret = 1;
} else {
# status OK for "lower = better"
$ret = 0;
}
} elsif ($monitor_type{$mon} eq 'HiB') { # Higher is better
if ($$data{$mon} 'STAMPBrowser/1.0');
my $ua = new LWP::UserAgent;
my $url = new URI::URL($uri);
my $req = new HTTP::Request(GET, $url, $hdrs);
my $resp = $ua->request($req);
my $code = $resp->content;
# Server Version: Apache/2.0.59 (Win32) PHP/5.1.6
# Server Built: Jul 27 2006 15:55:03
#
# Current Time: Friday, 11-Apr-2008 09:16:25 W. Europe Daylight Time
# Restart Time: Friday, 11-Apr-2008 06:01:18 W. Europe Daylight Time
# Parent Server Generation: 38
# Server uptime: 3 hours 15 minutes 7 seconds
# Total accesses: 30554 - Total Traffic: 4.9 MB
# 2.61 requests/sec - 439 B/second - 168 B/request
# 3 requests currently being processed, 597 idle workers
my %results = ();
while ($code =~ /([^bytes
} elsif ( $line =~ m/.*MB/) {
$results{'traffic'} = $trafc; # MB->bytes
} elsif ( $line =~ m/.[kK]B/) {
$results{'traffic'} = eval( $2 / 1024 ); # MB->bytes
}
} elsif ( $line =~ /([\d\.]+) requests\/sec - ([\d\.]+) [k]?B\/second - ([\d\.]+) [k]?B\/request/) {
$results{'requests_per_second'} = $1;
$results{'bytes_per_second'} = $2;
$results{'bytes_per_request'} = $3;
} elsif ( $line =~ /(\d+) requests currently being processed, (\d+) idle workers/) {
$results{'current_requests'} = $1;
$results{'idle_worker'} = $2;
}
}
return(%results);
}
Re: Plug-In check_apache_status, traffic
Posted: Thu Mar 07, 2013 4:06 pm
by sreinhardt
I hate to tell you this, but we are not going to work with that comment\plugin. If you want to work through getting k\m\gB working on the original script, that would be fine. However this one either got mangled when being entered to the comments, due to special characters, or never worked properly. There are just too many errors and without understanding the logic behind what he changed it is not worth it. Let me know if you would like to go back to the original one and correct that.
Re: Plug-In check_apache_status, traffic
Posted: Thu Mar 07, 2013 4:20 pm
by A.Cormack
To be honest, I kind of expected what you've said, so no problems.
If its not too much trouble I would be extremely grateful to get the original script working for kB traffic.
Re: Plug-In check_apache_status, traffic
Posted: Thu Mar 07, 2013 4:49 pm
by sreinhardt
Give this a shot! I basically just took the MB line and duplicated it for GB an kB. At the moment it does not differentiate between them, so while you are at kb, you would be expecting hundreds, as it flips to mb, you will need to lower the warn and crit considerably to make sense. If you really need it, I can make it auto calculate, but I would prefer not to. Definitely let me know if this doesn't work as it should.