Search Exchange
Search All Sites
Nagios Live Webinars
Let our experts show you how Nagios can help your organization.Login
Directory Tree
check_apache_status
115453
File | Description |
---|---|
check_apache_status | Unknown Tag: 'FileDesc1' |
Meet The New Nagios Core Services Platform
Built on over 25 years of monitoring experience, the Nagios Core Services Platform provides insightful monitoring dashboards, time-saving monitoring wizards, and unmatched ease of use. Use it for free indefinitely.
Monitoring Made Magically Better
- Nagios Core on Overdrive
- Powerful Monitoring Dashboards
- Time-Saving Configuration Wizards
- Open Source Powered Monitoring On Steroids
- And So Much More!
I know there are other plugins for the same. But I think this one is a bit more flexible, as it checks on several different values.
**usage: check_apache_status -H HOSTNAME -v VARNAME -c LIMIT -w LIMIT**
If called without -v, it will check all values based on internal defined -c and -w values and will return the "worst" result.
VARNAME might be one of:
* traffic (provided in MB)
* requests_per_second
* bytes_per_request
* accesses
* bytes_per_second
* idle_worker
* current_requests
* uptime will always deliver UNKNOWN
**usage: check_apache_status -H HOSTNAME -v VARNAME -c LIMIT -w LIMIT**
If called without -v, it will check all values based on internal defined -c and -w values and will return the "worst" result.
VARNAME might be one of:
* traffic (provided in MB)
* requests_per_second
* bytes_per_request
* accesses
* bytes_per_second
* idle_worker
* current_requests
* uptime will always deliver UNKNOWN
Reviews (2)
bypatyx7, November 7, 2013
I've tried to contact the owner, but to no avail.
I will be keeping a wip version here: https://github.com/patyx7/nagios-plugins , if any are interested.
I aim to get it working with Apache 1, add some more vars to it, and have also fixed the traffic issue with little modification.
Thanks
I will be keeping a wip version here: https://github.com/patyx7/nagios-plugins , if any are interested.
I aim to get it working with Apache 1, add some more vars to it, and have also fixed the traffic issue with little modification.
Thanks
Hi,
I fix the problem with measure in KB, MB and GB from traffic.
Thank's for the script
These is the new script:
#!/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);
}
I fix the problem with measure in KB, MB and GB from traffic.
Thank's for the script
These is the new script:
#!/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);
}