mentat.system module¶
Mentat system management and inspection library.
-
class
mentat.system.
MentatCronjob
(params)[source]¶ Bases:
object
Class representing Mentat cronjob module configuration for control utility.
-
class
mentat.system.
MentatModule
(params)[source]¶ Bases:
object
Class representing Mentat real-time module configuration for control utility.
-
mentat.system.
REGEXP_MENTAT_CACHEF
= re.compile('(.+)\\.json$')¶ Regular expression for selecting Mentat related cache files.
-
mentat.system.
REGEXP_MENTAT_CRONF
= re.compile('(.+)\\.cron$')¶ Regular expression for selecting Mentat related log files.
-
mentat.system.
REGEXP_MENTAT_LOGF
= re.compile('(.+)\\.log$')¶ Regular expression for selecting Mentat related log files.
-
mentat.system.
REGEXP_MENTAT_PIDF
= re.compile('(.+?)(?:\\.([0-9a-fA-F]+))?\\.pid$')¶ Regular expression for selecting Mentat related PID files.
-
mentat.system.
REGEXP_MENTAT_PS
= re.compile('\\s*(\\d+)\\s+([^\\s]+)\\s+([^\\s]*(?:python(?:\\d+(?:\\.\\d+)?)?))\\s+[^\\s]+(mentat-[^\\s]+)(?:\\s+(.*))?')¶ Regular expression for selecting Mentat related processes.
-
mentat.system.
REGEXP_MENTAT_RLOGF
= re.compile('(.+)(?:\\.([0-9a-fA-F]+))?\\.runlog$')¶ Regular expression for selecting Mentat related runlog files.
-
mentat.system.
analyze_cache_file
(cache_file, cache_file_path)[source]¶ Analyze given cache file.
Example of returned structure:
{ 'atime': datetime.datetime(2018, 1, 22, 15, 11, 15, 562358), 'file': 'itemset-stat-detectors.json', 'mtime': datetime.datetime(2018, 1, 23, 9, 8, 43, 403734), 'name': 'itemset-stat-detectors', 'path': '/var/mentat/cache/itemset-stat-detectors.json', 'size': 5831678 }
- Parameters
cache_file (str) – Basename of the cache file.
cache_file_path (str) – Full path to the cache file.
- Returns
Structure containing parsed cache file information.
- Return type
dict
-
mentat.system.
analyze_cache_files
(cache_dir_path)[source]¶ Analyze all cache files in cache directory.
Example of returned structure:
{ 'itemset-stat-detectors': {'atime': datetime.datetime(2018, 1, 9, 12, 25, 26, 338720), 'file': 'itemset-stat-detectors.json', 'mtime': datetime.datetime(2018, 1, 23, 9, 8, 38, 163710), 'name': 'mentat-enricher.py', 'path': '/var/mentat/cache/itemset-stat-detectors.json', 'size': 6057586, 'data': {...}} }
- Parameters
cache_dir_path (str) – Path to directory containing cache files.
- Returns
Structure containing parsed cache file information.
- Return type
dict
-
mentat.system.
analyze_cron_file
(cron_file, cron_file_path, cron_links)[source]¶ Analyze given cron file.
Example of returned structure:
{ 'atime': datetime.datetime(2018, 1, 21, 9, 13, 48, 34648), 'file': 'mentat-statistician-py.cron', 'link': None, 'mtime': datetime.datetime(2017, 7, 19, 10, 25, 30), 'name': 'mentat-statistician-py', 'path': '/etc/mentat/cron/mentat-statistician-py.cron', 'size': 429 }
- Parameters
cron_file (str) – Basename of the cron file.
cron_file_path (str) – Full path to the cron file.
cron_links (dict) – Dictionary containing existing links in cron directory.
- Returns
Structure containing parsed cron file information.
- Return type
dict
-
mentat.system.
analyze_cron_files
(cfg_dir_path, cron_dir_path)[source]¶ Analyze all cron files in config and cron directory.
Example of returned structure:
{ 'mentat-precache-py': {'atime': datetime.datetime(2018, 1, 21, 9, 13, 45), 'file': 'mentat-precache-py.cron', 'link': None, 'mtime': datetime.datetime(2017, 9, 1, 11, 10, 17), 'name': 'mentat-precache-py', 'path': '/etc/mentat/cron/mentat-precache-py.cron', 'size': 417}, 'mentat-statistician-py': {'atime': datetime.datetime(2018, 1, 21, 9, 13, 48, 34648), 'file': 'mentat-statistician-py.cron', 'link': None, 'mtime': datetime.datetime(2017, 7, 19, 10, 25, 30), 'name': 'mentat-statistician-py.cron', 'path': '/etc/mentat/cron/mentat-statistician-py.cron', 'size': 429} }
- Parameters
cfg_dir_path (str) – Path to configuration directory containing cron scripts.
cron_dir_path (str) – Path to system cron directory.
- Returns
Structure containing parsed cron file information.
- Return type
dict
-
mentat.system.
analyze_log_file
(log_file, log_file_path)[source]¶ Analyze given log file.
Example of returned structure:
{ 'atime': datetime.datetime(2018, 1, 22, 15, 11, 15, 562358), 'file': 'mentat-storage.py.log', 'mtime': datetime.datetime(2018, 1, 23, 9, 8, 43, 403734), 'name': 'mentat-storage.py', 'path': '/var/mentat/log/mentat-storage.py.log', 'size': 5831678 }
- Parameters
log_file (str) – Basename of the log file.
log_file_path (str) – Full path to the log file.
- Returns
Structure containing parsed log file information.
- Return type
dict
-
mentat.system.
analyze_log_files
(log_dir_path)[source]¶ Analyze all PID files in run directory.
Example of returned structure:
{ 'mentat-enricher.py': {'atime': datetime.datetime(2018, 1, 9, 12, 25, 26, 338720), 'file': 'mentat-enricher.py.log', 'mtime': datetime.datetime(2018, 1, 23, 9, 8, 38, 163710), 'name': 'mentat-enricher.py', 'path': '/var/mentat/log/mentat-enricher.py.log', 'size': 6057586}, 'mentat-inspector.py': {'atime': datetime.datetime(2018, 1, 18, 17, 5, 22, 734164), 'file': 'mentat-inspector.py.log', 'mtime': datetime.datetime(2018, 1, 23, 9, 8, 35, 291697), 'name': 'mentat-inspector.py', 'path': '/var/mentat/log/mentat-inspector.py.log', 'size': 8156449}, 'mentat-storage.py': {'atime': datetime.datetime(2018, 1, 22, 15, 11, 15, 562358), 'file': 'mentat-storage.py.log', 'mtime': datetime.datetime(2018, 1, 23, 9, 8, 43, 403734), 'name': 'mentat-storage.py', 'path': '/var/mentat/log/mentat-storage.py.log', 'size': 5831678} }
- Parameters
log_dir_path (str) – Path to directory containing log files.
- Returns
Structure containing parsed log file information.
- Return type
dict
-
mentat.system.
analyze_pid_file
(pid_file, pid_file_path)[source]¶ Analyze given PID file.
Example of returned structure:
{ 'atime': datetime.datetime(2018, 1, 23, 8, 25, 16, 439742), 'file': 'mentat-storage.py.pid', 'mtime': datetime.datetime(2018, 1, 23, 8, 25, 12, 943727), 'name': 'mentat-storage.py', 'paralel': False, 'path': '/var/mentat/run/mentat-storage.py.pid', 'pid': 9349, 'size': 5 }
- Parameters
pid_file (str) – Basename of the PID file.
pid_file_path (str) – Full path to the PID file.
- Returns
Structure containing parsed PID file information.
- Return type
dict
-
mentat.system.
analyze_pid_files
(pid_dir_path)[source]¶ Analyze all PID files in given run directory.
Example of returned structure:
{ 'mentat-enricher.py': {9356: {'atime': datetime.datetime(2018, 1, 23, 8, 25, 16, 439742), 'file': 'mentat-enricher.py.pid', 'mtime': datetime.datetime(2018, 1, 23, 8, 25, 14, 319733), 'name': 'mentat-enricher.py', 'paralel': False, 'path': '/var/mentat/run/mentat-enricher.py.pid', 'pid': 9356, 'size': 5}}, 'mentat-inspector.py': {9362: {'atime': datetime.datetime(2018, 1, 23, 8, 25, 16, 439742), 'file': 'mentat-inspector.py.pid', 'mtime': datetime.datetime(2018, 1, 23, 8, 25, 14, 947736), 'name': 'mentat-inspector.py', 'paralel': False, 'path': '/var/mentat/run/mentat-inspector.py.pid', 'pid': 9362, 'size': 5}}, 'mentat-storage.py': {9349: {'atime': datetime.datetime(2018, 1, 23, 8, 25, 16, 439742), 'file': 'mentat-storage.py.pid', 'mtime': datetime.datetime(2018, 1, 23, 8, 25, 12, 943727), 'name': 'mentat-storage.py', 'paralel': False, 'path': '/var/mentat/run/mentat-storage.py.pid', 'pid': 9349, 'size': 5}} }
- Parameters
pid_dir_path (str) – path to directory containing PID files.
- Returns
Structure containing parsed information for all PID files.
- Return type
dict
-
mentat.system.
analyze_process_list_ps
()[source]¶ Analyze all running processes using Linux`s
ps
utility.Processes are listed with following exact command:
/bin/ps axo pid,comm,args | grep mentat | grep -v grep
Only processes that match the internal regular expression are selected.
Example of returned structure:
{ 'mentat-enricher.py': {9356: {'args': None, 'exec': 'mentat-enricher.py', 'name': 'mentat-enricher.py', 'paralel': False, 'pid': 9356, 'process': 'python3', 'psline': '9356 python3 python3 /usr/local/bin/mentat-enricher.py'}}, 'mentat-inspector.py': {9362: {'args': None, 'exec': 'mentat-inspector.py', 'name': 'mentat-inspector.py', 'paralel': False, 'pid': 9362, 'process': 'python3', 'psline': '9362 python3 python3 /usr/local/bin/mentat-inspector.py'}}, 'mentat-storage.py': {9349: {'args': None, 'exec': 'mentat-storage.py', 'name': 'mentat-storage.py', 'paralel': False, 'pid': 9349, 'process': 'python3', 'psline': '9349 python3 python3 /usr/local/bin/mentat-storage.py'}} }
- Returns
Structured dictionary containing information about selected processess.
- Return type
dict
-
mentat.system.
analyze_process_ps
(cmdline)[source]¶ Analyze given process command line received from
ps
utility.Example of returned structure:
{ 'args': None, 'exec': 'mentat-storage.py', 'name': 'mentat-storage.py', 'paralel': False, 'pid': 9349, 'process': 'python3', 'psline': '9349 python3 python3 /usr/local/bin/mentat-storage.py' }
- Parameters
cmdline (str) – Command line as received from
ps
utility).- Returns
Structure containing parsed process information.
- Return type
dict
-
mentat.system.
analyze_runlog_file
(runlog_file, runlog_file_path)[source]¶ Analyze given runlog file.
Example of returned structure:
{ 'atime': datetime.datetime(2018, 1, 22, 16, 33, 56, 766819), 'data': {...}, 'file': '201801221611.runlog', 'mtime': datetime.datetime(2018, 1, 22, 15, 30, 0, 427902), 'name': '201801221611', 'path': '/var/mentat/run/mentat-storage.py/201801221611.runlog', 'size': 1209 }
- Parameters
runlog_file (str) – Basename of the runlog file.
runlog_file_path (str) – Full path to the runlog file.
- Returns
Structure containing parsed runlog file information.
- Return type
dict
-
mentat.system.
analyze_runlog_files
(run_dir_path, limit=None)[source]¶ Analyze all runlog files in run directory.
- Parameters
run_dir_path (str) – Path to directory containing run files.
- Returns
Structure containing parsed runlog file information.
- Return type
dict
-
mentat.system.
analyze_versions
()[source]¶ Analyze versions of various relevant dependencies (like PostgreSQL, …).
-
mentat.system.
cronjob_status
(cronj_data, cronf_data, overall_status)[source]¶ Analyze status of given cron module.