Files
cloudron-box/setup/start/collectd/du.py

43 lines
1.3 KiB
Python
Raw Normal View History

2019-08-17 03:37:22 -07:00
import collectd,os,subprocess
# https://www.programcreek.com/python/example/106897/collectd.register_read
PATHS = []
INTERVAL = 60 * 60 * 24
def du(path):
return subprocess.check_output(['du','-Dsb', path]).split()[0].decode('utf-8')
def init():
global PATHS
collectd.info('custom du plugin initialized with %s' % PATHS)
# configure is called for each module block
def configure(config):
global PATHS
for node in config.children:
key = node.key
if key == 'Path':
PATHS.append({ 'name': node.values[0], 'path': node.values[1] })
collectd.info('du plugin: monitoring %s' % node.values[1])
else:
collectd.info('du plugin: Unknown config key "%s"' % key)
def read():
for p in PATHS:
path = p['path']
collectd.info('computing size of %s' % path)
size = du(path)
collectd.info('du plugin: size of %s is %s' % (path, size))
# type comes from https://github.com/collectd/collectd/blob/master/src/types.db
val = collectd.Values(type='capacity', plugin='du', plugin_instance=p['name'])
val.dispatch(values=[size], type_instance='usage')
collectd.register_init(init)
collectd.register_config(configure)
collectd.register_read(read, INTERVAL)