Beispiel #1
0
 def _start_pidstat_for_new_pids(self, pids):
     started = {}
     for pid in pids:
         if not self.monitored_pids.has_key(pid):
             print "Auto monitoring for pid %d started!" % (pid)
             started[pid] = start_pid_monitoring(self.out_dir, self.interval, pid)
     return started
Beispiel #2
0
def main(interval_sec, num_rounds, pids, automonitoring_on):

    print "Checking if sysstat is installed and in path..."
    sysstat_ok = check_command_execution(['sar', '-V'])
    if not sysstat_ok:
        return stop_execution(1, "Sysstat not installed or sar not in path or permission problem.")
    print "Checking if sysstat is installed and in path...OK"

    print "Creating output directory..."
    (out_dir, created) = create_out_dir()
    if created:
        print "..output directory: ", out_dir
    else:
        stop_execution(3, "Cannot create output directory.")
    print "Creating output directory...OK"

    print "Starting os level monitoring..."
    spawns = start_os_monitoring(out_dir, interval_sec)
    print "Starting os level monitoring...OK"

    if pids:
        for pid in pids.split(','):
            print "Starting monitoring for pid %s" % (pid)
            spawns += start_pid_monitoring(out_dir, interval_sec, int(pid))


    monitor = None
    if automonitoring_on:
        print "Automatic monitoring for interesting processes is ON"
        th = MonitoringThread(out_dir, interval_sec)
        th.setDaemon(True)
        th.start()
        monitor = th


    print "Sleeping for %s rounds of %s sec..." % (num_rounds, interval_sec)
    # no idea what to wait for, so let' sleep
    while num_rounds>0:
        time.sleep(interval_sec)
        num_rounds = num_rounds - 1

    # hmmm, should we not stop those?
    print "Stopping sar/pidstat processes..."
    for p in spawns:
        p.terminate()
    if monitor:
        monitor.join()
    print "Stopping sar/pidstat processes...OK"

    print "Finished"
    return 0