for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
# -*- coding: utf-8 -*-
__author__ = 'Kenny Freeman'
__email__ = '[email protected]'
__license__ = "ISCL"
__docformat__ = 'reStructuredText'
import plumd
import plumd.plugins
from plumd.util import get_file
class LoadAverage(plumd.plugins.Reader):
"""Plugin to measure various kernel metrics from /proc."""
defaults = {
'poll.interval': 10,
'proc_path': '/proc'
}
def __init__(self, log, config):
"""Plugin to measure various kernel metrics from /proc.
:param log: A logger
:type log: logging.RootLogger
:param config: a plumd.config.Conf configuration helper instance.
:type config: plumd.config.Conf
"""
super(LoadAverage, self).__init__(log, config)
config.defaults(LoadAverage.defaults)
self.proc_file = "{0}/loadavg".format(config.get('proc_path'))
def poll(self):
"""Poll for kernel metrics under /proc.
:rtype: ResultSet
return plumd.ResultSet(self.check())
def check(self):
"""Return 1, 5 and 15 minute load averages from proc file loadavg.
:rtype: plumd.Result
result = plumd.Result("loadavg")
dat = []
# read and process /proc/stat
dat = get_file(self.proc_file).split()
if len(dat) >= 3:
result.add(plumd.Float("1", dat[0]))
result.add(plumd.Float("5", dat[1]))
result.add(plumd.Float("15", dat[2]))
return [result]