NewsBlur/config/munin/tc_size
2020-12-03 14:05:32 -05:00

59 lines
1.5 KiB
Python
Executable file

#!/srv/newsblur/venv/newsblur3/bin/python
import os
import subprocess
from vendor.munin import MuninPlugin
class MuninTokyoCabinetSizePlugin(MuninPlugin):
title = "Size of Tokyo Cabinet database"
args = "--base 1024"
vlabel = "bytes"
fields = (
("size", dict(
label = "Size",
type = "GAUGE",
min = "0",
)),
)
environ = {
'PATH': "/usr/bin:/usr/local/bin",
}
def __init__(self):
super(MuninTokyoCabinetSizePlugin, self).__init__()
path = os.environ['TC_PATH']
if path.startswith('tt://'):
self.path = None
self.port = None
self.host = path[5:]
if ':' in self.host:
self.host, self.port = path[5:].split(':')
else:
self.path = path
self.host = None
self.port = None
def inform(self):
if self.path:
raise NotImplementedError()
else:
args = ["tcrmgr", "inform"]
if self.port:
args += ["-port", str(self.port)]
args.append(self.host)
p = subprocess.Popen(args, env=self.environ, stdout=subprocess.PIPE)
res = p.communicate()[0]
res = res.split('\n')
return {
'records': int(res[0].split(':')[-1]),
'size': int(res[1].split(':')[-1]),
}
def execute(self):
info = self.inform()
return dict(size=info['size'])
if __name__ == "__main__":
MuninTokyoCabinetSizePlugin().run()