diff options
Diffstat (limited to 'src/collectl2pcp/net.c')
-rw-r--r-- | src/collectl2pcp/net.c | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/src/collectl2pcp/net.c b/src/collectl2pcp/net.c new file mode 100644 index 0000000..4b8e23b --- /dev/null +++ b/src/collectl2pcp/net.c @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2013 Red Hat Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * Handler for network.interface.* + * Net lo: 216173634 2124262 0 0 0 0 0 0 216173634 2124262 0 0 0 0 0 0 + */ + + +#include "metrics.h" + +int +net_handler(handler_t *h, fields_t *f) +{ + int n; + char *s; + char *inst; + pmInDom indom = pmInDom_build(LINUX_DOMAIN, NET_DEV_INDOM); + + /* +Inter-| Receive | Transmit + face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed + lo: 4060748 39057 0 0 0 0 0 0 4060748 39057 0 0 0 0 0 0 + eth0: 0 337614 0 0 0 0 0 0 0 267537 0 0 0 27346 62 0 + */ + + if (f->nfields != 18) + return -1; + + inst = f->fields[1]; + if ((s = strchr(inst, ':')) != NULL) + *s = '\0'; + + n = 2; + put_str_value("network.interface.in.bytes", indom, inst, f->fields[n++]); + put_str_value("network.interface.in.packets", indom, inst, f->fields[n++]); + put_str_value("network.interface.in.errors", indom, inst, f->fields[n++]); + put_str_value("network.interface.in.drops", indom, inst, f->fields[n++]); + put_str_value("network.interface.in.fifo", indom, inst, f->fields[n++]); + put_str_value("network.interface.in.frame", indom, inst, f->fields[n++]); + put_str_value("network.interface.in.compressed", indom, inst, f->fields[n++]); + put_str_value("network.interface.in.mcasts", indom, inst, f->fields[n++]); + + put_str_value("network.interface.out.bytes", indom, inst, f->fields[n++]); + put_str_value("network.interface.out.packets", indom, inst, f->fields[n++]); + put_str_value("network.interface.out.errors", indom, inst, f->fields[n++]); + put_str_value("network.interface.out.drops", indom, inst, f->fields[n++]); + put_str_value("network.interface.out.fifo", indom, inst, f->fields[n++]); + put_str_value("network.interface.collisions", indom, inst, f->fields[n++]); + put_str_value("network.interface.out.carrier", indom, inst, f->fields[n++]); + put_str_value("network.interface.out.compressed", indom, inst, f->fields[n++]); + + return 0; +} + |