---
title: "Vận hành và phục hồi"
description: "Nextvision Status — Vận hành và phục hồi"
---

> Documentation Index
> Fetch the complete documentation index at: https://status.nextvisions.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Vận hành và phục hồi

## Sức khỏe hệ thống

`/healthz` kiểm tra tiến trình API; `/readyz` kiểm PostgreSQL và Redis. Theo dõi MinIO riêng: lỗi object store ảnh hưởng tệp/báo cáo/snapshot. Worker ghi lỗi scheduler/evaluator/retention/delivery ra log.

Theo dõi last-seen của probe, tuổi job chờ, delivery lỗi, dung lượng PostgreSQL, phân vùng và bộ nhớ Redis. Tuổi snapshot hiển thị trên trang công khai; vẫn cần monitor độc lập cho chính hệ thống này.

## Retention

Free giữ mẫu thô 7 ngày, tổng hợp ngày/giờ 90 ngày; Business cấu hình qua platform admin. Raw tables chia partition theo tháng. Worker tạo trước partition và xóa mẫu hết hạn theo tenant. Chỉ xóa partition cũ sau khi xác nhận không còn dòng trong retention.

## Backup

```sh
docker compose exec -T postgres pg_dump -U postgres -Fc status > status.dump
```

Sao lưu objects MinIO, cấu hình versioning và khóa mã hóa riêng. Redis hỗ trợ phục hồi queue/cache, PostgreSQL vẫn là nguồn chính của jobs/outbox/deliveries. Không đưa `.env` hoặc credential vào repo/báo cáo.

## Restore drill

Dùng DB và bucket riêng. Restore dump bằng pg_restore, khôi phục objects và secrets, chạy migrator, khởi động API/workers rồi kiểm tenant isolation, lịch sử, tệp và snapshot trước chuyển traffic.

`scripts/backup-restore.sh` thử backup/restore PostgreSQL vào DB local tạm, không ghi đè DB đang chạy. Production vẫn cần thử khôi phục object store và đánh giá recovery point.

## Khi dependency lỗi

Khi Redis khởi động lại, worker quét các job đang chờ trong DB. Khi worker chết, job có lease hết hạn được nhận lại. Nếu endpoint công khai không kiểm tra được trang trong PostgreSQL, API bỏ qua Redis và đọc snapshot đã công bố trên MinIO. Phản hồi luôn có `stale: true`, giữ nguyên `updated_at`, thương hiệu đã công bố và thông báo tạm ngưng nếu có. Khi DB phục hồi, API trả dữ liệu trực tiếp trở lại.

Fallback có thời gian chờ riêng tối đa 7 giây sau thời gian chờ DB/cache (tối đa 5 giây). API đọc toàn bộ object tối đa 2 lần, mỗi lần tối đa 3 giây, có khoảng nghỉ ngắn giữa hai lần. SDK lưu trữ có thể thử lại HTTP trong từng lần đọc. Luồng nội dung bị ngắt, mạng quá hạn và lỗi lưu trữ tạm thời được thử lại; object không tồn tại, bị từ chối quyền hoặc snapshot không hợp lệ thì dừng ngay. API kiểm tra toàn bộ JSON, slug, thời điểm cập nhật, trạng thái và các danh sách bắt buộc, với giới hạn 64 MiB. Nếu không đọc được snapshot hợp lệ, API trả 503; UI giữ dữ liệu đã tải với thông báo lỗi.

Trong log API, tìm `public snapshot read failed`: các trường `error_kind`, `storage_code`, `storage_status`, `attempt`, `elapsed_ms` và `retry` cho biết loại lỗi mà không ghi credential hoặc nội dung phản hồi. `public snapshot read recovered` cho biết lần đọc thứ hai thành công. Theo dõi lỗi và tuổi snapshot riêng với `/readyz`. Một image build chạy cùng thời điểm chưa chứng minh nguyên nhân của lỗi lưu trữ; cần đối chiếu chẩn đoán mạng/lưu trữ và dung lượng máy.

## Kiểm thử tải

Dùng benchmark đi kèm, ghi rõ tài nguyên, digest, throughput và percentile. Dữ liệu synthetic không chứng minh hiệu năng endpoint Internet hay soak test 24 giờ. Chỉ công bố SLA sau khi hoàn tất phép đo đại diện.

Source: https://status.nextvisions.ai/docs/vi/operations/index.mdx
