Exemplo n.º 1
0
    def __init__(self, config):
        self.config = config
        self.logger = logging.getLogger(
            'mom.Collectors.GuestNetworkDaemon.Server')
        # Borrow a HostMemory Collector to get the needed data
        self.collector = HostMemory(None)
        self.vmstat = open_datafile("/proc/vmstat")

        # Socket Setup
        self.listen_ip = config.get('main', 'host')
        self.listen_port = config.getint('main', 'port')
        self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.socket.bind((self.listen_ip, self.listen_port))
        self.socket.listen(1)
        self.min_free = config.get('main', 'min_free')
        self.max_free = config.get('main', 'max_free')
Exemplo n.º 2
0
class _Server:
    """
    A simple TCP server that implements the guest side of the guest network
    Collector.
    """
    def __init__(self, config):
        self.config = config
        self.logger = logging.getLogger('mom.Collectors.GuestNetworkDaemon.Server')
        # Borrow a HostMemory Collector to get the needed data
        self.collector = HostMemory(None)
        self.vmstat = open_datafile("/proc/vmstat")

        # Socket Setup
        self.listen_ip = config.get('main', 'host')
        self.listen_port = config.getint('main', 'port')
        self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.socket.bind((self.listen_ip, self.listen_port))
        self.socket.listen(1)
        self.min_free = config.get('main', 'min_free')
        self.max_free = config.get('main', 'max_free')

    def __del__(self):
        sock_close(self.socket)
        if self.vmstat is not None:    
            self.vmstat.close()

    def send_props(self, conn):
        response = "min_free:" + self.min_free + ",max_free:" + self.max_free
        sock_send(conn, response)

    def send_stats(self, conn):
        data = self.collector.collect()
        self.vmstat.seek(0)
        contents = self.vmstat.read()
        minflt = parse_int("^pgfault (.*)", contents)
        majflt = parse_int("^pgmajfault (.*)", contents)

        response = "mem_available:%i,mem_unused:%i,swap_in:%i,swap_out:%i," \
                   "major_fault:%i,minor_fault:%i" % \
                   (data['mem_available'], data['mem_free'], data['swap_in'], \
                    data['swap_out'], majflt, minflt)
        sock_send(conn, response)

    def session(self, conn, addr):
        self.logger.debug("Connection received from %s", addr)
        conn.settimeout(10)
        while self.running:
            try:
                cmd = sock_receive(conn)
                if cmd == "props":
                    self.send_props(conn)
                elif cmd == "stats":
                    self.send_stats(conn)
                else:
                    break
            except socket.error, msg:
                self.logger.warn("Exception: %s" % msg)
                break
        sock_close(conn)
        self.logger.debug("Connection closed")
Exemplo n.º 3
0
class _Server:
    """
    A simple TCP server that implements the guest side of the guest network
    Collector.
    """
    def __init__(self, config):
        self.config = config
        self.logger = logging.getLogger('mom.Collectors.GuestNetworkDaemon.Server')
        # Borrow a HostMemory Collector to get the needed data
        self.collector = HostMemory(None)
        self.vmstat = open_datafile("/proc/vmstat")

        # Socket Setup
        self.listen_ip = config.get('main', 'host')
        self.listen_port = config.getint('main', 'port')
        self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.socket.bind((self.listen_ip, self.listen_port))
        self.socket.listen(1)
        self.min_free = config.get('main', 'min_free')
        self.max_free = config.get('main', 'max_free')

    def __del__(self):
        sock_close(self.socket)
        if self.vmstat is not None:
            self.vmstat.close()

    def send_props(self, conn):
        response = "min_free:" + self.min_free + ",max_free:" + self.max_free
        sock_send(conn, response)

    def send_stats(self, conn):
        data = self.collector.collect()
        self.vmstat.seek(0)
        contents = self.vmstat.read()
        minflt = parse_int("^pgfault (.*)", contents)
        majflt = parse_int("^pgmajfault (.*)", contents)

        response = "mem_available:%i,mem_unused:%i,swap_in:%i,swap_out:%i," \
                   "major_fault:%i,minor_fault:%i" % \
                   (data['mem_available'], data['mem_free'], data['swap_in'], \
                    data['swap_out'], majflt, minflt)
        sock_send(conn, response)

    def session(self, conn, addr):
        self.logger.debug("Connection received from %s", addr)
        conn.settimeout(10)
        while self.running:
            try:
                cmd = sock_receive(conn)
                if cmd == "props":
                    self.send_props(conn)
                elif cmd == "stats":
                    self.send_stats(conn)
                else:
                    break
            except socket.error, msg:
                self.logger.warn("Exception: %s" % msg)
                break
        sock_close(conn)
        self.logger.debug("Connection closed")
Exemplo n.º 4
0
    def __init__(self, config):
        self.config = config
        self.logger = logging.getLogger('mom.Collectors.GuestNetworkDaemon.Server')
        # Borrow a HostMemory Collector to get the needed data
        self.collector = HostMemory(None)
        self.vmstat = open_datafile("/proc/vmstat")

        # Socket Setup
        self.listen_ip = config.get('main', 'host')
        self.listen_port = config.getint('main', 'port')
        self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.socket.bind((self.listen_ip, self.listen_port))
        self.socket.listen(1)
        self.min_free = config.get('main', 'min_free')
        self.max_free = config.get('main', 'max_free')
Exemplo n.º 5
0
class _Server:
    """
    A simple TCP server that implements the guest side of the guest network
    Collector.
    """
    def __init__(self, config):
        self.config = config
        self.logger = logging.getLogger(
            'mom.Collectors.GuestNetworkDaemon.Server')
        # Borrow a HostMemory Collector to get the needed data
        self.collector = HostMemory(None)
        self.vmstat = open_datafile("/proc/vmstat")

        # Socket Setup
        self.listen_ip = config.get('main', 'host')
        self.listen_port = config.getint('main', 'port')
        self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.socket.bind((self.listen_ip, self.listen_port))
        self.socket.listen(1)
        self.min_free = config.get('main', 'min_free')
        self.max_free = config.get('main', 'max_free')

    def __del__(self):
        sock_close(self.socket)
        if self.vmstat is not None:
            self.vmstat.close()

    def send_props(self, conn):
        response = "min_free:" + self.min_free + ",max_free:" + self.max_free
        sock_send(conn, response)

    def send_stats(self, conn):
        data = self.collector.collect()
        self.vmstat.seek(0)
        contents = self.vmstat.read()
        minflt = parse_int("^pgfault (.*)", contents)
        majflt = parse_int("^pgmajfault (.*)", contents)

        # DRG
        stat = open_datafile("/proc/stat")
        stats = stat.readline().split()
        user = int(stats[1])
        nice = int(stats[2])
        system = int(stats[3])
        idle = int(stats[4])
        iowait = int(stats[5])
        irq = int(stats[6])
        softirq = int(stats[7])
        steal = int(stats[8])
        total = user + nice + system + idle + iowait + irq + softirq + steal
        #self.logger.info("iowait:%s, irq:%s", iowait, irq)

        response = "mem_available:%i,mem_unused:%i,swap_in:%i,swap_out:%i,swap_total:%i,swap_usage:%i," \
                   "major_fault:%i,minor_fault:%i,user:%i,nice:%i,system:%i,idle:%i,iowait:%i,irq:%i,softirq:%i,steal:%i,total:%i" % \
                   (data['mem_available'], data['mem_free'], data['swap_in'], \
                    data['swap_out'], data['swap_total'], data['swap_usage'], majflt, minflt, \
                    user, nice, system, idle, iowait, irq, softirq, steal, total)
        sock_send(conn, response)
        if stat is not None:
            stat.close()

    def session(self, conn, addr):
        self.logger.debug("Connection received from %s", addr)
        conn.settimeout(10)
        while self.running:
            try:
                cmd = sock_receive(conn)
                if cmd == "props":
                    self.send_props(conn)
                elif cmd == "stats":
                    self.send_stats(conn)
                else:
                    break
            except socket.error, msg:
                self.logger.warn("Exception: %s" % msg)
                break
        sock_close(conn)
        self.logger.debug("Connection closed")