parent
258b2d3baf
commit
28c095279c
@ -1 +1,2 @@ |
||||
.DS_Store |
||||
*.pyc |
||||
|
@ -0,0 +1,41 @@ |
||||
#!/usr/bin/python |
||||
from pystatsd import Client |
||||
|
||||
class LinuxNetStats(object): |
||||
def __init__(self): |
||||
self.d = self._get() |
||||
|
||||
def _get(self): |
||||
# thx |
||||
# http://stackoverflow.com/questions/1052589/ |
||||
# how-can-i-parse-the-output-of-proc-net-dev- |
||||
# into-keyvalue-pairs-per-interface-u |
||||
lines = open("/proc/net/dev", "r").readlines() |
||||
columnLine = lines[1] |
||||
_, receiveCols , transmitCols = columnLine.split("|") |
||||
receiveCols = map(lambda a:"rx_"+a, receiveCols.split()) |
||||
transmitCols = map(lambda a:"tx_"+a, transmitCols.split()) |
||||
cols = receiveCols+transmitCols |
||||
faces = {} |
||||
for line in lines[2:]: |
||||
if line.find(":") < 0: continue |
||||
face, data = line.split(":") |
||||
face = face.lstrip() |
||||
faces[face] = dict(zip(cols, data.split())) |
||||
return faces |
||||
|
||||
def forStatsd(self,prefix=''): |
||||
out = {} |
||||
for iface in self.d.keys(): |
||||
for kn in self.d[iface].keys(): |
||||
out['%s%s.%s' % (prefix, iface, kn)] = int(self.d[iface][kn]) |
||||
return out |
||||
|
||||
def main(): |
||||
s = Client('localhost',8125) |
||||
n = LinuxNetStats() |
||||
for k,v in n.forStatsd(prefix='host.com.eeqj.net.').items(): |
||||
s.update_stats(k,v) |
||||
|
||||
if __name__=="__main__": |
||||
main() |
Loading…
Reference in new issue