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.