class StorageProxy(object): def __init__(self, node): assert isinstance(node, Node) self.node = node self.jmx = JolokiaAgent(node) self.mbean = make_mbean("db", type="StorageProxy") def start(self): self.jmx.start() def stop(self): self.jmx.stop() @property def blocking_read_repair(self): return self.jmx.read_attribute(self.mbean, "ReadRepairRepairedBlocking") @property def speculated_data_request(self): return self.jmx.read_attribute(self.mbean, "ReadRepairSpeculatedRequest") @property def speculated_data_repair(self): return self.jmx.read_attribute(self.mbean, "ReadRepairSpeculatedRepair") def __enter__(self): """ For contextmanager-style usage. """ self.start() return self def __exit__(self, exc_type, value, traceback): """ For contextmanager-style usage. """ self.stop()
class TableMetrics(object): def __init__(self, node, keyspace, table): assert isinstance(node, Node) self.jmx = JolokiaAgent(node) self.write_latency_mbean = make_mbean("metrics", type="Table", name="WriteLatency", keyspace=keyspace, scope=table) self.speculative_reads_mbean = make_mbean("metrics", type="Table", name="SpeculativeRetries", keyspace=keyspace, scope=table) self.transient_writes_mbean = make_mbean("metrics", type="Table", name="TransientWrites", keyspace=keyspace, scope=table) @property def write_count(self): return self.jmx.read_attribute(self.write_latency_mbean, "Count") @property def speculative_reads(self): return self.jmx.read_attribute(self.speculative_reads_mbean, "Count") @property def transient_writes(self): return self.jmx.read_attribute(self.transient_writes_mbean, "Count") def start(self): self.jmx.start() def stop(self): self.jmx.stop() def __enter__(self): """ For contextmanager-style usage. """ self.start() return self def __exit__(self, exc_type, value, traceback): """ For contextmanager-style usage. """ self.stop()
class StorageProxy(object): def __init__(self, node): assert isinstance(node, Node) self.node = node self.jmx = JolokiaAgent(node) def start(self): self.jmx.start() def stop(self): self.jmx.stop() def _get_metric(self, metric): mbean = make_mbean("metrics", type="ReadRepair", name=metric) return self.jmx.read_attribute(mbean, "Count") @property def blocking_read_repair(self): return self._get_metric("RepairedBlocking") @property def speculated_rr_read(self): return self._get_metric("SpeculatedRead") @property def speculated_rr_write(self): return self._get_metric("SpeculatedWrite") def get_table_metric(self, keyspace, table, metric, attr="Count"): mbean = make_mbean("metrics", keyspace=keyspace, scope=table, type="Table", name=metric) return self.jmx.read_attribute(mbean, attr) def __enter__(self): """ For contextmanager-style usage. """ self.start() return self def __exit__(self, exc_type, value, traceback): """ For contextmanager-style usage. """ self.stop()