Files
awoooi/scripts/backup/backup-all.sh
OG T f51bf5a6a8 feat(backup): 全服務備份覆蓋 + 告警機制 — 9/9 服務完整
新增備份(已部署到 110,首次執行全部通過):
- backup-langfuse.sh: Langfuse AI 追蹤/評測 DB (7238 traces)
- backup-monitoring.sh: Prometheus + Grafana + Alertmanager volumes + configs
- backup-signoz.sh: SignOz ClickHouse + SQLite (分散式追蹤/日誌)
- backup-open-webui.sh: Open-WebUI LLM 對話紀錄 (SSH 188 volume)
- backup-clawbot.sh: ClawBot Redis 狀態/快取 (SSH 188 volume)
- backup-all.sh v3.0: 整合至 9/9 服務

告警機制:
- common.sh: notify_clawbot 改用 /webhook/custom 正確格式
- failed → severity:critical → Telegram 🔴 立即告警
- 告警測試通過:{"status":"ok","alert_id":"878c4c59..."}

GFS 保留:30日/12週/24月 (AWOOOI 額外 28h 高頻)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 11:12:42 +08:00

127 lines
4.9 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# =============================================================================
# WOOO AIOps - 全服務備份總控腳本
# 版本: 3.0.0
# 建立日期: 2026-03-12
# 2026-04-05 Claude Code: 加入 AWOOOI DB (v1→v2) — 首席架構師備份審計
# 2026-04-05 Claude Code: 加入 Langfuse/Monitoring/SignOz/Open-WebUI/ClawBot (v2→v3) — 備份覆蓋率審計
# =============================================================================
set -euo pipefail
source "$(dirname "$0")/common.sh"
main() {
local start_time=$(date +%s)
local failed=0
local total=9
log_info "╔══════════════════════════════════════════════════════════════╗"
log_info "║ WOOO AIOps - 全服務備份開始 (v3.0) ║"
log_info "╚══════════════════════════════════════════════════════════════╝"
# 備份 Gitea
log_info ">>> [1/${total}] 備份 Gitea..."
if /backup/scripts/backup-gitea.sh; then
log_success " Gitea 備份成功"
else
log_error " Gitea 備份失敗"
failed=$((failed+1))
fi
# 備份 MOMO Pro
log_info ">>> [2/${total}] 備份 MOMO Pro..."
if /backup/scripts/backup-momo.sh; then
log_success " MOMO Pro 備份成功"
else
log_error " MOMO Pro 備份失敗"
failed=$((failed+1))
fi
# 備份 Harbor
log_info ">>> [3/${total}] 備份 Harbor..."
if /backup/scripts/backup-harbor.sh; then
log_success " Harbor 備份成功"
else
log_error " Harbor 備份失敗"
failed=$((failed+1))
fi
# 備份 AWOOOI DB (awoooi_prod + k3s_datastore)
# 2026-04-05 Claude Code: 首席架構師備份審計後加入
log_info ">>> [4/${total}] 備份 AWOOOI DB..."
if /backup/scripts/backup-awoooi.sh; then
log_success " AWOOOI DB 備份成功"
else
log_error " AWOOOI DB 備份失敗"
failed=$((failed+1))
fi
# 備份 Langfuse (AI 追蹤/評測數據)
# 2026-04-05 Claude Code: 備份覆蓋率審計後加入
log_info ">>> [5/${total}] 備份 Langfuse..."
if /backup/scripts/backup-langfuse.sh; then
log_success " Langfuse 備份成功"
else
log_error " Langfuse 備份失敗"
failed=$((failed+1))
fi
# 備份 Monitoring (Prometheus + Grafana + Alertmanager)
# 2026-04-05 Claude Code: 備份覆蓋率審計後加入
log_info ">>> [6/${total}] 備份 Monitoring..."
if /backup/scripts/backup-monitoring.sh; then
log_success " Monitoring 備份成功"
else
log_error " Monitoring 備份失敗"
failed=$((failed+1))
fi
# 備份 SignOz (ClickHouse + SQLite)
# 2026-04-05 Claude Code: 備份覆蓋率審計後加入
log_info ">>> [7/${total}] 備份 SignOz..."
if /backup/scripts/backup-signoz.sh; then
log_success " SignOz 備份成功"
else
log_error " SignOz 備份失敗"
failed=$((failed+1))
fi
# 備份 Open-WebUI (LLM 對話紀錄,從 188)
# 2026-04-05 Claude Code: 備份覆蓋率審計後加入
log_info ">>> [8/${total}] 備份 Open-WebUI (188)..."
if /backup/scripts/backup-open-webui.sh; then
log_success " Open-WebUI 備份成功"
else
log_error " Open-WebUI 備份失敗"
failed=$((failed+1))
fi
# 備份 ClawBot Redis (狀態/快取,從 188低優先)
# 2026-04-05 Claude Code: 備份覆蓋率審計後加入
log_info ">>> [9/${total}] 備份 ClawBot Redis (188)..."
if /backup/scripts/backup-clawbot.sh; then
log_success " ClawBot Redis 備份成功"
else
log_error " ClawBot Redis 備份失敗"
failed=$((failed+1))
fi
local end_time=$(date +%s)
local duration=$((end_time - start_time))
log_info "╔══════════════════════════════════════════════════════════════╗"
if [ $failed -eq 0 ]; then
log_success "║ 全服務備份完成 (${duration}s) - 全部成功 (${total}/${total}) ║"
notify_clawbot "success" "all" "全服務備份完成 (${total}/${total} 成功)" "${duration}"
else
log_error "║ 全服務備份完成 (${duration}s) - ${failed} 個失敗 ($((total-failed))/${total}) ║"
notify_clawbot "warning" "all" "全服務備份完成 ($((total-failed))/${total} 成功)" "${duration}"
fi
log_info "╚══════════════════════════════════════════════════════════════╝"
return $failed
}
main "$@"