http_server_health.pl -- 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.
- 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. - 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:
- up
- Defined to be
true
. - epoch
- Starting time of the server in seconds after Jan 1, 1970 UTC.
- cpu_time
- Total process CPU usage in seconds.
- threads
- Number of active threads
- workers
- Number of HTTP worker threads.
- requests
- Number of HTTP requests processed.
- bytes_sent
- Number of bytes send in reply to HTTP requests.
- open_files
- 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 thefile_no(Fd)
property. - loadavg
- 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
- heap
- When compiled with TCMalloc, this provides two properties:
- inuse:Bytes
- Total amount of in-use memory in bytes
- size:Bytes
- Same as
inuse
, but including the TCMalloc overhead and (thus) memory that has been freed and is not (yet) reused.
- 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.