Launch Atlas logoLaunch.Atlas
#46OperateDevOps · SRE

Runbook · 維運手冊

凌晨三點被 page 的人能照做不用思考

Runbook · 維運手冊 · 卡片插圖
CHOOSE YOUR MODE

先決定你現在是要學,還是要在專案裡做

網站負責解釋與分發工作包;真正的 Repository 掃描、缺口判斷與文件產出交給 Coding Agent。

SDLC 實作課 · 交付物練習

先理解這份文件替你消除什麼不確定

凌晨三點被 page 的人能照做不用思考

凌晨三點不是寫程式的好時機。Runbook 的目標是讓被 page 的人不需要理解設計也能正確處理告警,並把處理步驟轉成可自動化候選。

OWNER & HANDOFF

誰負責、交給誰

主責: DevOps / SRE,由服務 owner 維護

協作: Dev Lead 提供失敗模式、Architect 補風險路徑

下游收件: On-Call Rotation、Postmortem 改善項

WHEN TO USE

何時值得做

REQUIRED

必要時機: 每條 paging alert、每個新服務上線

SKIP

不需要時: 一次性事件、純資訊性告警

CAUTION

常見誤用: 步驟寫「請聯絡 X」;過期未更新;無回滾路徑

看懂6 段骨架知道每段要留下哪一種判斷
看會SmartTrip 案例對照真實素材如何形成結論
做出自己的草稿手動貼到 Claude Code、Codex 或其他 Agent
  1. 01讀大綱
  2. 02看案例
  3. 03填素材
  4. 04貼提示詞
  5. 05對照驗收

Anatomy · 文件解剖

輕量版先回答 6 個核心章節

章節名稱可以因團隊調整,但每一段要求的判斷不能被省略。先讀問題,再看格式。

  1. 01

    Symptom

    範本必要章節

    描述 user-visible 與 internal-signal 兩面 — 凌晨三點被 page 的人要靠這段判斷是不是真的

  2. 02

    Diagnosis Steps

    範本必要章節

    輕量版 2-4 步診斷;每步含 command + expected_output + if_anomalous 三件

  3. 03

    Remediation Steps

    範本必要章節

    每個 remediation 必填 action + command + rollback + slo_impact 四件,缺 rollback 一律不合格

  4. 04

    Escalation Criteria

    範本必要章節

    至少 1 條升級條件,含 condition + escalate_to + expected_ack

  5. 10

    Decision Log(key 1-2 條)

    範本必要章節

    每條必含 chosen + 至少 1 個 rejected + 拒絕原因

  6. 12

    Confidence & Sources & TODO

    範本必要章節

    把已確認的內容、判斷依據與仍待補充的資訊清楚分開。

Study · 對照學習

同一份交付物,先練核心,再看完整深度

輕量範本適合第一次練習與 MVP;完整範本保留跨職能交棒需要的細節。兩者都要求未知事項保持可見。

LIGHT TEMPLATE

30 分鐘內先完成核心章節。

---
doc_type: "runbook"
variant: "light"
status: "draft"
owner: "<service-owner>"
last_updated: "YYYY-MM-DD"
upstream:
  required: ["alert-rule"]
  optional: ["past-postmortem", "dashboard"]
---

# Runbook: <alert-name>

**Status:** Draft v0.X · **Owner:** <service owner> · **Last updated:** YYYY-MM-DD

> [!IMPORTANT]
> **AI 填寫規則:** 本範本 6 段(編號 1, 2, 3, 4, 10, 12),全部必填——刻意沿用完整版的章節編號讓兩版可對照。每結論行內加 `(依據:alert-rule §XXX / postmortem-NNN)`;每量化欄位 `[H]/[M]/[L]` confidence badge;缺資料寫 `_TODO: 需要 XXX_` 不編造;**每個 remediation step 必須附 rollback 指令**(不能只有「執行 X」沒有「如果 X 失敗執行 Y」);診斷指令缺則寫 TODO,不要瞎猜命令語法。

---

## 1. Symptom

<!-- ai-fill: 描述 user-visible 與 internal-signal 兩面 — 凌晨三點被 page 的人要靠這段判斷是不是真的 -->

| Aspect | Description |
|---|---|
| **User-visible** | <使用者會看到什麼:頁面 500 / 結帳失敗 / 載入慢> |
| **Internal signal** | <metric / log pattern:e.g. `http_5xx_rate > 1%` for 5m> |
| **Source** | alert-rule §XXX |
| **Confidence** | **[H]** |

---

## 2. Diagnosis Steps

<!-- ai-rule: 輕量版 2-4 步診斷;每步含 command + expected_output + if_anomalous 三件 -->

### Step D1: <description>

```bash
<exact command or query>
```

- **Expected output:** <what good looks like>
- **If anomalous:** → 跳到 D2 / Remediation R1
- **Source:** dashboard §XX

### Step D2: ...

---

## 3. Remediation Steps

<!-- ai-rule: 每個 remediation 必填 action + command + rollback + slo_impact 四件,缺 rollback 一律不合格 -->

### R1: <action description>

```bash
# Action
<exact command>

# Rollback (required)
<exact rollback command>
```

- **SLO impact:** protect / burn / neutral
- **Time estimate:** <e.g. 2-5 min>
- **Permissions:** <required role / IAM>
- **Confidence:** **[H]**

### R2: ...

---

## 4. Escalation Criteria

<!-- ai-rule: 至少 1 條升級條件,含 condition + escalate_to + expected_ack -->

| Condition | Escalate to | Expected ack |
|---|---|---|
| R1+R2 仍紅燈 > 10 min | <secondary on-call / manager> | <e.g. 5 min> |

---

## 10. Decision Log(key 1-2 條)

<!-- ai-rule: 每條必含 chosen + 至少 1 個 rejected + 拒絕原因 -->

| Date | Decision | Options | Chosen | Rejected why | Confidence |
|---|---|---|---|---|---|
| YYYY-MM-DD | Mitigation 選擇 | restart / failover / scale_out | failover | restart (丟 in-flight X%)、scale_out (lead time 太長) | **[H]** |

---

## 12. Confidence & Sources & TODO

- **整份文件最低 confidence 欄位:** <列出所有 [L] 與 [M]>
- **Last tested:** <ISO date or `_TODO: 需要排 game day_`>
- **Highest-value next input:** <下一份最該補的:最近 3 次同告警 chat log / 權限矩陣>

### TODO(缺資料)

- _TODO: 需要排一次 game day 驗證 R1 rollback 真的能回_

---

> [!CAUTION]
> **輸出前 AI 自檢:**
> - [ ] 6 段 H2 章節齊全(編號 1, 2, 3, 4, 10, 12,刻意不連號)
> - [ ] Symptom 段含 user-visible + internal-signal 雙面
> - [ ] Diagnosis 每步含 command + expected_output + if_anomalous
> - [ ] **每個 Remediation 必有 rollback 指令**(缺即不合格)
> - [ ] 每個 Remediation 標 slo_impact(protect / burn / neutral)
> - [ ] Escalation 段含 condition + escalate_to + expected_ack
> - [ ] Decision Log ≥ 1 條,每條有 rejected reason
> - [ ] 無 YAML / JSON schema 輸出(runbook 是給凌晨三點的人讀的 markdown)

Practice · 換你試做

先用自己的話交代素材,不需要先學會工程術語

確定的就寫,不確定的留白。下一步要做的是請 Agent 找缺口,不是讓它替你猜一套合理答案。

可以先留白;複製提示詞後再到 Coding Agent 裡補充。

AI Practice · 手動三步

先問、再寫、最後審,不把整條流程鎖死

每一步都是獨立工作包。你可以停下補資料、修改限制或重做某一步,不需要服從固定的 Agent 接力流程。

STEP 01

只找阻擋文件成立的未知

先補會改變範圍、判斷或驗收結果的資訊,不急著寫文件。

我要製作「Runbook · 維運手冊」。先不要產出文件。

請根據我的素材,找出會影響這份文件正確性或可執行性的未知事項,一次最多問 5 題。

每題請包含:
1. 問題
2. 為什麼現在必須知道
3. 它會影響哪個章節或決定

已經回答的事不要重問;可以延後的事標成「待決策」;不要替我猜答案。

本文件的核心章節:Symptom、Diagnosis Steps、Remediation Steps、Escalation Criteria、Decision Log(key 1-2 條)、Confidence & Sources & TODO

複製後,請在標示位置貼上自己的素材。

Review · 自己驗收

文件存在,不代表下一個角色真的能使用

逐條檢查 Agent 的輸出。人類負責需求、限制與驗收,也必須能說明重要結論從哪裡來。

CHECKED0 / 6
NEXT HANDOFF

帶著這份文件,繼續到「Incident Report · 事故報告」

下一張卡會接住新的決策問題;不用一次把整條 SDLC 全做完。

前往下一張卡