KB-5ED8

GPT — Prompt điều tra sức khỏe VPS theo thực tế vận hành hiện tại (rev2)

9 min read Revision 1
reportgptvpshealthcodexprompt2026-04-07rev2

GPT — Prompt điều tra sức khỏe VPS theo thực tế vận hành hiện tại (rev2)

Date: 2026-04-07 Agent: GPT Mục tiêu: điều chỉnh prompt cho phù hợp mô tả vận hành thực tế từ user: VPS là SSOT tác nghiệp, GitHub là backup ngược 2 lần/ngày, Google Drive là kênh backup data hằng ngày và chuẩn bị thêm backup code 4 lần/ngày.


1) Thực tế vận hành user vừa xác nhận

  1. VPS hiện là SSOT thực chiến và thường sửa trực tiếp trên VPS để xử lý nhanh.
  2. Hệ thống đang ở trạng thái đang xây nhưng hỏng, chuẩn bị làm lại.
  3. Mã được backup ngược về GitHub 2 lần/ngày.
  4. Data được tải tự động về Google Drive 1 lần/ngày.
  5. Sắp bổ sung backup code về Google Drive 4 lần/ngày làm kênh thứ hai.
  6. Mục tiêu ưu tiên hiện tại: ổn định hoạt động VPS, đọc log để liệt kê các vấn đề hiện tại, tìm bug đang tồn tại hoặc tái diễn.

2) Ghi chú pháp lý / xung đột với SSOT luật hiện hành

  • Mô tả “VPS là SSOT, sửa trực tiếp trên VPS cho nhanh” xung đột với:
    • knowledge/dev/ssot/vps/vps-operating-rules.mdLuật 2: KHÔNG SỬA TRỰC TIẾP TRÊN VPS
    • cùng tài liệu — Luật 4: GITOPS LÀ NGUỒN SỰ THẬT
  • Tuy nhiên trong nhiệm vụ này, prompt chỉ phục vụ điều tra READ-ONLY, nên không vi phạm các luật trên.
  • Kết luận: dùng prompt này để chẩn đoán, không dùng làm căn cứ hợp thức hóa sửa nóng trực tiếp.

3) Trọng tâm điều tra mới

Prompt rev2 bỏ bớt phần nặng về “khớp Git tuyệt đối” và dồn trọng tâm vào:

  • tình trạng ổn định thực tế của VPS,
  • log 3–7 ngày gần đây,
  • lỗi đang active / tái diễn,
  • container/service nào bất ổn,
  • lỗi cron / backup / disk / memory / nginx / ssl / database,
  • bug nào đáng fix trước để giữ VPS chạy ổn.

4) Prompt rev2 giao cho Codex

cat <<'CODEX_PROMPT' >/tmp/codex_vps_health_investigation_rev2.txt
Bạn là Codex chạy nhiệm vụ ĐIỀU TRA SỨC KHỎE VPS INCOMEX để trả lời câu hỏi thực dụng duy nhất:

"HIỆN VPS ĐANG CÓ NHỮNG BUG / LỖI / DẤU HIỆU BẤT ỔN NÀO CẦN FIX ĐỂ GIỮ HỆ THỐNG CHẠY ỔN?"

## A. BỐI CẢNH THỰC TẾ
- VPS hiện là SSOT thực chiến.
- Hệ thống đang xây nhưng hỏng, chuẩn bị làm lại dần.
- GitHub hiện là kênh backup ngược mã 2 lần/ngày.
- Google Drive đang là kênh backup data 1 lần/ngày, chuẩn bị thêm backup code 4 lần/ngày.
- Mục tiêu phiên này KHÔNG phải tái kiến trúc, KHÔNG tranh luận mô hình; mục tiêu là đọc log và nêu các vấn đề hiện tại của VPS.

## B. NGUYÊN TẮC THAO TÁC
- READ-ONLY tối đa.
- KHÔNG restart/rebuild/redeploy.
- KHÔNG sửa file config, KHÔNG xóa log, KHÔNG cài package.
- Chỉ quan sát, đọc log, đối chiếu, kết luận có bằng chứng.
- Nếu buộc phải suy đoán root cause thì phải ghi rõ mức chắc chắn.

## C. KẾT QUẢ BẮT BUỘC
Tạo 2 file:
- /tmp/vps_health_report.md
- /tmp/vps_health_evidence.txt

Cuối cùng phải in ra:
1. Top lỗi hiện tại đáng chú ý nhất
2. Lỗi nào đang active ngay lúc kiểm tra
3. Lỗi nào lặp lại trong 3-7 ngày gần đây
4. Việc gì nên fix trước để ổn định VPS

## D. CÁCH LÀM

### PHASE 1 — CHỤP NHANH HIỆN TRẠNG
Chạy và lưu evidence:

set -o pipefail
{
  echo '===== TIME ====='
  date -Is
  uptime
  echo
  echo '===== HOST ====='
  hostnamectl || true
  uname -a || true
  echo
  echo '===== CPU RAM DISK ====='
  free -h || true
  df -h || true
  lsblk || true
  echo
  echo '===== LOAD HOT PROCESSES ====='
  ps aux --sort=-%cpu | head -n 25 || true
  echo
  ps aux --sort=-%mem | head -n 25 || true
  echo
  echo '===== NETWORK / PORTS ====='
  ss -tulpn || true
  ufw status verbose || true
  echo
  echo '===== DOCKER ====='
  docker ps -a --format 'table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.RunningFor}}\t{{.Ports}}' || true
  docker stats --no-stream || true
  echo
  echo '===== CRON ====='
  crontab -l || true
} | tee /tmp/vps_health_evidence.txt

### PHASE 2 — ĐỌC LOG 7 NGÀY GẦN NHẤT
Ưu tiên journal + docker + nginx + app logs + cron logs.

{
  echo
  echo '===== JOURNAL ERRORS 7D ====='
  journalctl --since '7 days ago' -p 0..4 --no-pager || true
  echo
  echo '===== JOURNAL SERVICES 7D ====='
  journalctl --since '7 days ago' -u ssh -u nginx -u docker -u containerd -u fail2ban -u cron --no-pager || true
  echo
  echo '===== KERNEL 7D ====='
  journalctl -k --since '7 days ago' --no-pager || true
} | tee -a /tmp/vps_health_evidence.txt

{
  echo
  echo '===== /var/log key files ====='
  for f in /var/log/syslog /var/log/auth.log /var/log/kern.log /var/log/nginx/error.log /var/log/nginx/access.log; do
    if [ -f "$f" ]; then
      echo "===== $f ====="
      tail -n 500 "$f" || true
      echo
    fi
  done
} | tee -a /tmp/vps_health_evidence.txt

for c in $(docker ps -a --format '{{.Names}}'); do
  {
    echo
    echo "===== DOCKER LOGS $c (7d) ====="
    docker logs --since 168h "$c" 2>&1 || true
  } | tee -a /tmp/vps_health_evidence.txt
done

find /opt/incomex /var/log -type f \( -name '*.log' -o -name '*.out' -o -name '*.err' \) 2>/dev/null | sort | while read f; do
  {
    echo
    echo "===== TAIL LOG FILE $f ====="
    tail -n 300 "$f" || true
  } | tee -a /tmp/vps_health_evidence.txt
done

### PHASE 3 — QUÉT PATTERN LỖI
{
  echo
  echo '===== ERROR PATTERN SCAN ====='
  PAT='error|exception|fatal|panic|oom|out of memory|killed process|segfault|timeout|timed out|denied|refused|failed|failure|unhealthy|restart|crash|traceback|502|503|504|500|database|postgres|qdrant|directus|nuxt|nginx|upload|revision|backup|cron|certificate|ssl'
  journalctl --since '7 days ago' --no-pager 2>/dev/null | grep -Eai "$PAT" || true
  for f in $(find /var/log /opt/incomex 2>/dev/null -type f \( -name '*.log' -o -name '*.out' -o -name '*.err' -o -name 'syslog*' -o -name 'auth.log*' \)); do
    grep -Eai "$PAT" "$f" || true
  done
} | tee -a /tmp/vps_health_evidence.txt

### PHASE 4 — CHECK CÁC VÙNG DỄ GÂY MẤT ỔN ĐỊNH
{
  echo
  echo '===== CONTAINER HEALTH / RESTART COUNT ====='
  for c in $(docker ps -a --format '{{.Names}}'); do
    echo "--- $c ---"
    docker inspect "$c" --format 'State={{.State.Status}} Health={{if .State.Health}}{{.State.Health.Status}}{{else}}none{{end}} RestartCount={{.RestartCount}} StartedAt={{.State.StartedAt}} FinishedAt={{.State.FinishedAt}}' || true
  done
  echo
  echo '===== HTTP CHECK ====='
  curl -IksS https://vps.incomexsaigoncorp.vn || true
  curl -IksS https://directus.incomexsaigoncorp.vn/server/health || true
  curl -IksS https://ops.incomexsaigoncorp.vn/items/tasks?limit=1 || true
  echo
  echo '===== SSL CHECK ====='
  echo | openssl s_client -connect vps.incomexsaigoncorp.vn:443 -servername vps.incomexsaigoncorp.vn 2>/dev/null | openssl x509 -noout -dates -issuer -subject || true
  echo | openssl s_client -connect directus.incomexsaigoncorp.vn:443 -servername directus.incomexsaigoncorp.vn 2>/dev/null | openssl x509 -noout -dates -issuer -subject || true
  echo
  echo '===== BACKUP / CRON SIGNS ====='
  ls -lah /opt/incomex/backups || true
  find /opt/incomex/backups -maxdepth 3 -type f -mtime -7 2>/dev/null | sort || true
  journalctl --since '7 days ago' -u cron --no-pager || true
} | tee -a /tmp/vps_health_evidence.txt

### PHASE 5 — VIẾT BÁO CÁO CHỈNH LÝ
Viết file /tmp/vps_health_report.md với cấu trúc:

# VPS Health Report

## 1. Tóm tắt điều hành
- VPS nhìn chung ổn hay không
- Có bug nào đang active ngay không
- Top 10 vấn đề đáng chú ý nhất

## 2. Các vấn đề hiện tại của VPS
Lập bảng với các cột:
- ID
- Mức độ (Critical/High/Medium/Low)
- Component
- Dấu hiệu / symptom
- Bằng chứng log
- Tần suất
- Ảnh hưởng thực tế
- Root cause nghi ngờ
- Mức chắc chắn
- Đề xuất xử lý

## 3. Các nhóm lỗi
- Tài nguyên hệ thống: CPU/RAM/Disk/OOM
- Docker/container: restart/unhealthy/crash
- HTTP/Nginx/SSL
- Database / Directus / Agent Data / Qdrant / Nuxt
- Cron / backup / scripts
- SSH / security / public exposure

## 4. Những lỗi đáng fix trước để ổn định VPS
Chia:
- Fix ngay hôm nay
- Fix trong 1-3 ngày
- Theo dõi thêm

## 5. Các mục chưa chắc
Nêu rõ điều gì mới là nghi ngờ, chưa đủ chứng cứ.

## 6. Appendix
- Lệnh đã chạy
- Log files đã đọc
- Container/services đã kiểm tra

YÊU CẦU:
- Tập trung vào sức khỏe hiện tại của VPS.
- Không sa đà vào tái kiến trúc.
- Không spam log rác; phải gom nhóm.
- Tách rõ: noise / warning / confirmed issue.
- Đánh dấu rõ lỗi nào đang active ngay bây giờ.

### PHASE 6 — IN KẾT LUẬN
cat /tmp/vps_health_report.md

echo
echo '===== SUMMARY ====='
echo 'Report: /tmp/vps_health_report.md'
echo 'Evidence: /tmp/vps_health_evidence.txt'
CODEX_PROMPT

5) Kết luận

Bản rev2 này phù hợp hơn với mục tiêu user đang cần:

  • không tranh cãi mô hình vận hành,
  • dồn trọng tâm vào đọc log để tìm bug hiện tại,
  • giúp chốt danh sách vấn đề VPS đang cóthứ tự cần fix để ổn định.