编写Shell脚本检查PostgreSQL备份状态并发送告警邮件
编写Shell脚本检查PostgreSQL备份状态并发送告警邮件
我帮你整了个实用的Shell脚本,专门用来解析你提供的PostgreSQL备份检查输出,识别异常项并自动发送告警邮件,具体如下:
完整脚本示例
#!/bin/bash # 替换成实际执行备份检查的命令,比如你用来生成目标输出的检查命令 BACKUP_OUTPUT=$(your_postgres_backup_check_command_here) # 从输出中筛选所有包含"Failed"的异常条目(忽略大小写) FAILED_ITEMS=$(echo "$BACKUP_OUTPUT" | grep -i "Failed") # 配置告警邮件参数,按需修改 ALERT_EMAIL="your-alert-recipient@example.com" EMAIL_SUBJECT="PostgreSQL Backup Status Notification" # 判断是否存在异常并发送邮件 if [ -n "$FAILED_ITEMS" ]; then # 构造告警邮件内容 EMAIL_BODY="⚠️ PostgreSQL备份检查发现异常!\n\n异常详情:\n$FAILED_ITEMS\n\n完整检查结果:\n$BACKUP_OUTPUT" echo -e "$EMAIL_BODY" | mail -s "$EMAIL_SUBJECT (ALERT)" "$ALERT_EMAIL" else # 可选:全部正常时也发送通知,不需要的话可以删掉这个分支 EMAIL_BODY="✅ PostgreSQL备份检查全部正常!\n\n完整检查结果:\n$BACKUP_OUTPUT" echo -e "$EMAIL_BODY" | mail -s "$EMAIL_SUBJECT (OK)" "$ALERT_EMAIL" fi
关键细节说明
- 动态捕获输出:把
your_postgres_backup_check_command_here替换成你实际用来生成那段备份检查输出的命令,这样脚本每次运行都能获取最新的状态 - 异常识别:用
grep -i "Failed"忽略大小写匹配异常,确保不会漏掉类似failed的条目 - 邮件发送:脚本用系统自带的
mail命令发邮件,如果你的系统没有这个命令,需要先安装mailutils(Debian/Ubuntu)或者sendmail(RHEL/CentOS) - 自定义调整:你可以根据需求修改邮件内容,比如只发送异常项、添加时间戳,或者调整邮件主题
测试小技巧
如果想先测试脚本逻辑,可以把BACKUP_OUTPUT直接替换成你提供的那段测试输出:
BACKUP_OUTPUT="Server standby: PostgreSQL: OK is_superuser: OK PostgreSQL streaming: OK wal_level: Failed replication slot: OK directories: OK retention policy settings: OK backup maximum age: OK (no last_backup_maximum_age provided) compression settings: OK failed backups: OK (there are 0 failed backups) minimum redundancy requirements: OK (have 96 backups, expected at...)"
内容的提问来源于stack exchange,提问作者Ankit Arora
相关产品推荐
相关产品推荐

