DEPCRATED - Receives and serves HTTP measurements for
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


canaryd is an aggregator for measurements taken by sensord. It ingests metrics via UDP and stores a small window of them in a Redis instance. Those measurements are then made available via a simple HTTP API and Websocket.


$ go get
$ cd $GOPATH/src/
$ godep get
$ godep go build


canaryd is configured via the environment. The following values are allowed:

  • PORT - port the HTTP and UDP servers should bind to, defaulting to '5000'
  • REDIS_URL - URL for the redis backend, defaults to redis://localhost:6379
  • REDIS_PUBLISH - set to 1 to publish measurements via Redis; PSUBSCRIBE to measurements:* to get measurements for all check IDs
  • RETENTION - how long to store measurements, in seconds; defaults to 60

canaryd allows internal performance metrics to be captured. To send them to Librato, set the following environment variables:

  • LIBRATO_EMAIL - email address of your librato account
  • LIBRATO_TOKEN - token for your Librato account
  • LIBRATO_SOURCE - defaults to the server's hostname

To send them to InfluxDB:

  • INFLUXDB_HOST - the InfluxDB hostname
  • INFLUXDB_DATABASE - database to store the metrics in
  • INFLUXDB_USER, INFLUXDB_PASSWORD - authentication credentials

You can also dump them to stderr:

  • LOGSTDERR - set to 1 to enable

Usage Example

# connect to a single local sensor
$ godep go run canaryd.go
2014/05/24 14:00:41 fn=httpServer listening=true port=5000
2014/05/24 14:00:41 fn=udpServer listening=true port=5000

###Websocket Measurements can be received in (near) realtime via websocket. You can create a websocket connection at <host>:<PORT>/ws/checks/{check_id}/measurements. This connection will stream measurements back for the check ID you've specified.