import psutil class Network: interval = 1; loopCount = 0 def __init__(self, exporter): self.exporter = exporter self.last = {} def run(self): data = psutil.net_io_counters(True, False) for device in data: if device in self.last: bytes_sent = data[device].bytes_sent - self.last[device]["bytes_sent"] bytes_recv = data[device].bytes_sent - self.last[device]["bytes_recv"] packets_sent = data[device].packets_sent - self.last[device]["packets_sent"] packets_recv = data[device].packets_recv - self.last[device]["packets_recv"] errin = data[device].errin - self.last[device]["errin"] errout = data[device].errout - self.last[device]["errout"] dropin = data[device].dropin - self.last[device]["dropin"] dropout = data[device].dropout - self.last[device]["dropout"] self.exporter.incr("net."+device+".bytes_sent", bytes_sent) self.exporter.incr("net."+device+".bytes_recv", bytes_recv) self.exporter.incr("net."+device+".packets_sent", packets_sent) self.exporter.incr("net."+device+".packets_recv", packets_recv) self.exporter.incr("net."+device+".errin", errin) self.exporter.incr("net."+device+".errout", errout) self.exporter.incr("net."+device+".dropin", dropin) self.exporter.incr("net."+device+".dropout", dropout) else: self.last[device] = {} self.last[device]["bytes_sent"] = data[device].bytes_sent self.last[device]["bytes_recv"] = data[device].bytes_recv self.last[device]["packets_sent"] = data[device].packets_sent self.last[device]["packets_recv"] = data[device].packets_recv self.last[device]["errin"] = data[device].errin self.last[device]["errout"] = data[device].errout self.last[device]["dropin"] = data[device].dropin self.last[device]["dropout"] = data[device].dropout self.exporter.gauge("net."+device+".bytes_sent", data[device].bytes_sent) self.exporter.gauge("net."+device+".bytes_recv", data[device].bytes_recv) self.exporter.gauge("net."+device+".packets_sent", data[device].packets_sent) self.exporter.gauge("net."+device+".packets_recv", data[device].packets_recv) self.exporter.gauge("net."+device+".errin", data[device].errin) self.exporter.gauge("net."+device+".errout", data[device].errout) self.exporter.gauge("net."+device+".dropin", data[device].dropin) self.exporter.gauge("net."+device+".dropout", data[device].dropout) #print(device) #print(data[device].bytes_sent) #print(data) #self.exporter.gauge("users", len(psutil.users()))