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 the file_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.
- Arguments:
-
Key | - is the name of the JSON key. Must be an atom |
Value | - is the Prolog representation for a JSON (dict) value. |
- 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.