""" Get instantaneous memory statistics (installed, total, free, available) """ import re from logparse.formatting import * from logparse import config from logparse.load_parsers import Parser class Mem(Parser): def __init__(self): super().__init__() self.name = "mem" self.info = "Get instantaneous memory statistics " "(installed, total, free, available)" def parse_log(self): logger.debug("Starting memory section") section = Section("memory") table = Table() ram_b = os.sysconf('SC_PAGE_SIZE') * os.sysconf('SC_PHYS_PAGES') table.add_row(Row([Column("Installed"), Column(parsesize(ram_b))])) raw_mem = util.readlog(config.prefs.get("logs", "meminfo")) line_regex = re.compile("^Mem(\w+):\s*(\d*)\s*kB$") for line in raw_mem.splitlines(): matches = line_regex.findall(line) if len(matches) > 0: logger.debug("Detected {0} memory of {1} kB". format(matches[0][0].lower(), matches[0][1])) table.add_row(Row([Column(matches[0][0]), Column(parsesize(float(matches[0][1])*1000))])) table.align_column(0, "right") section.append_table(table) logger.info("Finished memory section") return section