Спасибо за вашу рекомендацию, но Nagios-Core-32bit может поддерживать только 32-битную ОС, иногда мне также нужно контролировать на Win7 64bit, поэтому, наконец, я пишу крошечную программу для выполнения моего требования, код Python с поддержкой WMI
#!/usr/bin/python #
# -*- coding: utf-8 -*-
import logging
import logging.handlers
import wmi
import time
import ConfigParser
class CpuMonitor(object):
def __init__(self):
cf = ConfigParser.ConfigParser()
cf.read("config.ini")
if cf.has_option("mointor", "interval"):
self._interval = cf.get("mointor", "interval")
else:
self._interval = 5
if cf.has_option("mointor", "logfile"):
self._logfile = cf.get("mointor", "logfile")
else:
self._logfile = "stdout.log"
def monitor_cpu(self):
c = wmi.WMI()
logger = logging.getLogger()
hdlr = logging.handlers.RotatingFileHandler(self._logfile,maxBytes=102400000,backupCount=3)
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr)
logger.setLevel(logging.INFO)
while True:
for cpu in c.Win32_Processor():
logger.info('Utilization: %s: %d %%' % (cpu.DeviceID, cpu.LoadPercentage))
time.sleep(self._interval)
if __name__ == "__main__":
w = CpuMonitor()
w.monitor_cpu()