Skip to content
expose values to a http frontend.
JavaScript Perl Shell
Pull request Compare This branch is 79 commits ahead, 1 commit behind athoune:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Exposing key/value over HTTP as a JSON, even in real time.

Mesures, like metrics in French.

Write value on a socket, with nc or other low tech tool. Read it with curl.

Test it

Mesure uses Mocha tests.

npm install
npm test

Try it

In a terminal


You can specify a config file as first argument. Have a look at conf.json

In an other terminnal

echo "SET answer 42" | nc localhost 8124

In a browser


Event source :

First event a dump, followings are new values.


First event is a complete dump, following by a simple key/value for each modifications.

Install as a service

There is a script to install mesures on a debian like Linux

sudo ./

The scripts create a new user mesures:mesures, copy the default conf and install the init.d boot scipt.

Put a nice Nginx in front, it will handle the port 80 for you.


Configuration is done with a json file. It's the first argument for the mesures script.

Internal website

  • host
  • port
  • homepage true: default website. false : 404 not found. A path: default root folder?


Each modules can access to the state object (in read/write mode) and register url patterns.


Send command to the server. It uses the redis old syntax. Words are space separated, first word is the action. Action is case insensitive. Answer start with a + if it works, a - for an error.

  • port
  • host host, if you wont to listen every network interface|


  • SET key value
  • DELETE key
  • INCR key value [interval (ms)]


Chain different mesures servers listeing each other via eventsource.

  • url eventsource url
  • prefix add this prefix to the key


rss and V8 head size and usage.


Collectd can write its data priodicaly.

Collectd conf :

LoadPlugin write_http
<Plugin write_http>
    <URL "http://localhost:8125/collectd-post">
        Format "JSON"

It uses a private webserver with a different port

  • port 8125
  • host localhost


Fetch metrics from /proc folder.


Remember old values with a capped list.


  • √ expose stack as JSON over HTTP
  • √ set value over a socket
  • √ expose values as Server Sent Event
  • √ homepage with some javascripts.
  • √ registerable modules
  • √ config file
  • √ chain mesures
  • √ self monitoring
  • _ backup JSON file for crash proof
  • _ not only GAUGE, add COUNTER type
  • _ handling collectd HTTP PUT
  • _ logging
  • _ display timestamp in the graph
  • _ handling statsd UDP protocol


GPLv3. © Mathieu Lecarme.

Something went wrong with that request. Please try again.