def collect()

in src/worker/exporters/node_exporter.py [0:0]


    def collect(self, field_name):  # noqa: C901
        '''Custom collection Method'''
        value = None
        if 'net' in field_name:
            cmd = "grep '{}' ".format(config['ethernet_device']) + self.config['fieldFiles'][field_name]
            val = None
            if 'net_rx' in field_name:
                val = shell_cmd(cmd, 5).split()[1]
            else:  # 'net_tx'
                val = shell_cmd(cmd, 5).split()[9]
            delta = int(val) - int(self.config['counter'][field_name])
            self.config['counter'][field_name] = val
            value = delta / (self.config['update_freq'])  # bandwidth
        elif 'cpu' in field_name:
            value = {}
            if 'util' in field_name:
                for id, util_percent in enumerate(
                        psutil.cpu_percent(percpu=True)):
                    value[str(id)] = util_percent

            elif 'frequency' in field_name:
                for id, freq in enumerate(psutil.cpu_freq(percpu=True)):
                    value[str(id)] = freq.current

        elif 'mem' in field_name:
            metric = field_name.split('_')[-1]
            virtual_mem = psutil.virtual_memory()

            if metric == 'util':
                value = getattr(virtual_mem, 'percent')
            else:
                # psutil returns virtual memory stats in bytes, convert to kB
                value = getattr(virtual_mem, metric) / 1024
        elif 'xid' in field_name or "link_flap" in field_name:
            try:
                value = {}
                cmd = self.config['command'][field_name]
                # check if error present in logs
                field_check = shell_cmd(cmd, 5)
                result = [line for line in field_check.split(
                    '\n') if line.strip() != '']
                for line in result:
                    timestamp = re.search(
                        r"\w\w\w\s+\d+\s\d\d:\d\d:\d\d", line)
                    if not timestamp:
                        continue
                    timestamp = timestamp.group()
                    if 'xid' in field_name:
                        results = re.search(r"\(.+\):\s\d\d", line)
                        if not results:
                            continue
                        results = results.group().split()
                        pci = results[0].replace('(PCI:', '').replace('):', '')[-10:]
                        if pci not in value:
                            value = {pci: {timestamp: []}}
                        if timestamp not in value[pci]:
                            value[pci][timestamp] = []
                        value[pci][timestamp].append(int(results[1].replace(',', '')))
                    else:  # link flap
                        results = re.search(r"\bib\d:", line)
                        if not results:
                            continue
                        hca = results.group().replace(':', '')
                        if hca not in value:
                            value[hca] = []
                        value[hca].append(timestamp)
            except Exception as e:
                logging.exception('Exception occured during collection. Message: %s', e)
                pass
        else:
            value = 0
        return value