fix(reboot): probe all windows99 ssh candidates by default
Some checks failed
CD Pipeline / workflow-shape (push) Successful in 0s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Successful in 1m0s
CD Pipeline / build-and-deploy (push) Successful in 4m42s
CD Pipeline / post-deploy-checks (push) Has been cancelled

This commit is contained in:
Your Name
2026-07-03 09:58:18 +08:00
parent 8901f09787
commit 69e68cdadf
6 changed files with 67 additions and 10 deletions

View File

@@ -13,7 +13,7 @@
本段覆蓋舊的「單次重啟後人工排查」做法。所有後續狀態回報必須依此順序推進;噪音若會遮蔽 P0就掛回同一列不另開支線。
### 2026-07-03 09:22 最新 P0 覆蓋排序
### 2026-07-03 09:53 最新 P0 覆蓋排序
下表覆蓋 2026-06-30 初始事故列;舊表保留為歷史追蹤。所有新插入需求必須掛在本表,不得再分散成臨時支線。
@@ -22,7 +22,7 @@
| P0-1 | BLOCKED_HOST_WINDOWS | 全主機 reboot auto-detection / auto-trigger / 10 分鐘恢復 SLO | 2026-07-03 08:59 production scorecard`status=blocked_reboot_auto_recovery_slo_not_ready``active_blocker_count=8``readiness_percent=67``primary_blocker=reboot_event_required_host_unreachable``can_claim_all_services_recovered_within_target=false`。no-write artifact `/tmp/awoooi-reboot-continue-20260703-085205`111 socket probe 仍 timeout / unreachable99 RDP / VMConnect reachable 但 uptime unknown188 socket probe reachable前次 host probe 仍為 `systemd_state=degraded` / `startup_active=failed`。Production readback 同步顯示 `windows99_vmware_readback_present=true``windows99_vmware_config_ready=false``windows99_vmware_power_ready=false``windows99_missing_vmx_aliases=["111"]``windows99_powered_off_aliases=["111","112","120","121","188"]`。09:22 source/API contract 已把 unreliable console artifact 額外投影成 `windows99_console_clipboard_unreliable` 類 active blocker。 | 先收斂 99 / Windows99 / VMware 與 111恢復 no-secret management channel 或取得 validator 可接受的完整 console Verify stdout讀回 VMX / VM power / host uptime再 rerun host probe + reboot-event detector不得 reboot、不得 VM power change、不得讀 Windows 密碼,不得用 RDP clipboard 片段當完成證據。 |
| P0-2 | BLOCKED_EDGE_PRIVILEGED_APPLY | Deploy / reboot 期間 public 502 維護頁與外部 fallback | Gitea CD `#4519` 已推 deploy marker `3aca484 -> a94ddd5`,但 marker 後 public probe 仍讀到 `https://awoooi.wooo.work/api/v1/health` raw `502`、fallback header/body 空live 188 `/etc/nginx/sites-enabled/awoooi.wooo.work.conf` 缺 maintenance fallback`/var/www/maintenance/maintenance.html` 缺失,`ollama@188` 無 passwordless sudo。 | 先跑 `scripts/reboot-recovery/public-maintenance-edge-fallback-apply.sh --check` 留 drift receipt具備 privileged channel 後執行 `--apply`,要求 backup、`nginx -t`、reload、public route probe 全綠。不得讀密碼、不得用 app restart 掩蓋 edge fallback drift。 |
| P0-3 | PARTIAL_GREEN_SOURCE_RUNTIME | 所有產品 / 網站版本與資料最新性 | Gitea `main=89d4d6112`Production SLO readback 對齊 deploy marker `89d4d6112 chore(cd): deploy 17ba08c [skip ci]`Stock freshness `status=ok``latest_trading_date=2026-07-02`、blockers `[]`。AWOOOI health HTTP 200 但整體 `degraded`SignOz / local Ollama 仍需列為 runtime degraded evidence。 | 將 source SHA / deploy marker / runtime endpoint / public route watch 固定進 scorecard完成條件是每個 public product 都有 source、deploy、runtime、freshness 四層 readback且 degraded components 有 owner lane。 |
| P0-4 | BLOCKED_WINDOWS99_AUTOSTART | 192.168.0.99 VMware 自動啟動與 VM guest 111 / 188 / 120 / 121 / 112 | 08:51 no-secret management probe99 reachable、TCP `22 / 135 / 2179 / 3389 / 445=open`、RDP console / Hyper-V VMConnect reachableWinRM `5985 / 5986=timeout``administrator` SSH BatchMode `permission_denied``can_collect_vmware_verify_without_secret=false`。collector check`ssh_batchmode_auth_ready=0``verify_collection_status=blocked_ssh_publickey_auth_missing``remote_verify_attempted=0`08:59 production scorecard 有 Windows99 runtime readback但回 `missing_vmx_aliases=["111"]`、guest power not readyRDP console UI/clipboard 測試顯示 clipboard 會貼入 Windows 端舊內容,不能當可靠自動收集通道。09:22 已補 `console_artifact_status/reliable/blockers/safe_next_step` 與 API regression避免下次再把可見畫面誤判成可用 artifact。 | 只用可靠 no-secret console / management collector 取得 `windows99-vmware-autostart.ps1 -Mode Verify` stdout先以 `validate-windows99-console-verify-artifact.py` 轉成 normalized artifact再重跑 SLO scorecard完成條件是 VMX config ready、guest power ready、99 uptime known、all required host reachable。 |
| P0-4 | BLOCKED_WINDOWS99_AUTOSTART | 192.168.0.99 VMware 自動啟動與 VM guest 111 / 188 / 120 / 121 / 112 | 09:53 no-secret management probe99 reachable、TCP `22 / 135 / 2179 / 3389 / 445=open`、RDP console / Hyper-V VMConnect reachableWinRM `5985 / 5986=timeout``administrator` SSH BatchMode `permission_denied``can_collect_vmware_verify_without_secret=false``console_artifact_status=blocked_clipboard_unreliable`。collector 全候選 check 已改成預設 probe 5 個 candidate實機 readback 仍為 `ssh_auth_probe_user_limit=5``ssh_auth_probed_users=5``ssh_batchmode_auth_ready=0``verify_collection_status=blocked_ssh_publickey_auth_missing``remote_verify_attempted=0`Production scorecard 有 Windows99 runtime readback但回 `missing_vmx_aliases=["111"]`、guest power not readyRDP console UI/clipboard 測試顯示 clipboard 會貼入 Windows 端舊內容,不能當可靠自動收集通道。 | 只用可靠 no-secret console / management collector 取得 `windows99-vmware-autostart.ps1 -Mode Verify` stdout先以 `validate-windows99-console-verify-artifact.py` 轉成 normalized artifact再重跑 SLO scorecard完成條件是 VMX config ready、guest power ready、99 uptime known、all required host reachable。 |
| P0-5 | RUNTIME_READY_BACKUP_RECEIPT_GAP | Gitea / 主機 / DB / 網站 / 服務 / 套件 / 工具 / log 備份監控告警 | Gitea repo bundle readback readyexpected `12`、rows `12`、missing `0`、failed `0`、sample restore dry-run okbackup core green。2026-07-03 source / runtime 已部署 `awoooi_backup_alert_receipt_*` 指標與 Prometheus rules110 exporter 讀回 88 個 stage requirement、188 讀回 12 個 stage requirement`BackupAlertReceiptMetricMissing*` inactive`BackupAlertReceiptStageMissing` 已修成每 `host / receipt_channel` 聚合 pending110 一條、188 一條。 | 補 `/backup/alert-receipts/*.last_success` 脫敏 marker下一層仍要補 Gitea full dump、DB/settings/issues/packages/LFS、所有工具與 log 全量備份監控。 |
| P0-6 | RUNTIME_READY_ALERT_RECEIPT_GAP | 主機關機 / 重啟 / SLO miss / backup failure Telegram 告警 | Reboot per-blocker alert 與 backup receipt alert rules 已 deploy/readbackbackup receipt 缺段不再產生 100 條 stage 噪音,現在聚合成 110 / 188 兩條 host-level pending。scorecard 仍有 8 個 reboot active blockers尚未完成 shutdown / reboot / backup alert 的 production 脫敏 delivery receipt 全矩陣。 | 補 alert receipt readbackhost down、host up、SLO miss、Windows99 blocker、backup stale/failed、deploy 502、freshness stale完成條件是每類告警都有 sent / received / dedup / escalation evidence。 |
| P0-7 | SOURCE_READY_SLA_AUTOMATION | 固定排查順序、ETA / wait reason、自動化判斷與修復 | Scorecard 已固定 `current_phase=host_boot_detection_blocked``eta_or_wait_reason=reboot_event_readback_missing_eta_unavailable``primary_blocker=reboot_event_required_host_unreachable`、fixed triage order 與 next safe action08:23 artifact 固定下一步為 no-secret Windows99 verify / host probe rerun。09:22 `active_blocker_action_matrix` 已能把 unreliable console artifact 指向 `windows99_console_or_no_secret_management_channel` 與固定 next safe action。10 分鐘內自動恢復仍未達標。 | 把每個 blocker 的 next_safe_action、post_verifier、forbidden_actions 接到自動 work item / Telegram / scorecard完成條件是重啟後自動判斷、主動告警、主動 rerun verifier不再人工臨場猜流程。 |

View File

@@ -59,7 +59,7 @@
| --- | --- | --- | --- | --- | --- | --- |
| 1 | CIR-P0-RBT-001 | P0 | 「主機重啟後 10 分鐘內全部恢復,且要自動判斷所有主機被重啟」 | 建立 99/110/111/112/120/121/188 reboot event detector + 10 分鐘 SLO scorecard + fixed triage order | 2026-07-03 08:59 production scorecardreadiness `67%`、active blockers `8``can_claim_all_services_recovered_within_target=false`artifact `/tmp/awoooi-reboot-continue-20260703-085205`111 不可達、99 uptime unknown、188 startup failed/degraded09:22 已把 unreliable console artifact 投影成 machine-readable blocker | 優先收斂 99 local console Verify output / no-secret management channel 與 111 reachability不可宣稱 10 分鐘 SLA 已證明,不得用 RDP clipboard 片段當完成證據 |
| 2 | CIR-P0-RBT-002 | P0 | 「沒有偵測到主機重啟」 | 修正 host reboot/shutdown/up detectionboot_id / uptime / node exporter / Windows exporter / VMware VM power state 都要進同一事件 | Scorecard 已接 collection packet + management probe08:23 host probe 有 7 列但 99 只有 ping/RDP reachable、uptime unknown111 unreachable112/120/121/188 uptime 都已超過 10 分鐘窗口 | 讓 99 verifier / Windows exporter 或等效 no-secret readback 進入 host boot event並補 111 reachability 證據 |
| 3 | CIR-P0-RBT-003 | P0 | 「192.168.0.99 VMWare 要自動啟動,裡面 111/188/120/121/112 也自動啟動」 | Windows 99 VMware host autostart + guest VM autostart contractVM host 111/188/120/121/112 開機順序與 readback | Source verifier / parser / API readback / collection packet 已完成08:59 management probe 讀回 99 host reachable、RDP / Hyper-V VMConnect reachable但 SSH BatchMode `permission_denied`、WinRM timeoutcollector `verify_collection_status=blocked_ssh_publickey_auth_missing``remote_verify_attempted=0`09:22 已新增 `console_artifact_status/reliable/blockers/safe_next_step` | 收集 validator 可接受的完整 local console Verify output 或恢復 no-secret management channel再確認 `VMRUN_PRESENT`、scheduled task、VMware services、VM power、VMX present 全綠 |
| 3 | CIR-P0-RBT-003 | P0 | 「192.168.0.99 VMWare 要自動啟動,裡面 111/188/120/121/112 也自動啟動」 | Windows 99 VMware host autostart + guest VM autostart contractVM host 111/188/120/121/112 開機順序與 readback | Source verifier / parser / API readback / collection packet 已完成09:53 management probe 讀回 99 host reachable、RDP / Hyper-V VMConnect reachable但 SSH BatchMode `permission_denied`、WinRM timeout`console_artifact_status=blocked_clipboard_unreliable`collector 已改成預設 probe 全 5 個 candidate實機仍為 `ssh_batchmode_auth_ready=0``verify_collection_status=blocked_ssh_publickey_auth_missing``remote_verify_attempted=0` | 收集 validator 可接受的完整 local console Verify output 或恢復 no-secret management channel再確認 `VMRUN_PRESENT`、scheduled task、VMware services、VM power、VMX present 全綠 |
| 4 | CIR-P0-RBT-004 | P0 | 「192.168.0.99 不可因 Windows Update 無預警重開」 | Windows Update reboot policyactive hours / no auto-restart / maintenance window / update notification audit | Source verifier 已補 `WINDOWS_UPDATE_POLICY``WINDOWS_UPDATE_NO_AUTO_REBOOT_READY`collection packet 已列 forbidden actions99 management channel 尚不能收 policy readback | 取得 Verify output若 policy 不綠,再走 controlled apply禁止要求或記錄 Windows 密碼 |
| 5 | CIR-P0-RBT-005 | P0 | 「網站重啟後 502 嚴重影響體驗,要維護頁,外部雲端或專業做法」 | Public maintenance fallbackNginx / edge / external static maintenance page / status page / fail-open UX避免 502 直出 | Source + runtime verifier 已實作Gitea CD `#4459` Success、deploy marker `8d7a6faaf`production API scorecard 已讀回 `public_maintenance_fallback.ready=true`、raw 5xx=`0`、unreachable without L1=`0`P0 blockers `11`、readiness `47`;仍不可宣稱整體 10 分鐘 SLO 完成 | 若未來 public route 出現 raw 5xx先走 L0 Nginx intercept / header verifier若 edge unreachable才產生 L1 external static origin / CDN decision record + rollback |
| 6 | CIR-P0-RBT-006 | P0 | 「所有主機關機立刻 Telegram 告警,重啟後也要告警,其他告警一併完整思考」 | Down / shutdown suspected / reboot detected / reboot recovered / SLO missed / backup failed / freshness stale / CPU pressure / Gitea queue 告警矩陣 | HostDown / HostRebootEventDetected / RebootAutoRecoverySLOMissed 已存在per-blocker reboot alerts 與 backup receipt rules 已 deploy/readback。Backup receipt 缺段已從 100 條 stage 噪音收斂為 110 / 188 兩條 host-level pending仍需完整 shutdown/up E2E receipt | 補 Prometheus / Alertmanager active/resolved 與 outbound receiptbackup alert 先補 `/backup/alert-receipts/*.last_success` 脫敏 marker不送測試 secret、不重啟主機 |