SLANT-CGI(8)

NAME
slant-cgi - CGI program returning slant data

SYNOPSIS
slant-cgi

DESCRIPTION
The slant-cgi utility produces system statistics as recorded by slant-collectd(8). It interfaces with the database by default in /var/www/data/slant.db.

The CGI program accepts HTTP GET requests for the /index.json resource, which has the aliases /index, /, or the empty request. Other resources return an HTTP code 404. Non-GET request return an HTTP code 405. Other (non-200) codes are possible and follow standard definitions.

On success, slant-cgi returns an HTTP code 200 and a valid JSON document.

The document consists of the following. In this description, integers (int) are serialised from 64-bit signed numbers. Real-valued numbers (real) are serialised from double-precision numbers.

    {   version: "x.y.z",
      timestamp: int,
         system: { system },
           qmin: [ records... ],
            min: [ records... ],
           hour: [ records... ],
            day: [ records... ],
           week: [ records... ],
           year: [ records... ]
    }

The version is the software suite version. This is informational.

The system object consists of system information:

    {      boot: int,
        machine: string,
      osversion: string,
      osrelease: string,
        sysname: string
    }

It consists only of boot, the UNIX epoch value for when the system was last booted. The machine, osversion, osrelease, and sysname mirror the return values of uname(1).

The remaining values are the possibly-empty sets of records accumulated over a given interval of time in quarter-minute quanta. So each qmin record consists of exactly one entry; each min record consists of at least one and at most four entries, one for each quarter-minute; each hour has at most 240, etc.

There are finite records (except for yearly ones) bound to a circular buffer per interval. When a record is filled, such as with four quarter-minute entries into a minute record, the next entry creates a new record with one entry while the oldest is discarded.

The circular buffer is large enough for a reasonable glimpse into the past, with emphasis placed on recent data: 40 quarter-minute records (10 minutes), 300 minute records (5 hours), 96 hourly (5 days), 28 daily (4 weeks), 104 weekly (two years), endless yearly entries.

Each record consists of the following:

    {    ctime: int,
       entries: int,
           cpu: real,
           mem: real,
         netrx: int,
         nettx: int,
      discread: int,
     discwrite: int,
        nprocs: real,
        rprocs: real,
        nfiles: real,
      interval: int,
            id: int
    }

The fields are defined as follows:

ctime
    a UNIX epoch of when the record was started (first entry)

entries
    the number of entries, so front-end displays will need to average all data by this number

cpu average processor utilisation over all processing unit

mem active memory over all available memory

netrx
    bytes received per second over all interfaces

nettx
    bytes transmitted per second over all interfaces

discread
    bytes read per second over all configured devices

discwrite
    bytes written per second over all configured devices

nprocs
    number of running processes over all possible processes

rprocs
    number of configured processes running over total configured

nfiles
    number of open files over all possible open files

interval
    the type of interval starting with zero for quarter-minute, one fo minute, etc.

id  a unique record identifier

SEE ALSO
slant(1), slant-collectd(8)