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.
- [nondet,multifile]health(-Key,
-Value)
- 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.
Key | is the name of the JSON key. Must be an
atom |
Value | is the Prolog representation for a
JSON (dict) value. |
- [nondet,multifile]hide(?Key)
- 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.