File: //usr/lib/python2.7/site-packages/lap/ps_monitor.py
#!/usr/bin/python
import psutil
import time
def __run__(params):
now = time.time()
perfdata = []
pids = []
max_time = params.get('max_time', 1800)
for process in psutil.get_process_list():
try:
if ('process_name' in params and process.name == params['process_name'] and (now - process.create_time) > max_time) or \
('process_name' not in params and (now - process.create_time) > max_time):
pids.append("/".join((process.username, process.name, str(process.pid))))
except psutil.error.NoSuchProcess:
continue
perfdata.append(("num_processes", str(len(pids))))
if len(pids) > 0:
return [2, "CRIT - %d process running for more than %d seconds: %s" % (len(pids), max_time, ",".join(pids)), "|".join([ "=".join(x) for x in perfdata])]
if __name__ == '__main__':
__run__({'process_name': 'lmtp'})