зеркало из https://github.com/microsoft/statsd.git
Persist counts on timers with no values.
This change brings timer `count` and `count_ps` functionality into parity with the standard counters by causing them to send zeroes when their timers haven't been seen during the flush interval. Fixes #370.
This commit is contained in:
Родитель
8d5f687622
Коммит
4d9b172766
|
@ -20,9 +20,10 @@ var process_metrics = function (metrics, flushInterval, ts, flushCallback) {
|
||||||
}
|
}
|
||||||
|
|
||||||
for (key in timers) {
|
for (key in timers) {
|
||||||
|
var current_timer_data = {};
|
||||||
|
|
||||||
if (timers[key].length > 0) {
|
if (timers[key].length > 0) {
|
||||||
timer_data[key] = {};
|
timer_data[key] = {};
|
||||||
var current_timer_data = {};
|
|
||||||
|
|
||||||
var values = timers[key].sort(function (a,b) { return a-b; });
|
var values = timers[key].sort(function (a,b) { return a-b; });
|
||||||
var count = values.length;
|
var count = values.length;
|
||||||
|
@ -112,9 +113,13 @@ var process_metrics = function (metrics, flushInterval, ts, flushCallback) {
|
||||||
current_timer_data['histogram'][bin_name] = freq;
|
current_timer_data['histogram'][bin_name] = freq;
|
||||||
}
|
}
|
||||||
|
|
||||||
timer_data[key] = current_timer_data;
|
} else {
|
||||||
|
|
||||||
|
current_timer_data["count"] = current_timer_data["count_ps"] = 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
timer_data[key] = current_timer_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
statsd_metrics["processing_time"] = (Date.now() - starttime);
|
statsd_metrics["processing_time"] = (Date.now() - starttime);
|
||||||
|
|
|
@ -180,9 +180,9 @@ module.exports = {
|
||||||
});
|
});
|
||||||
var numstat_test = function(post){
|
var numstat_test = function(post){
|
||||||
var mykey = 'statsd.numStats';
|
var mykey = 'statsd.numStats';
|
||||||
return _.include(_.keys(post),mykey) && (post[mykey] == 2);
|
return _.include(_.keys(post),mykey) && (post[mykey] == 3);
|
||||||
};
|
};
|
||||||
test.ok(_.any(hashes,numstat_test), 'statsd.numStats should be 0');
|
test.ok(_.any(hashes,numstat_test), 'statsd.numStats should be 3');
|
||||||
|
|
||||||
var bad_lines_seen_value_test = function(post){
|
var bad_lines_seen_value_test = function(post){
|
||||||
var mykey = 'stats_counts.statsd.bad_lines_seen';
|
var mykey = 'stats_counts.statsd.bad_lines_seen';
|
||||||
|
@ -213,9 +213,9 @@ module.exports = {
|
||||||
});
|
});
|
||||||
var numstat_test = function(post){
|
var numstat_test = function(post){
|
||||||
var mykey = 'statsd.numStats';
|
var mykey = 'statsd.numStats';
|
||||||
return _.include(_.keys(post),mykey) && (post[mykey] == 2);
|
return _.include(_.keys(post),mykey) && (post[mykey] == 3);
|
||||||
};
|
};
|
||||||
test.ok(_.any(hashes,numstat_test), 'statsd.numStats should be 2');
|
test.ok(_.any(hashes,numstat_test), 'statsd.numStats should be 3');
|
||||||
|
|
||||||
var testtimervalue_test = function(post){
|
var testtimervalue_test = function(post){
|
||||||
var mykey = 'stats.timers.a_test_value.mean_90';
|
var mykey = 'stats.timers.a_test_value.mean_90';
|
||||||
|
@ -246,9 +246,9 @@ module.exports = {
|
||||||
});
|
});
|
||||||
var numstat_test = function(post){
|
var numstat_test = function(post){
|
||||||
var mykey = 'statsd.numStats';
|
var mykey = 'statsd.numStats';
|
||||||
return _.include(_.keys(post),mykey) && (post[mykey] == 2);
|
return _.include(_.keys(post),mykey) && (post[mykey] == 3);
|
||||||
};
|
};
|
||||||
test.ok(_.any(hashes,numstat_test), 'statsd.numStats should be 2');
|
test.ok(_.any(hashes,numstat_test), 'statsd.numStats should be 3');
|
||||||
|
|
||||||
var testavgvalue_test = function(post){
|
var testavgvalue_test = function(post){
|
||||||
var mykey = 'stats.a_test_value';
|
var mykey = 'stats.a_test_value';
|
||||||
|
|
|
@ -172,9 +172,9 @@ module.exports = {
|
||||||
});
|
});
|
||||||
var numstat_test = function(post){
|
var numstat_test = function(post){
|
||||||
var mykey = 'statsd.numStats';
|
var mykey = 'statsd.numStats';
|
||||||
return _.include(_.keys(post),mykey) && (post[mykey] == 3);
|
return _.include(_.keys(post),mykey) && (post[mykey] == 4);
|
||||||
};
|
};
|
||||||
test.ok(_.any(hashes,numstat_test), 'statsd.numStats should be 1');
|
test.ok(_.any(hashes,numstat_test), 'statsd.numStats should be 4');
|
||||||
|
|
||||||
var testtimervalue_test = function(post){
|
var testtimervalue_test = function(post){
|
||||||
var mykey = 'stats.timers.a_test_value.mean_90';
|
var mykey = 'stats.timers.a_test_value.mean_90';
|
||||||
|
@ -205,9 +205,9 @@ module.exports = {
|
||||||
});
|
});
|
||||||
var numstat_test = function(post){
|
var numstat_test = function(post){
|
||||||
var mykey = 'statsd.numStats';
|
var mykey = 'statsd.numStats';
|
||||||
return _.include(_.keys(post),mykey) && (post[mykey] == 3);
|
return _.include(_.keys(post),mykey) && (post[mykey] == 4);
|
||||||
};
|
};
|
||||||
test.ok(_.any(hashes,numstat_test), 'statsd.numStats should be 1');
|
test.ok(_.any(hashes,numstat_test), 'statsd.numStats should be 4');
|
||||||
|
|
||||||
var testavgvalue_test = function(post){
|
var testavgvalue_test = function(post){
|
||||||
var mykey = 'stats.a_test_value';
|
var mykey = 'stats.a_test_value';
|
||||||
|
|
|
@ -173,9 +173,9 @@ module.exports = {
|
||||||
});
|
});
|
||||||
var numstat_test = function(post){
|
var numstat_test = function(post){
|
||||||
var mykey = 'statsprefix.numStats';
|
var mykey = 'statsprefix.numStats';
|
||||||
return _.include(_.keys(post),mykey) && (post[mykey] == 3);
|
return _.include(_.keys(post),mykey) && (post[mykey] == 4);
|
||||||
};
|
};
|
||||||
test.ok(_.any(hashes,numstat_test), 'statsprefix.numStats should be 1');
|
test.ok(_.any(hashes,numstat_test), 'statsprefix.numStats should be 4');
|
||||||
|
|
||||||
var testtimervalue_test = function(post){
|
var testtimervalue_test = function(post){
|
||||||
var mykey = 'stats.timers.a_test_value.mean_90';
|
var mykey = 'stats.timers.a_test_value.mean_90';
|
||||||
|
@ -206,9 +206,9 @@ module.exports = {
|
||||||
});
|
});
|
||||||
var numstat_test = function(post){
|
var numstat_test = function(post){
|
||||||
var mykey = 'statsprefix.numStats';
|
var mykey = 'statsprefix.numStats';
|
||||||
return _.include(_.keys(post),mykey) && (post[mykey] == 3);
|
return _.include(_.keys(post),mykey) && (post[mykey] == 4);
|
||||||
};
|
};
|
||||||
test.ok(_.any(hashes,numstat_test), 'statsprefix.numStats should be 1');
|
test.ok(_.any(hashes,numstat_test), 'statsprefix.numStats should be 4');
|
||||||
|
|
||||||
var testavgvalue_test = function(post){
|
var testavgvalue_test = function(post){
|
||||||
var mykey = 'stats.a_test_value';
|
var mykey = 'stats.a_test_value';
|
||||||
|
|
|
@ -174,9 +174,9 @@ module.exports = {
|
||||||
});
|
});
|
||||||
var numstat_test = function(post){
|
var numstat_test = function(post){
|
||||||
var mykey = 'stats.statsd.numStats';
|
var mykey = 'stats.statsd.numStats';
|
||||||
return _.include(_.keys(post),mykey) && (post[mykey] == 2);
|
return _.include(_.keys(post),mykey) && (post[mykey] == 3);
|
||||||
};
|
};
|
||||||
test.ok(_.any(hashes,numstat_test), 'statsd.numStats should be 0');
|
test.ok(_.any(hashes,numstat_test), 'statsd.numStats should be 3');
|
||||||
|
|
||||||
var bad_lines_seen_value_test = function(post){
|
var bad_lines_seen_value_test = function(post){
|
||||||
var mykey = 'stats.counters.statsd.bad_lines_seen.count';
|
var mykey = 'stats.counters.statsd.bad_lines_seen.count';
|
||||||
|
@ -207,9 +207,9 @@ module.exports = {
|
||||||
});
|
});
|
||||||
var numstat_test = function(post){
|
var numstat_test = function(post){
|
||||||
var mykey = 'stats.statsd.numStats';
|
var mykey = 'stats.statsd.numStats';
|
||||||
return _.include(_.keys(post),mykey) && (post[mykey] == 3);
|
return _.include(_.keys(post),mykey) && (post[mykey] == 4);
|
||||||
};
|
};
|
||||||
test.ok(_.any(hashes,numstat_test), 'stats.statsd.numStats should be 1');
|
test.ok(_.any(hashes,numstat_test), 'stats.statsd.numStats should be 4');
|
||||||
|
|
||||||
var testtimervalue_test = function(post){
|
var testtimervalue_test = function(post){
|
||||||
var mykey = 'stats.timers.a_test_value.mean_90';
|
var mykey = 'stats.timers.a_test_value.mean_90';
|
||||||
|
@ -278,9 +278,9 @@ module.exports = {
|
||||||
});
|
});
|
||||||
var numstat_test = function(post){
|
var numstat_test = function(post){
|
||||||
var mykey = 'stats.statsd.numStats';
|
var mykey = 'stats.statsd.numStats';
|
||||||
return _.include(_.keys(post),mykey) && (post[mykey] == 3);
|
return _.include(_.keys(post),mykey) && (post[mykey] == 4);
|
||||||
};
|
};
|
||||||
test.ok(_.any(hashes,numstat_test), 'statsd.numStats should be 3');
|
test.ok(_.any(hashes,numstat_test), 'statsd.numStats should be 4');
|
||||||
|
|
||||||
var testavgvalue_test = function(post){
|
var testavgvalue_test = function(post){
|
||||||
var mykey = 'stats.counters.a_test_value.rate';
|
var mykey = 'stats.counters.a_test_value.rate';
|
||||||
|
|
|
@ -174,9 +174,9 @@ module.exports = {
|
||||||
});
|
});
|
||||||
var numstat_test = function(post){
|
var numstat_test = function(post){
|
||||||
var mykey = 'stats.statsprefix.numStats';
|
var mykey = 'stats.statsprefix.numStats';
|
||||||
return _.include(_.keys(post),mykey) && (post[mykey] == 2);
|
return _.include(_.keys(post),mykey) && (post[mykey] == 3);
|
||||||
};
|
};
|
||||||
test.ok(_.any(hashes,numstat_test), 'statsprefix.numStats should be 0');
|
test.ok(_.any(hashes,numstat_test), 'statsprefix.numStats should be 3');
|
||||||
|
|
||||||
var bad_lines_seen_value_test = function(post){
|
var bad_lines_seen_value_test = function(post){
|
||||||
var mykey = 'stats.counters.statsprefix.bad_lines_seen.count';
|
var mykey = 'stats.counters.statsprefix.bad_lines_seen.count';
|
||||||
|
@ -207,9 +207,9 @@ module.exports = {
|
||||||
});
|
});
|
||||||
var numstat_test = function(post){
|
var numstat_test = function(post){
|
||||||
var mykey = 'stats.statsprefix.numStats';
|
var mykey = 'stats.statsprefix.numStats';
|
||||||
return _.include(_.keys(post),mykey) && (post[mykey] == 3);
|
return _.include(_.keys(post),mykey) && (post[mykey] == 4);
|
||||||
};
|
};
|
||||||
test.ok(_.any(hashes,numstat_test), 'stats.statsprefix.numStats should be 1');
|
test.ok(_.any(hashes,numstat_test), 'stats.statsprefix.numStats should be 4');
|
||||||
|
|
||||||
var testtimervalue_test = function(post){
|
var testtimervalue_test = function(post){
|
||||||
var mykey = 'stats.timers.a_test_value.mean_90';
|
var mykey = 'stats.timers.a_test_value.mean_90';
|
||||||
|
@ -240,9 +240,9 @@ module.exports = {
|
||||||
});
|
});
|
||||||
var numstat_test = function(post){
|
var numstat_test = function(post){
|
||||||
var mykey = 'stats.statsprefix.numStats';
|
var mykey = 'stats.statsprefix.numStats';
|
||||||
return _.include(_.keys(post),mykey) && (post[mykey] == 3);
|
return _.include(_.keys(post),mykey) && (post[mykey] == 4);
|
||||||
};
|
};
|
||||||
test.ok(_.any(hashes,numstat_test), 'statsprefix.numStats should be 3');
|
test.ok(_.any(hashes,numstat_test), 'statsprefix.numStats should be 4');
|
||||||
|
|
||||||
var testavgvalue_test = function(post){
|
var testavgvalue_test = function(post){
|
||||||
var mykey = 'stats.counters.a_test_value.rate';
|
var mykey = 'stats.counters.a_test_value.rate';
|
||||||
|
|
|
@ -176,9 +176,9 @@ module.exports = {
|
||||||
});
|
});
|
||||||
var numstat_test = function(post){
|
var numstat_test = function(post){
|
||||||
var mykey = 'stats.statsd.numStats.statssuffix';
|
var mykey = 'stats.statsd.numStats.statssuffix';
|
||||||
return _.include(_.keys(post),mykey) && (post[mykey] == 2);
|
return _.include(_.keys(post),mykey) && (post[mykey] == 3);
|
||||||
};
|
};
|
||||||
test.ok(_.any(hashes,numstat_test), 'numStats.statssuffix should be 0');
|
test.ok(_.any(hashes,numstat_test), 'numStats.statssuffix should be 3');
|
||||||
|
|
||||||
var bad_lines_seen_value_test = function(post){
|
var bad_lines_seen_value_test = function(post){
|
||||||
var mykey = 'stats.counters.statsd.bad_lines_seen.count.statssuffix';
|
var mykey = 'stats.counters.statsd.bad_lines_seen.count.statssuffix';
|
||||||
|
@ -209,9 +209,9 @@ module.exports = {
|
||||||
});
|
});
|
||||||
var numstat_test = function(post){
|
var numstat_test = function(post){
|
||||||
var mykey = 'stats.statsd.numStats.statssuffix';
|
var mykey = 'stats.statsd.numStats.statssuffix';
|
||||||
return _.include(_.keys(post),mykey) && (post[mykey] == 3);
|
return _.include(_.keys(post),mykey) && (post[mykey] == 4);
|
||||||
};
|
};
|
||||||
test.ok(_.any(hashes,numstat_test), 'stats.statsd.numStats.statssuffix should be 1');
|
test.ok(_.any(hashes,numstat_test), 'stats.statsd.numStats.statssuffix should be 4');
|
||||||
|
|
||||||
var testtimervalue_test = function(post){
|
var testtimervalue_test = function(post){
|
||||||
var mykey = 'stats.timers.a_test_value.mean_90.statssuffix';
|
var mykey = 'stats.timers.a_test_value.mean_90.statssuffix';
|
||||||
|
@ -242,9 +242,9 @@ module.exports = {
|
||||||
});
|
});
|
||||||
var numstat_test = function(post){
|
var numstat_test = function(post){
|
||||||
var mykey = 'stats.statsd.numStats.statssuffix';
|
var mykey = 'stats.statsd.numStats.statssuffix';
|
||||||
return _.include(_.keys(post),mykey) && (post[mykey] == 3);
|
return _.include(_.keys(post),mykey) && (post[mykey] == 4);
|
||||||
};
|
};
|
||||||
test.ok(_.any(hashes,numstat_test), 'numStats.statssuffix should be 3');
|
test.ok(_.any(hashes,numstat_test), 'numStats.statssuffix should be 4');
|
||||||
|
|
||||||
var testavgvalue_test = function(post){
|
var testavgvalue_test = function(post){
|
||||||
var mykey = 'stats.counters.a_test_value.rate.statssuffix';
|
var mykey = 'stats.counters.a_test_value.rate.statssuffix';
|
||||||
|
|
Загрузка…
Ссылка в новой задаче