@@ -19,10 +19,11 @@ def _sanitize(s):
19
19
20
20
21
21
class _RegularPush (threading .Thread ):
22
- def __init__ (self , pusher , interval ):
22
+ def __init__ (self , pusher , interval , prefix ):
23
23
super (_RegularPush , self ).__init__ ()
24
24
self ._pusher = pusher
25
25
self ._interval = interval
26
+ self ._prefix = prefix
26
27
27
28
def run (self ):
28
29
wait_until = time .time ()
@@ -37,7 +38,7 @@ def run(self):
37
38
# time.sleep can return early.
38
39
time .sleep (wait_until - now )
39
40
try :
40
- self ._pusher .push ()
41
+ self ._pusher .push (prefix = self . _prefix )
41
42
except IOError :
42
43
logging .exception ("Push failed" )
43
44
@@ -49,9 +50,14 @@ def __init__(self, address, registry=core.REGISTRY, timeout_seconds=30, _time=ti
49
50
self ._timeout = timeout_seconds
50
51
self ._time = _time
51
52
52
- def push (self ):
53
+ def push (self , prefix = '' ):
53
54
now = int (self ._time .time ())
54
55
output = []
56
+
57
+ prefixstr = ''
58
+ if prefix :
59
+ prefixstr = prefix + '.'
60
+
55
61
for metric in self ._registry .collect ():
56
62
for name , labels , value in metric ._samples :
57
63
if labels :
@@ -61,14 +67,14 @@ def push(self):
61
67
for k , v in sorted (labels .items ())])
62
68
else :
63
69
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 ))
66
72
67
73
conn = socket .create_connection (self ._address , self ._timeout )
68
74
conn .sendall ('' .join (output ).encode ('ascii' ))
69
75
conn .close ()
70
76
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 )
73
79
t .daemon = True
74
80
t .start ()
0 commit comments