With python we can also automate the barman backup and the zabbix monitoring as follows:
Source
import os import sys sys.path.append('/opt/applications/management-tools/apps/nms-scripts/service/scripts/functions/') sys.path.append('/opt/applications/management-tools/apps/nms-scripts/service/scripts/conf/') import zabbixconfig from zabbixconfig import zabbixmetric def run_barmanbackup(): try: print('Starting Backup') stream = os.popen('barman list-backup pgsql') failed_bkp_id = "" last_backup_id = "" failed_backups = 0 total_backups = 0 for line in stream.read().splitlines(): if "FAILED" in line: failed_backups += 1 failed_bkp_id = line.split(" ")[1] print('Found failed backup %s, will delete it.' % failed_bkp_id) delete_command = ('barman delete pgsql %s' % failed_bkp_id) os.system(delete_command) last_backup_id = line.split(" ")[1] total_backups += 1 if total_backups - failed_backups >= 3: print('We have at least two healthy backups, will delete the last one: %s' % last_backup_id) delete_command = ('barman delete pgsql %s' % last_backup_id) os.system(delete_command) barman = os.popen('barman backup pgsql') output = barman.read() print(output) if output in 'ERROR': print("Failed running barman PostgreSQL backup") packet = zabbixmetric('bkp_status', "ERROR - FAILED running barman PostgreSQL backup") else: print("Backup run successfully") packet = zabbixmetric('bkp_status', "Backup completed successfully") except Exception as err: print(f'Failed running barman PostgreSQL backup : {err}') packet = zabbixmetric(f'bkp_status', 'ERROR - FAILED running barman PostgreSQL backup : {err}') run_barmanbackup()
That script will keep 3 backups on the barman server.