blob: 3a2d926225e17c87e7f83256d036badfb4159446 [file] [log] [blame]
from discover import provides
from utils import SensorInfo, is_dev_accepted
# 1 - major number
# 2 - minor mumber
# 3 - device name
# 4 - reads completed successfully
# 5 - reads merged
# 6 - sectors read
# 7 - time spent reading (ms)
# 8 - writes completed
# 9 - writes merged
# 10 - sectors written
# 11 - time spent writing (ms)
# 12 - I/Os currently in progress
# 13 - time spent doing I/Os (ms)
# 14 - weighted time spent doing I/Os (ms)
net_values_pos = [
(0, 'recv_bytes', True),
(1, 'recv_packets', True),
(8, 'send_bytes', True),
(9, 'send_packets', True),
]
@provides("net-io")
def net_stat(disallowed_prefixes=('docker',), allowed_prefixes=None):
results = {}
for line in open('/proc/net/dev').readlines()[2:]:
dev_name, stats = line.split(":", 1)
dev_name = dev_name.strip()
vals = stats.split()
dev_ok = is_dev_accepted(dev_name,
disallowed_prefixes,
allowed_prefixes)
if dev_ok:
for pos, name, accum_val in net_values_pos:
sensor_name = "{0}.{1}".format(dev_name, name)
results[sensor_name] = SensorInfo(int(vals[pos]), accum_val)
return results