diff --git a/core/metrics.c b/core/metrics.c index 9a6959ea..05ed19e8 100644 --- a/core/metrics.c +++ b/core/metrics.c @@ -370,6 +370,9 @@ static void *uwsgi_metrics_loop(void *arg) { case UWSGI_METRIC_PTR: *metric->value = *metric->ptr; break; + // aliases are NOOP + case UWSGI_METRIC_ALIAS: + break; case UWSGI_METRIC_SUM: *metric->value = uwsgi_metric_sum(metric); break; @@ -557,6 +560,10 @@ void uwsgi_setup_metrics() { uwsgi_metric_append(total_rss); uwsgi_metric_append(total_vsz); + // create aliases + uwsgi_register_metric("rss_size", NULL, UWSGI_METRIC_GAUGE, UWSGI_METRIC_ALIAS, total_rss, 0, NULL); + uwsgi_register_metric("vsz_size", NULL, UWSGI_METRIC_GAUGE, UWSGI_METRIC_ALIAS, total_vsz, 0, NULL); + // create custom/user-defined metrics struct uwsgi_string_list *usl; uwsgi_foreach(usl, uwsgi.additional_metrics) { @@ -574,6 +581,17 @@ void uwsgi_setup_metrics() { metric = metric->next; } + // remap aliases + metric = uwsgi.metrics; + while(metric) { + if (metric->collect_way == UWSGI_METRIC_ALIAS) { + struct uwsgi_metric *alias = (struct uwsgi_metric *) metric->ptr; + metric->value = alias->value; + metric->oid = alias->oid; + } + metric = metric->next; + } + uwsgi_log("initialized %llu metrics\n", uwsgi.metrics_cnt); if (uwsgi.metrics_dir) { diff --git a/uwsgi.h b/uwsgi.h index 446a380a..5fa77bea 100644 --- a/uwsgi.h +++ b/uwsgi.h @@ -4407,6 +4407,7 @@ enum { UWSGI_METRIC_FILE, UWSGI_METRIC_MANUAL, UWSGI_METRIC_SUM, + UWSGI_METRIC_ALIAS, }; struct uwsgi_metric_child;