NewsBlur/config/munin/cassandra_latency
2016-11-11 11:09:13 -08:00

55 lines
1.9 KiB
Python
Executable file

#!/srv/newsblur/venv/newsblur/bin/python
import os
from vendor.munin.cassandra import MuninCassandraPlugin
class CassandraLatencyPlugin(MuninCassandraPlugin):
title = "read/write latency"
args = "--base 1000 -l 0"
vlabel = "seconds"
@property
def fields(self):
fs = []
cfstats = self.cfstats()
for kf, kfstats in cfstats.items():
if not self.keyspaces or kf not in self.keyspaces:
continue
for cf, cfstats in kfstats['cf'].items():
name = "%s_%s_read" % (kf, cf)
label = "%s.%s read latency" % (kf, cf)
fs.append((name, dict(
label = label,
info = label,
type = "GAUGE",
min = "0",
)))
name = "%s_%s_write" % (kf, cf)
label = "%s.%s write latency" % (kf, cf)
fs.append((name, dict(
label = label,
info = label,
type = "GAUGE",
min = "0",
)))
return fs
def execute(self):
cfstats = self.cfstats()
values = {}
for kf, kfstats in cfstats.items():
if not self.keyspaces or kf not in self.keyspaces:
continue
for cf, cfstats in kfstats['cf'].items():
name = "%s_%s" % (kf, cf)
for k, n in (('read', 'Read Latency'), ('write', 'Write Latency')):
latency = cfstats[n].split(' ')[0]
if latency == 'NaN':
latency = 'U'
else:
latency = float(latency) / 1000
values["%s_%s" % (name, k)] = latency
return values
if __name__ == "__main__":
CassandraLatencyPlugin().run()