def main():
parser = argparse.ArgumentParser(description='Stream logs from rds for a set of db instances.')
parser.add_argument('--db_instance_ids', '-d', nargs='+', type=str, required=True,
help='list of db instance ids')
parser.add_argument('--minutes_in_the_past_to_start', '-m', type=int, default=0,
help=('if logs have not been written to since this many minutes ago, '
'ignore them'))
parser.add_argument('--api_call_delay_seconds', '-a', type=float, default=1.0,
help='time to wait before each API call')
parser.add_argument('--log_state_file', '-s', type=str, default='log_state.json',
help='file path for recording the state of log streaming')
parser.add_argument('--retention_days', '-r', type=int, default=7,
help='number of days to retain log metadata')
parser.add_argument('--log_level', '-l', type=str, default='INFO',
choices=['DEBUG', 'INFO', 'WARN', 'ERROR', 'CRITICAL'],
help="log level for this script's logs")
parser.add_argument('--log_filename', '-f', type=str, default='rds_tail_logs.log',
help="log filename for this script's logs")
parser.add_argument('--run_once', '-o', dest='run_once', action='store_true',
help="stream all new logs from all db instances and then exit")
parser.add_argument('--output_format', '-t', choices=['json', 'text'], default='json',
help="output format")
parser.add_argument('--aws_region_name', type=str, help="AWS region name")
parser.add_argument('--aws_profile_name', default='default', help='AWS credentials profile name')
args = parser.parse_args()
os.environ['TZ'] = 'UTC'
time.tzset()
logging.basicConfig(filename=args.log_filename, level=logging._levelNames[args.log_level],
format='%(asctime)s %(message)s')
logging.info('Starting rds log streaming with args: %s', args)
rds = RDS(args.api_call_delay_seconds, args.aws_region_name, args.aws_profile_name)
rds_tail_logs = LogTail(args.log_state_file, args.db_instance_ids,
args.minutes_in_the_past_to_start, rds,
args.retention_days, args.run_once, args.output_format)
rds_tail_logs.stream()
评论列表
文章目录