@@ -19,10 +19,11 @@ def _sanitize(s):
1919
2020
2121class _RegularPush (threading .Thread ):
22- def __init__ (self , pusher , interval ):
22+ def __init__ (self , pusher , interval , prefix ):
2323 super (_RegularPush , self ).__init__ ()
2424 self ._pusher = pusher
2525 self ._interval = interval
26+ self ._prefix = prefix
2627
2728 def run (self ):
2829 wait_until = time .time ()
@@ -37,7 +38,7 @@ def run(self):
3738 # time.sleep can return early.
3839 time .sleep (wait_until - now )
3940 try :
40- self ._pusher .push ()
41+ self ._pusher .push (prefix = self . _prefix )
4142 except IOError :
4243 logging .exception ("Push failed" )
4344
@@ -49,9 +50,14 @@ def __init__(self, address, registry=core.REGISTRY, timeout_seconds=30, _time=ti
4950 self ._timeout = timeout_seconds
5051 self ._time = _time
5152
52- def push (self ):
53+ def push (self , prefix = '' ):
5354 now = int (self ._time .time ())
5455 output = []
56+
57+ prefixstr = ''
58+ if prefix :
59+ prefixstr = prefix + '.'
60+
5561 for metric in self ._registry .collect ():
5662 for name , labels , value in metric ._samples :
5763 if labels :
@@ -61,14 +67,14 @@ def push(self):
6167 for k , v in sorted (labels .items ())])
6268 else :
6369 labelstr = ''
64- output .append ('{0}{1} {2} {3}\n ' .format (
65- _sanitize (name ), labelstr , float (value ), now ))
70+ output .append ('{0}{1}{2} {3} {4 }\n ' .format (
71+ prefixstr , _sanitize (name ), labelstr , float (value ), now ))
6672
6773 conn = socket .create_connection (self ._address , self ._timeout )
6874 conn .sendall ('' .join (output ).encode ('ascii' ))
6975 conn .close ()
7076
71- def start (self , interval = 60.0 ):
72- t = _RegularPush (self , interval )
77+ def start (self , interval = 60.0 , prefix = '' ):
78+ t = _RegularPush (self , interval , prefix )
7379 t .daemon = True
7480 t .start ()
0 commit comments