|
|
|
@ -671,6 +671,37 @@ GQueue *statistics_gather_metrics(void) {
|
|
|
|
|
METRICs("last", "%u", l);
|
|
|
|
|
|
|
|
|
|
HEADER("}", NULL);
|
|
|
|
|
|
|
|
|
|
#define F(f) \
|
|
|
|
|
METRICs(#f, UINT64F, atomic64_get(&lif->stats.f)); \
|
|
|
|
|
PROM("interface_" #f, "counter"); \
|
|
|
|
|
PROMLAB("name=\"%s\",address=\"%s\"", lif->logical->name.s, \
|
|
|
|
|
sockaddr_print_buf(&lif->spec->local_address.addr));
|
|
|
|
|
#include "interface_counter_stats_fields.inc"
|
|
|
|
|
#undef F
|
|
|
|
|
|
|
|
|
|
HEADER("ingress", NULL);
|
|
|
|
|
HEADER("{", NULL);
|
|
|
|
|
#define F(f) \
|
|
|
|
|
METRICs(#f, UINT64F, atomic64_get(&lif->stats_in.f)); \
|
|
|
|
|
PROM("interface_" #f, "gauge"); \
|
|
|
|
|
PROMLAB("name=\"%s\",address=\"%s\",direction=\"ingress\"", lif->logical->name.s, \
|
|
|
|
|
sockaddr_print_buf(&lif->spec->local_address.addr));
|
|
|
|
|
#include "interface_counter_stats_fields_dir.inc"
|
|
|
|
|
#undef F
|
|
|
|
|
HEADER("}", NULL);
|
|
|
|
|
|
|
|
|
|
HEADER("egress", NULL);
|
|
|
|
|
HEADER("{", NULL);
|
|
|
|
|
#define F(f) \
|
|
|
|
|
METRICs(#f, UINT64F, atomic64_get(&lif->stats_out.f)); \
|
|
|
|
|
PROM("interface_" #f, "gauge"); \
|
|
|
|
|
PROMLAB("name=\"%s\",address=\"%s\",direction=\"egress\"", lif->logical->name.s, \
|
|
|
|
|
sockaddr_print_buf(&lif->spec->local_address.addr));
|
|
|
|
|
#include "interface_counter_stats_fields_dir.inc"
|
|
|
|
|
#undef F
|
|
|
|
|
HEADER("}", NULL);
|
|
|
|
|
|
|
|
|
|
HEADER("}", NULL);
|
|
|
|
|
}
|
|
|
|
|
HEADER("]", NULL);
|
|
|
|
|