NAME
Parse::Apache::ServerStatus - Simple module to parse apache's server-status.
SYNOPSIS
use Parse::Apache::ServerStatus;
my $url = 'http://localhost/server-status';
# or http://localhost/server-status?auto
my $prs = Parse::Apache::ServerStatus->new(
url => 'http://localhost/server-status',
timeout => 30
);
my $stat = $prs->get or die $prs->errstr;
# or
my $prs = Parse::Apache::ServerStatus->new;
foreach my $url (@urls) {
$prs->request(url => $url, timeout => 30) or die $prs->errstr;
my $stat = $prs->parse or die $prs->errstr;
}
# or both in one step
foreach my $url (@urls) {
my $stat = $prs->get(url => $url, timeout => 30)
or die $prs->errstr;
}
DESCRIPTION
This module parses the content of apache's server-status and countes the current status by each process. It works nicely with apache versions 1.3 and 2.x.
METHODS
new()
Call new()
to create a new Parse::Apache::ServerStatus object.
request()
This method requests the url and safes the content into the object.
parse()
Call parse()
to parse the server status. This method returns a hash reference with the parsed content. There are diffenrent keys that contains the following counts:
p Parents (this key will be kicked in future releases, dont use it)
r Requests currenty being processed
i Idle workers
_ Waiting for Connection
S Starting up
R Reading Request
W Sending Reply
K Keepalive (read)
D DNS Lookup
C Closing connection
L Logging
G Gracefully finishing
I Idle cleanup of worker
. Open slot with no current process
The following keys are set to 0 if extended server-status is not activated.
ta Total accesses
tt Total traffic
rs Requests per second
bs Bytes per second
br Bytes per request
It's possible to call parse()
with the content as argument.
my $stat = $prs->parse($content);
If no argument is passed then parse()
looks into the object for the content that is stored by request()
.
get()
get()
calls request()
and parse()
in one step. It's possible to set the options url
and timeout
and it returns the hash reference that is returned by parse()
.
content()
Call content()
if you need the full content of server-status.
my $content = $prs->content;
errstr()
errstr()
contains the error string if the requests fails.
ua()
Access the LWP::UserAgent
object if you want to set your own properties.
OPTIONS
There are only two options: url
and timeout
.
Set url
with the complete url like http://localhost/server-status
. There is only http supported by default, not https or other protocols.
Set timeout
to define the time in seconds to abort the request if there is no response. The default is set to 180 seconds if the options isn't set.
EXAMPLE
use strict;
use warnings;
use Parse::Apache::ServerStatus;
$|++;
my $prs = Parse::Apache::ServerStatus->new(
url => 'http://localhost/server-status',
# url => 'http://localhost/server-status?auto',
timeout => 10
);
my @order = qw/p r i _ S R W K D C L G I . ta tt rs bs br/;
my $interval = 10;
my $header = 20;
while ( 1 ) {
print map { sprintf("%8s", $_) } @order;
print "\n";
for (my $i = 0; $i <= $header; $i++) {
my $stat = $prs->get or die $prs->errstr;
print map { sprintf("%8s", $stat->{$_}) } @order;
print "\n";
sleep($interval);
}
}
EXAMPLE CONFIGURATION FOR APACHE
This is just an example to activate the handler server-status for localhost.
ExtendedStatus On
<Location /server-status>
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from localhost
</Location>
into the configuration file.
PREREQUISITES
LWP::UserAgent
Params::Validate
Class::Accessor::Fast
EXPORTS
No exports.
REPORT BUGS
Please report all bugs to <jschulz.cpan(at)bloonix.de>.
AUTHOR
Jonny Schulz <jschulz.cpan(at)bloonix.de>.
COPYRIGHT
Copyright (C) 2007-2010 by Jonny Schulz. All rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.