parent
258b2d3baf
commit
28c095279c
@ -1 +1,2 @@ |
|||||||
.DS_Store |
.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