@@ -54,9 +54,15 @@ def __init__(self, sec, nsec):
54
54
def __str__ (self ):
55
55
return "{0}.{1:09d}" .format (self .sec , self .nsec )
56
56
57
+ def __repr__ (self ):
58
+ return "Timestamp({0}, {1})" .format (self .sec , self .nsec )
59
+
57
60
def __float__ (self ):
58
61
return float (self .sec ) + float (self .nsec ) / 1e9
59
62
63
+ def __eq__ (self , other ):
64
+ return self .sec == other .sec and self .nsec == other .nsec
65
+
60
66
61
67
class CollectorRegistry (object ):
62
68
'''Metric collector registry.
@@ -221,6 +227,7 @@ def __repr__(self):
221
227
return "Metric(%s, %s, %s, %s, %s)" % (self .name , self .documentation ,
222
228
self .type , self .unit , self .samples )
223
229
230
+
224
231
class UntypedMetricFamily (Metric ):
225
232
'''A single untyped metric and its samples.
226
233
For use by custom collectors.
@@ -235,13 +242,13 @@ def __init__(self, name, documentation, value=None, labels=None):
235
242
if value is not None :
236
243
self .add_metric ([], value )
237
244
238
- def add_metric (self , labels , value ):
245
+ def add_metric (self , labels , value , timestamp = None ):
239
246
'''Add a metric to the metric family.
240
247
Args:
241
248
labels: A list of label values
242
249
value: The value of the metric.
243
250
'''
244
- self .samples .append (Sample (self .name , dict (zip (self ._labelnames , labels )), value ))
251
+ self .samples .append (Sample (self .name , dict (zip (self ._labelnames , labels )), value , timestamp ))
245
252
246
253
247
254
class CounterMetricFamily (Metric ):
@@ -262,17 +269,17 @@ def __init__(self, name, documentation, value=None, labels=None, created=None):
262
269
if value is not None :
263
270
self .add_metric ([], value , created )
264
271
265
- def add_metric (self , labels , value , created = None ):
272
+ def add_metric (self , labels , value , created = None , timestamp = None ):
266
273
'''Add a metric to the metric family.
267
274
268
275
Args:
269
276
labels: A list of label values
270
277
value: The value of the metric
271
278
created: Optional unix timestamp the child was created at.
272
279
'''
273
- self .samples .append (Sample (self .name + '_total' , dict (zip (self ._labelnames , labels )), value ))
280
+ self .samples .append (Sample (self .name + '_total' , dict (zip (self ._labelnames , labels )), value , timestamp ))
274
281
if created is not None :
275
- self .samples .append (Sample (self .name + '_created' , dict (zip (self ._labelnames , labels )), created ))
282
+ self .samples .append (Sample (self .name + '_created' , dict (zip (self ._labelnames , labels )), created , timestamp ))
276
283
277
284
278
285
class GaugeMetricFamily (Metric ):
@@ -290,14 +297,14 @@ def __init__(self, name, documentation, value=None, labels=None, unit=''):
290
297
if value is not None :
291
298
self .add_metric ([], value )
292
299
293
- def add_metric (self , labels , value ):
300
+ def add_metric (self , labels , value , timestamp = None ):
294
301
'''Add a metric to the metric family.
295
302
296
303
Args:
297
304
labels: A list of label values
298
305
value: A float
299
306
1E79
'''
300
- self .samples .append (Sample (self .name , dict (zip (self ._labelnames , labels )), value ))
307
+ self .samples .append (Sample (self .name , dict (zip (self ._labelnames , labels )), value , timestamp ))
301
308
302
309
303
310
class SummaryMetricFamily (Metric ):
@@ -317,16 +324,16 @@ def __init__(self, name, documentation, count_value=None, sum_value=None, labels
317
324
if count_value is not None :
318
325
self .add_metric ([], count_value , sum_value )
319
326
320
- def add_metric (self , labels , count_value , sum_value ):
327
+ def add_metric (self , labels , count_value , sum_value , timestamp = None ):
321
328
'''Add a metric to the metric family.
322
329
323
330
Args:
324
331
labels: A list of label values
325
332
count_value: The count value of the metric.
326
333
sum_value: The sum value of the metric.
327
334
'''
328
- self .samples .append (Sample (self .name + '_count' , dict (zip (self ._labelnames , labels )), count_value ))
329
- self .samples .append (Sample (self .name + '_sum' , dict (zip (self ._labelnames , labels )), sum_value ))
335
+ self .samples .append (Sample (self .name + '_count' , dict (zip (self ._labelnames , labels )), count_value , timestamp ))
336
+ self .samples .append (Sample (self .name + '_sum' , dict (zip (self ._labelnames , labels )), sum_value , timestamp ))
330
337
331
338
332
339
class HistogramMetricFamily (Metric ):
@@ -346,7 +353,7 @@ def __init__(self, name, documentation, buckets=None, sum_value=None, labels=Non
346
353
if buckets is not None :
347
354
self .add_metric ([], buckets , sum_value )
348
355
349
- def add_metric (self , labels , buckets , sum_value ):
356
+ def add_metric (self , labels , buckets , sum_value , timestamp = None ):
350
357
'''Add a metric to the metric family.
351
358
352
359
Args:
@@ -356,10 +363,10 @@ def add_metric(self, labels, buckets, sum_value):
356
363
sum_value: The sum value of the metric.
357
364
'''
358
365
for bucket , value in buckets :
359
- self .samples .append (Sample (self .name + '_bucket' , dict (list (zip (self ._labelnames , labels )) + [('le' , bucket )]), value ))
366
+ self .samples .append (Sample (self .name + '_bucket' , dict (list (zip (self ._labelnames , labels )) + [('le' , bucket )]), value , timestamp ))
360
367
# +Inf is last and provides the count value.
361
- self .samples .append (Sample (self .name + '_count' , dict (zip (self ._labelnames , labels )), buckets [- 1 ][1 ]))
362
- self .samples .append (Sample (self .name + '_sum' , dict (zip (self ._labelnames , labels )), sum_value ))
368
+ self .samples .append (Sample (self .name + '_count' , dict (zip (self ._labelnames , labels )), buckets [- 1 ][1 ], timestamp ))
369
+ self .samples .append (Sample (self .name + '_sum' , dict (zip (self ._labelnames , labels )), sum_value , timestamp ))
363
370
364
371
365
372
class GaugeHistogramMetricFamily (Metric ):
@@ -377,7 +384,7 @@ def __init__(self, name, documentation, buckets=None, labels=None, unit=''):
377
384
if buckets is not None :
378
385
self .add_metric ([], buckets )
379
386
380
- def add_metric (self , labels , buckets ):
387
+ def add_metric (self , labels , buckets , timestamp = None ):
381
388
'''Add a metric to the metric family.
382
389
383
390
Args:
@@ -389,7 +396,7 @@ def add_metric(self, labels, buckets):
389
396
self .samples .append (Sample (
390
397
self .name + '_bucket' ,
391
398
dict (list (zip (self ._labelnames , labels )) + [('le' , bucket )]),
392
- value ))
399
+ value , timestamp ))
393
400
394
401
395
402
class InfoMetricFamily (Metric ):
@@ -407,15 +414,15 @@ def __init__(self, name, documentation, value=None, labels=None):
407
414
if value is not None :
408
415
self .add_metric ([], value )
409
416
410
- def add_metric (self , labels , value ):
417
+ def add_metric (self , labels , value , timestamp = None ):
411
418
'''Add a metric to the metric family.
412
419
413
420
Args:
414
421
labels: A list of label values
415
422
value: A dict of labels
416
423
'''
417
424
self .samples .append (Sample (self .name + '_info' ,
418
- dict (dict (zip (self ._labelnames , labels )), ** value ), 1 ))
425
+ dict (dict (zip (self ._labelnames , labels )), ** value ), 1 , timestamp ))
419
426
420
427
421
428
class StateSetMetricFamily (Metric ):
@@ -433,7 +440,7 @@ def __init__(self, name, documentation, value=None, labels=None):
433
440
if value is not None :
434
441
self .add_metric ([], value )
435
442
436
- def add_metric (self , labels , value ):
443
+ def add_metric (self , labels , value , timestamp = None ):
437
444
'''Add a metric to the metric family.
438
445
439
446
Args:
@@ -444,7 +451,7 @@ def add_metric(self, labels, value):
444
451
for state , enabled in value .items ():
445
452
v = (1 if enabled else 0 )
446
453
self .samples .append (Sample (self .name ,
447
- dict (zip (self ._labelnames + (self .name ,), labels + (state ,))), v ))
454
+ dict (zip (self ._labelnames + (self .name ,), labels + (state ,))), v , timestamp ))
448
455
449
456
450
457
class _MutexValue (object ):
0 commit comments