# initializing to continue
self.initlock.set()
- def fuse_ops_total_time(self):
- ops_sum = 0.0
+ def time_samples(self):
metrics = self.fuse_time.collect()
- for metric in metrics:
- for sample in metric.samples:
- if sample.name == 'arvmount_fuse_operations_seconds_sum':
- ops_sum += sample.value
- return ops_sum
+
+ # We should have one parent summary metric, and child summaries for each op
+ if len(metrics) != 1:
+ _logger.warning("arv-mount metrics: invalid number of prometheus Summary metrics")
+ return []
+ return metrics[0].samples
+
+ def time_sum_samples(self):
+ return [sample for sample in self.time_samples() if sample.name == 'arvmount_fuse_operations_seconds_sum']
+
+ def time_sum_value(self, opname):
+ for op_sum in self.time_sum_samples():
+ if op_sum.labels['op'] == opname:
+ return op_sum.value
+
+ def time_sum_value_func(self, opname):
+ return lambda: self.time_sum_value(opname)
@destroy_time.time()
@catch_exceptions
Stat("write", ops.write_ops_counter.get),
Stat("read", ops.read_ops_counter.get)
])
- fusetime = StatWriter("fuseopstime", interval, [
- Stat("seconds", ops.fuse_ops_total_time)
- ])
+ fusetimes = []
+ for sample in ops.time_sum_samples():
+ cur_op = sample.labels['op']
+ fusetimes.append(StatWriter("fuseopstime", interval, [
+ Stat(cur_op, ops.time_sum_value_func(cur_op))
+ ]))
blk = StatWriter("blkio:0:0", interval, [
Stat("write", ops.write_counter.get),
Stat("read", ops.read_counter.get)
calls.update()
net.update()
cache.update()
- fuseops.update()
- fusetime.update()
blk.update()
+ fuseops.update()
+ for ftime in fusetimes:
+ ftime.update()