monitoringserver
v1.0.0
Published
This modules aggregates time series metrics and logs for monitoring purpose
Readme
Description
This modules aggregates time series metrics and logs for monitoring purpose.
Metrics
Useful to store number of online users / cron execution time / number of executions of a script / uptime / https grade / postfix queue size / etc
Granularity
Metrics data are organized in different granularity :
- all : every inserted point (maximum granularity)
- minute : aggregated (aligned) at 1 point per minute
- hour : 1 per hour
- day : 1 per day
You will have for each granularity an array of dates and for each date, a statistical summary (nb min max avg)
Inserting data
Just do an http post request on /metric endpoint exemple :
curl -X POST http://localhost:3000/metric/testwill save a new metric called "test" with value "123" at current timestamp
Reading data
do a http get request on /metric
It will return an array describing the test metric previously inserted.
Parameters:
- granularity (required) : default all
- before : get points before this date
- after : get points after this date
- nb : downsamples data using lttb algorythm
Exemple
$> curl http://localhost:3000/metric/test?granularity=minute&after=2019-01-01 21:21:00
[
{date: '2019-01-01 21:21:00', avg: 123, nb: 1, min: 123, max: 123},
...
]Streaming data
With socket io you can subscribe to a metric. Therefore each time something is inserted your callback will be called. Useful for live plotting :
Socket.emit('subscribe')
Socket.on('data', function(data){})Benchmark
My tests reports ~100000 inserts / s
node benchmark.js