Example #1
0
 def measure_time(*args, **kwargs):
     t1 = time.time()
     result = fn(*args, **kwargs)
     t2 = time.time()
     logger.debug("@timefn:" + fn.__name__ + " took " + str(t2 - t1) +
                  " seconds")
     return result
Example #2
0
    def get_nic_util(self):
        try:
            nics_io = psutil.net_io_counters(pernic=True)
            virtual_net_device = os.listdir('/sys/devices/virtual/net/')
            physical_net_device = [
                dev for dev in nics_io
                if dev not in virtual_net_device and not dev.startswith("tap")
            ]
            monitor_net_devices = physical_net_device
            # add bond, drop bond's slave physical nic
            bond_info = self.get_bonds_dict()
            if bond_info:
                bond_masters = bond_info.get("bond_masters", [])
                bond_slaves = bond_info.get("bond_slaves", [])
                monitor_net_devices.extend(bond_masters)
                monitor_net_devices = [
                    dev for dev in monitor_net_devices
                    if dev not in bond_slaves
                ]

            with self.app.app_context():
                for nic in monitor_net_devices:
                    bytes_send = nics_io[nic].bytes_sent
                    bytes_recv = nics_io[nic].bytes_recv
                    if nic not in current_app.statistic['nic_util'].keys():
                        current_app.statistic['nic_util'][nic] = {}
                        current_app.statistic['nic_util'][nic]['ip'] = ""
                        if (nic in psutil.net_if_addrs()) and (
                                psutil.net_if_addrs()[nic][0].family
                                == socket.AF_INET):
                            current_app.statistic['nic_util'][nic][
                                'ip'] = psutil.net_if_addrs()[nic][0].address
                        current_app.statistic['nic_util'][nic][
                            'read_bytes'] = []
                        current_app.statistic['nic_util'][nic][
                            'write_bytes'] = []

                    if len(current_app.statistic['nic_util'][nic]
                           ['write_bytes']) == self.record_cnt:
                        current_app.statistic['nic_util'][nic][
                            'write_bytes'].pop(0)
                    current_app.statistic['nic_util'][nic][
                        'write_bytes'].append(bytes_send)

                    if len(current_app.statistic['nic_util'][nic]
                           ['read_bytes']) == self.record_cnt:
                        current_app.statistic['nic_util'][nic][
                            'read_bytes'].pop(0)
                    current_app.statistic['nic_util'][nic][
                        'read_bytes'].append(bytes_recv)
                logger.debug(current_app.statistic['nic_util'])
        except Exception as err:
            logger.error(err)
            logger.error(''.join(traceback.format_exc()))
Example #3
0
 def get_cpu_util(self):
     try:
         cpu_utilization = psutil.cpu_percent()
         with self.app.app_context():
             if cpu_utilization:
                 if len(current_app.statistic['cpu_util']
                        ) == self.record_cnt:
                     current_app.statistic['cpu_util'].pop(0)
                 current_app.statistic['cpu_util'].append(cpu_utilization)
             logger.debug(current_app.statistic['cpu_util'])
     except Exception as err:
         logger.error(err)
         logger.error(''.join(traceback.format_exc()))
Example #4
0
 def get_memory_util(self):
     try:
         mem_info = psutil.virtual_memory()
         with self.app.app_context():
             if mem_info.percent:
                 if not current_app.statistic['memory_util'].keys():
                     current_app.statistic['memory_util']['used'] = []
                     current_app.statistic['memory_util']['percent'] = []
                 if len(current_app.statistic['memory_util']
                        ['percent']) == self.record_cnt:
                     current_app.statistic['memory_util']['percent'].pop(0)
                     current_app.statistic['memory_util']['used'].pop(0)
                 current_app.statistic['memory_util']['percent'].append(
                     mem_info.percent)
                 current_app.statistic['memory_util']['used'].append(
                     mem_info.used)
             logger.debug(current_app.statistic['memory_util'])
     except Exception as err:
         logger.error(err)
         logger.error(''.join(traceback.format_exc()))
Example #5
0
 def get_disk_util(self):
     try:
         disk_parts = psutil.disk_partitions()
         with self.app.app_context():
             for disk in disk_parts:
                 disk_mountpoint = disk.mountpoint
                 disk_usage = psutil.disk_usage(disk_mountpoint)
                 if disk_mountpoint not in current_app.statistic[
                         'disk_util'].keys():
                     current_app.statistic['disk_util'][
                         disk_mountpoint] = {}
                 current_app.statistic['disk_util'][disk_mountpoint][
                     'rate'] = "%0.2f" % disk_usage.percent
                 current_app.statistic['disk_util'][disk_mountpoint][
                     'used'] = disk_usage.used
                 current_app.statistic['disk_util'][disk_mountpoint][
                     'total'] = disk_usage.total
             logger.debug(current_app.statistic['disk_util'])
     except Exception as err:
         logger.error(err)
         logger.error(''.join(traceback.format_exc()))
Example #6
0
    def get_diskio_util(self):
        try:
            with self.app.app_context():
                disks_io = psutil.disk_io_counters(perdisk=True)
                for disk_name in self.get_disk_list():
                    # disk_io = disks_io[disk_name]
                    write_bytes = disks_io[disk_name].write_bytes
                    read_bytes = disks_io[disk_name].read_bytes
                    io_use_ticks = self.get_disk_io_ticks(disk_name)
                    if disk_name not in current_app.statistic[
                            'disk_io_util'].keys():
                        current_app.statistic['disk_io_util'][disk_name] = {}
                        current_app.statistic['disk_io_util'][disk_name][
                            'read_bytes'] = []
                        current_app.statistic['disk_io_util'][disk_name][
                            'write_bytes'] = []
                        current_app.statistic['disk_io_util'][disk_name][
                            'io_use_ticks'] = []

                    if len(current_app.statistic['disk_io_util'][disk_name]
                           ['write_bytes']) == self.record_cnt:
                        current_app.statistic['disk_io_util'][disk_name][
                            'write_bytes'].pop(0)
                        current_app.statistic['disk_io_util'][disk_name][
                            'read_bytes'].pop(0)
                        current_app.statistic['disk_io_util'][disk_name][
                            'io_use_ticks'].pop(0)
                    current_app.statistic['disk_io_util'][disk_name][
                        'write_bytes'].append(write_bytes)
                    current_app.statistic['disk_io_util'][disk_name][
                        'read_bytes'].append(read_bytes)
                    current_app.statistic['disk_io_util'][disk_name][
                        'io_use_ticks'].append(io_use_ticks)
                logger.debug(current_app.statistic['disk_io_util'])
        except Exception as err:
            logger.error(err)
            logger.error(''.join(traceback.format_exc()))
Example #7
0
def monitor_timer(msq, handlers):
    # default pause timer handlers
    for timer in handlers:
        exec_func = getattr(timer, "pause")
        if timer.name == "statistic":
            continue
        logger.debug('timer = {}'.format(timer.name))
        exec_func()
    while True:
        # 1. get queue msg ['pause', 'resume', 'update']
        try:
            cmd_msg = msq.get(block=False)
            for timer in handlers:
                exec_func = getattr(timer, cmd_msg)
                exec_func()
                logger.info('monitor_timer exec: {}'.format(cmd_msg))
        except Exception as err:
            if type(err) is queue.Empty:
                #logger.debug('timer_queue no msq, go to sleep 5 seconds...')
                pass
            else:
                logger.error('monitor_timer error: {}'.format(err))
        # 2. exec thread process
        time.sleep(5)