PublicShow sourcehttp_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.

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:
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.
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.