added avg metrics collector

This commit is contained in:
Unbit
2013-11-13 02:41:47 +01:00
parent b5d8538fe8
commit 6b3d8ea146
+17
View File
@@ -970,6 +970,22 @@ static int64_t uwsgi_metric_collector_sum(struct uwsgi_metric *um) {
return total;
}
static int64_t uwsgi_metric_collector_avg(struct uwsgi_metric *um) {
int64_t total = 0;
int64_t count = 0;
struct uwsgi_metric_child *umc = um->children;
while(umc) {
struct uwsgi_metric *c = umc->um;
total += *c->value;
count++;
umc = umc->next;
}
if (count == 0) return 0;
return total/count;
}
static int64_t uwsgi_metric_collector_func(struct uwsgi_metric *um) {
if (!um->arg1) return 0;
int64_t (*func)(struct uwsgi_metric *) = (int64_t (*)(struct uwsgi_metric *)) um->custom;
@@ -985,5 +1001,6 @@ void uwsgi_metrics_collectors_setup() {
uwsgi_register_metric_collector("ptr", uwsgi_metric_collector_ptr);
uwsgi_register_metric_collector("file", uwsgi_metric_collector_file);
uwsgi_register_metric_collector("sum", uwsgi_metric_collector_sum);
uwsgi_register_metric_collector("avg", uwsgi_metric_collector_avg);
uwsgi_register_metric_collector("func", uwsgi_metric_collector_func);
}