This is a pluggable backend for StatsD, which publishes stats to mongodb.
This backend uses Mongo's capped collections to have near file system performance for logging data points from StatsD.
$ npm install mongo-statsd-backend
Inside of your StatsD server config file, use the following parameters:
{
mongoHost: 'user:pass@localhost',
mongoPort: 27017,
mongoMax: 2160,
mongoPrefix: true,
mongoName: 'databaseName',
backends: ['/path/to/module/lib/index.js']
}
mongoHost
: the ip address or hostname of the mongo server. Default islocalhost
.mongoMax
: the number of data points to cap the collection with. Default is2160
. With Statsd's default of 10 seconds, this gives 6 hours of 'near real-time' data.mongoPrefix
: Boolean. If true, then the statsd "bucket" names contain a prefix which deterine the database name. For example, if a counter is called 'web-server.page_hits' then the database name will be 'web-server' and the collection name will be 'page_hits'. Otherwise, the database name will be 'statsd' and the collection name will be 'web-server.page_hits'.
The schema follows the StatsD namespace.
database.collection.tite.flush_rate
bucket.metric.metric_title_flushrate
{
time: 1234567890, // time_stamp from statsd
count: 124 // Integer from statsd
}
{
time: 1234567890, // time_stamp from statsd
durations: [0, 1, 2] // Array from statsd
}
{
time: 1234567890, // time_stamp from statsd
mean_90: 1.1764705882352942,
upper_90: 3,
sum_90: 80,
std: 60.18171889277414,
upper: 526,
lower: 0,
count: 75,
count_ps: 7.5,
sum: 652,
mean: 8.693333333333333,
median: 1
}
{
time: 1234567890, // time_stamp from statsd
set: ['name1', 'name2'] // Array from statsd
}