NewsBlur-viq/archive/munin/loadavg
2022-02-01 14:59:05 -05:00

44 lines
1.3 KiB
Python
Executable file

#!/srv/newsblur/venv/newsblur3/bin/python
"""
Load average plugin for Munin.
Based on the default "load" plugin in Munin
First tries reading from /proc/loadavg if it exists. Otherwise, execute
`uptime` and parse out the load average.
"""
import os
from vendor.munin import MuninPlugin
class LoadAVGPlugin(MuninPlugin):
title = "Load average"
args = "--base 1000 -l 0"
vlabel = "load"
scale = False
category = "system"
@property
def fields(self):
warning = os.environ.get('load_warn', 10)
critical = os.environ.get('load_crit', 120)
return [("load", dict(
label = "load",
info = 'The load average of the machine describes how many processes are in the run-queue (scheduled to run "immediately").',
type = "GAUGE",
min = "0",
warning = str(warning),
critical = str(critical)))]
def execute(self):
if os.path.exists("/proc/loadavg"):
loadavg = open("/proc/loadavg", "r").read().strip().split(' ')
else:
from subprocess import Popen, PIPE
output = Popen(["uptime"], stdout=PIPE).communicate()[0]
loadavg = output.rsplit(':', 1)[1].strip().split(' ')[:3]
return dict(load=loadavg[1])
if __name__ == "__main__":
LoadAVGPlugin().run()