Plack::Middleware::ServerStatus::Lite - show server status like Apache's
mod_status
use Plack::Builder;
builder {
enable "Plack::Middleware::ServerStatus::Lite",
path => '/server-status',
allow => [ '127.0.0.1', '192.168.0.0/16' ],
counter_file => '/tmp/counter_file',
scoreboard => '/var/run/server';
$app;
};
% curl http://server:port/server-status
Uptime: 1234567789
Total Accesses: 123
BusyWorkers: 2
IdleWorkers: 3
--
pid status remote_addr host method uri protocol ss
20060 A 127.0.0.1 localhost:10001 GET / HTTP/1.1 1
20061 .
20062 A 127.0.0.1 localhost:10001 GET /server-status HTTP/1.1 0
20063 .
20064 .
# JSON format
% curl http://server:port/server-status?json
{"Uptime":"1332476669","BusyWorkers":"2",
"stats":[
{"protocol":null,"remote_addr":null,"pid":"78639",
"status":".","method":null,"uri":null,"host":null,"ss":null},
{"protocol":"HTTP/1.1","remote_addr":"127.0.0.1","pid":"78640",
"status":"A","method":"GET","uri":"/","host":"localhost:10226","ss":0},
...
],"IdleWorkers":"3"}
Plack::Middleware::ServerStatus::Lite is a middleware that display server status
in multiprocess Plack servers such as Starman and Starlet. This middleware
changes status only before and after executing the application. so cannot
monitor keepalive session and network i/o wait.
- path
-
path => '/server-status',
location that displays server status
- allow
-
allow => '127.0.0.1'
allow => ['192.168.0.0/16', '10.0.0.0/8']
host based access control of a page of server status. supports
IPv6 address.
- scoreboard
-
scoreboard => '/path/to/dir'
Scoreboard directory, Middleware::ServerStatus::Lite stores
processes activity information in
- counter_file
-
counter_file => '/path/to/counter_file'
Enable Total Access counter
- skip_ps_command
-
skip_ps_command => 1 or 0
ServerStatus::Lite executes `ps command` to find all worker
processes. But in some systems that does not mount "/proc" can
not find any processes. IF 'skip_ps_command' is true, ServerStatus::Lite
does not `ps`, and checks only processes that already did process
requests.
The largest integer that 32-bit Perl can store without loss of precision is
2**53. So rather than getting all fancy with Math::BigInt, we're just going to
be conservative and wrap that around to 0. That's enough to count 1 GB per
second for a hundred days.
Seconds since beginning of most recent request
Masahiro Nagano <kazeburo {at} gmail.com>
Original ServerStatus by cho45
<http://github.com/cho45/Plack-Middleware-ServerStatus>
Plack::Middleware::ServerStatus::Tiny
This library is free software; you can redistribute it and/or modify it under
the same terms as Perl itself.