In a similar way, Apache can be persuaded to cough up comprehensive diagnostic information by including and invoking the module mod_status:
AddModule modules/standard/mod_status.o
This produces invaluable information for the webmaster of a busy site, enabling her to track down problems before they become disasters. However, since this is really our own business, we don't want the unwashed mob out on the Web jostling to see our secrets. To protect the information, we therefore restrict it to a whole or partial IP address that describes our own network and no one else's.
For this exercise, which includes info as previously, the httpd.conf in ... /site.status file should look like this:
User webuser Group webgroup ServerName www.butterthlies.com DocumentRoot /usr/www/APACHE3/site.status/htdocs ExtendedStatus on <Location /status> order deny,allow allow from 192.168.123.1 deny from all SetHandler server-status </Location> <Location /info> order deny,allow allow from 192.168.123.1 deny from all SetHandler server-status SetHandler server-info </Location>
The allow from directive keeps our laundry private.
Remember the way order works: the last entry has the last word. Notice also the use of SetHandler , which sets a handler for all requests to a directory, instead of AddHandler, which specifies a handler for particular file extensions. If you then access www.butterthlies.com/status, you get this response:
Apache Server Status for www.butterthlies.com Server Version: Apache/1.3.14 (Unix) Server Built: Feb 13 2001 15:20:23 Current Time: Tuesday, 13-Feb-2001 16:03:30 GMT Restart Time: Tuesday, 13-Feb-2001 16:01:49 GMT Parent Server Generation: 0 Server uptime: 1 minute 41 seconds Total accesses: 21 - Total Traffic: 49 kB CPU Usage: u.0703125 s.015625 cu0 cs0 - .0851% CPU load .208 requests/sec - 496 B/second - 2389 B/request 1 requests currently being processed, 5 idle servers _W___ _.......................................................... ................................................................ ................................................................ ................................................................ Scoreboard Key: "_" Waiting for Connection, "S" Starting up, "R" Reading Request, "W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup, "L" Logging, "G" Gracefully finishing, "." Open slot with no current process Srv PID Acc M CPU SS Req Conn Child Slot Client VHost Request 0-0 2434 0/1/1 _ 0.01 93 5 0.0 0.00 0.00 192.168.123.1 www.butterthlies.com GET /status HTTP/1.1 1-0 2435 20/20/20 W 0.08 1 0 47.1 0.05 0.05 192.168.123.1 www.butterthlies.com GET /status?refresh=2 HTTP/1.1 Srv Child Server number - generation PID OS process ID Acc Number of accesses this connection / this child / this slot M Mode of operation CPU CPU usage, number of seconds SS Seconds since beginning of most recent request Req Milliseconds required to process most recent request Conn Kilobytes transferred this connection Child Megabytes transferred this child Slot Total megabytes transferred this slot
There are several useful variants on the basic status request made from the browser:
These can also be combined by putting a comma between them, i.e., http://www.butterthlies.com/status?notable,refresh=10.
The ExtendedStatus directive controls whether the server keeps track of extended status information for each request.
ExtendedStatus On|Off Default: Off server config
This is only useful if the status module is enabled on the server.
This setting applies to the entire server and cannot be enabled or disabled on a VirtualHost-by-VirtualHost basis. It can adversely affect performance.
Copyright © 2003 O'Reilly & Associates. All rights reserved.