dogstatsy
Version:
yet another node client for extended StatsD server of Datadog
30 lines (25 loc) • 818 B
JavaScript
var dgram = require('dgram');
var debug = require('debug')('dogstatd');
var sock = dgram.createSocket('udp4');
sock.bind(8126);
sock.on('message', function(msg){
debug('statsd: %j', msg.toString());
});
module.exports = setCallback;
function setCallback (stat, postFix, cb) {
var statExp = new RegExp('^' + stat + ':');
var postFixExp = new RegExp(postFix);
sock.on('message', checkCallback);
function checkCallback (msg) {
if (statExp.test(msg) && postFixExp.test(msg)) {
var val = /^[^:]+:([^|]+)|/.exec(msg)[1];
var tagArray = /\|#(.*)/.exec(msg)[1].split(',');
var tags = {};
tagArray.forEach(function (tag) {
tags[tag.split(/:/)[0]] = tag.split(/:/)[1];
});
cb(null, stat, val, tags);
sock.removeListener('message', checkCallback);
}
}
}