import boto3 from datetime import datetime, timedelta from dateutil import parser from tracker.terminal_colors import colorise, colors def get_logfile_name(days_ago=0, hours_ago=0): return "error/postgresql.log.{}".format( (datetime.utcnow() - timedelta(hours=hours_ago, days=days_ago)).strftime("%Y-%m-%d-%H") ) def print_info(hours_ago=0): client = boto3.client("rds") result = client.download_db_log_file_portion( DBInstanceIdentifier="whitelist", LogFileName=get_logfile_name(hours_ago=hours_ago) ) all_lines = result["LogFileData"].splitlines() for indx, line in enumerate(all_lines): if "duration:" in line: dt = parser.parse(line[:23]) dur = float(line.split("LOG: duration:")[-1].split(" ms")[0].strip()) print(dt) print( colorise( str(dur / 1000), colors.fg.red if dur > 30e3 else colors.fg.yellow if dur > 10e3 else colors.fg.lightgrey, ) ) print("\n".join(all_lines[indx + 1 : indx + 8])) print("--------\n\n")