PublicShow -- HTTP Server health statistics

This module defines an HTTP handler for /health. The handler returns a JSON document with elementary health statistics on the running instance. The location can be changed using http_handler/3. Keys may be added using additional clauses for health/2 or hidden using hide/1.

This library defines an HTTP handler and defines two multifile predicates (health/2 and hide/1) to control the information presented.

Source server_health(+Request)
HTTP handler that replies with the overall health of the server. Returns a JSON object from all solutions of health/2.

Processes an optional parameter fields to specify the fields that should be returned. The fields content is "," or white space delimited.

Source health(-Key, -Value) is nondet[multifile]
Multifile extensible. True when Key/Value can be reported as a health statistics. Keys may be added by adding clauses to this multifile predicate. Keys may be filtered using hide/1. Predefined Key values are:
Defined to be true.
Starting time of the server in seconds after Jan 1, 1970 UTC.
Total process CPU usage in seconds.
Number of active threads
Number of HTTP worker threads.
Number of HTTP requests processed.
Number of bytes send in reply to HTTP requests.
Number of open file streams. This includes physical files as well as sockets (except for Windows). On Linux we count the file handles in /proc/self/fd. Otherwise we use stream_property/2 with the file_no(Fd) property.
An array holding the load average over the last [1,5,15] minutes. This key is only supported on Linux machines. It is based on /proc/loadavg
When compiled with TCMalloc, this provides two properties:
Total amount of in-use memory in bytes
Same as inuse, but including the TCMalloc overhead and (thus) memory that has been freed and is not (yet) reused.
Key- is the name of the JSON key. Must be an atom
Value- is the Prolog representation for a JSON (dict) value.
Source hide(?Key) is nondet[multifile]
Multifile hook. If true for a specific Key, hide this statistics from the output. This may be used to hide keys that are considered a security risk.