The WASD server monitor, HTTPdMon, has been around since the year dot
(plus-one-point-five), that is since late 1995 (v3.0) when it seemed
desirable to have a terminal session for keeping an eye on server resources
and behaviour.
I'd be surprised if any WASD site has not seen and used the utility. It is
designed for an 80x24 terminal. There were still plenty of VTs in use in
those days of yore, and my eyes couldn't, even then, cope with 132x on such a
narrow CRT. This also explains why WASD code is constrained to 80x.
https://wasd.vsm.com.au/wasd_root/wasdoc/features/#httpdmonitor
There are four main sections; 1) server process data, 2+3) request processing
data, 4) most recent request. Though in the example below you can see a
couple of additional elements that may be unfamiliar; what looks like (and
is) geolocation information against the most recent request host name/IP, and
an instance status line.
| VSMX86:: 1 HTTPDMON v3.1.0 X86 Sunday, 27-AUG-2023 10:55:12
|
| Process: WASD:80 PID: 000009CC User: HTTP$SERVER Version: 12.1.3
| Up: 0 00:56:52.25 CPU: 0 00:00:07.46 Startup: 9 Exit: %X00000001
| Pg.Flts: 1456 Pg.Used: 12% WsSize: 103280 WsPeak: 40976
| AST: 1988/2000 BIO: 1992/2000 BYT: 4875392/4875392 DIO: 997/1000
| ENQ: 465/500 FIL: 292/300 PRC: 100/100 TQ: 98/100
|
| Request: 11709 Current: 0/0/0/0 Throttle: 0/0/0% Peak: 17/9
| HTTP/2: 450/4% /1.n: 11259/96% SSL: 9480/81% WS: 0/0% Busy: 0
| CONNECT: 15 GET: 11374 HEAD: 9 POST: 219 PUT: 0 (3)
| Admin: 165 Cache: 258/841/0 DECnet: 0/0 Dir: 902
| DCL: CGI:168 CGIplus:6838/6076 RTE:0/0 Prc:857/0 Prct:9
| File: 2193/8 Proxy: 0 Put: 215 SSI: 7 WebDAV: 0/0
|
| 0xx: 1 2xx: 9470 3xx: 26 4xx: 2228 (403:305) 5xx: 47
| Rx: 18,821,629 (0 err) Tx: 802,876,133 (0 err) (248kB/s)
|
| Time: 27 10:52:35 Status: 403 Rx: 533 Tx: 941 Dur: 0.0s
| Service: http://vsmx86.vsm.com.au:80 HTTP/1.1 (0B/s)
| Host: 45.88.90.144 {United States, Virginia, Ashburn}
| Request: POST /boaform/admin/formLogin
|
| Instance Ago Up Count Exit Status Version /Min /Hour
| VSMX86::WASD:80 11s 56m 9 57m %X00000001 12.1.3 0 19
The server process data are generated directly by the utility using the
process PID and $GETJPI. The request processing and most recent request data
are read from the global common as populated by the server.
Where a system is running multiple instances (see below) the HTTPdMon display
shows the number of instances adjacent the node name (top-left, in this case
1), and switches between them at each refresh, the process data, request
processing and recent request reflecting each of the instances in turn, the
'Process:' name indicating the current.
The geolocation data is an optional feature not provided by the standard
HTTPdMon. Three levels are displayed, essentially {country, region, city}
(or something resembling those). It is optional as it is based on a
free-to-use but traffic-limited service provided by http://ip-api.com/.
YMMV so use at your own discretion. Also optional because the service may be
withdrawn or otherwise change at any time. I find it useful to easily see
the origin of certain requests. The functionality is provided by
https://wasd.vsm.com.au/wasd_root/src/utils/geolocate.c
and enabled by linking with the GEOLOCATE object module.
$ SET DEFAULT WASD_ROOT:[SRC.UTILS]
$ @BUILD_HTTPDMON_GEOLOCATE LINK
There is also a QdLogStats that incorporates geolocation, and a standalone
GEOLOCATE utility that can provide geolocation data as DCL symbols, for use
in DCL-mediated scripting.
https://wasd.vsm.com.au/wasd_root/src/utils/
The other perhaps novel element of the example is what is termed the status
display. On systems running multiple instances
https://wasd.vsm.com.au/wasd_root/wasdoc/features/features008.html
or a cluster of systems running WASD instances, it provides a continuous,
near-real-time indication of the processing status of each WASD process.
There are 80x and 132x versions of the data. The fields are explained in
https://wasd.vsm.com.au/wasd_root/wasdoc/features/#status
and won't be repeated here. The intent of this facility is to allow a larger
WASD site to be readily assessed, basically at a glance. For a single
instance running on a single system the above display can be added by the
HTTPdMon /STATUS qualifier. Obviously requires more than the x24 lines of a
standard terminal.
As noted in the documentation above, the same status information is available
using HTTPD/DO=STATUS and when multiple instances on a node or across a
cluster are automatically displayed in a panel at the bottom of the Server
Administration report.
https://wasd.vsm.com.au/wasd_root/wasdoc/features/#serveradministration
Implementation Note: Each instance generates its own unique status data,
folds these into a 64 byte value block of a lock, and in clusters distributes
this using the DLM to every other instance once per minute. For multi-
instance single systems it avoids using the DLM entirely. In this way every
instance has a complete picture of every other instance at that point in time
and even if a complete system in a cluster goes away (shutdown or crash)
other instances will retain and display the last data update.
This item is one of a collection at
https://wasd.vsm.com.au/other/#occasional
|