---
# System prepended metadata

title: SRE 經驗分享 - 從事故分析、精準監控到自動化維運 - 謝政廷 (Duran)
tags: ['2023']

---

# SRE 經驗分享 - 從事故分析、精準監控到自動化維運 - 謝政廷 (Duran)

###### tags: `2023`
{%hackmd @sre-conf/H1pCafrG3 %}
心得
~~驗屍經驗分享~~
~~避免被call起來尿尿指南~~


## 事故分析

### 事故三種類型-效益

#### 使用者報案
> 有可能代表監控不夠

#### 監控與警告
> 稍微成熟的產品，已經可以在user發現前就收到通知

#### 團隊預先察覺
> 成熟的監控與警告機制才有較高的機率預先察覺事故發生


### 事故階段

- 盡可能不要採用沒測試過的修復計畫與步驟
    - 在相依複雜的系統環境可能導致服務中斷時間更長
- 不要往極不可能的方向調查
    - 不要想太多，優先考慮最簡單的跡象`

### 驗屍工作：理解文化事故，找出原因，檢視是否有更加解決方案避免再次發生，「非常」耗成本


- 事故描述
- 根本原因
- 解決方案
- 正式文件
- 不責難文化
- 識別與預防

#### 何時進行事故分析

- 使用者體驗受影響 (SLO)
    - 不穩定的功能
    - 無法使用服務
    - 使用者

- 資料遺失

- 指派任務

### 事故分析階段
- 不要單獨/隨時對外回報調查進度
    - 資訊不完整，錯誤用詞，無法重現可能導致錯誤訊息傳遞，確認資訊與文件一致再公布




#### 檢討報告

日期資訊等 / 採取作為 / 時間軸 / 執行摘要 / 問題摘要 / 從中學習

* 後續追蹤，以避免下次發生相同情況
    - Ex. 一個月後要做什麼事情？三個月後要做什麼？
    - 能不能建立監控指標
    - 不能的話要做什麼防範措施


#### 後續檢討工作
1. 建立標準解決流程
2. 檢視事故回應與監控指標
3. 主動測試
4. 案例分享：將經驗分享出去


>查案中執行的Script,Query 盡可能留下來
- 事件結束後，必須回顧看事件聯繫紀錄與步驟，以確保過程沒有發生任何問題
    - 開讀書會or群組分享事件內容

### 事故分析分享


#### 建立標準解決流程

##### 文件
- 簡單易懂的用詞
- 實用：實作步驟、指令、截圖
- 共同編輯與評論（持續維護）

##### 團隊參與並持續演練
- 測試環境模擬
- 根據文件實作
- 持續確認是否符合需求






##### 檢視監控指標
- 能否完整解決問題
- 能否被監控
- 能否建立預警規則
- 能否自動修復

##### 檢視事故回應
- 事故判斷是否正確
- 能否在第一線、第二線就解決
- 能否快速且正確聯絡受影響的團隊


#### 主動測試

- 範圍擴大 - 跨團隊測試
- 邀請使用者 - 更多實務測試案例
- 累積操作流程與經驗 - 事故發生時有更多解決方案

#### 案例分享
鼓勵積極參與
- 讀書會
- SRE 工作群組或會議
    - 回報技術更新、issues...etc
    - Ex. mongodb更新，新增了什麼樣的新功能？
- 建立 V-Team

> 社群方式經營是個不錯的方式


### 不咎責文化
- 高層支持
- 鼓勵面對錯誤
- 建設性批評
- 確保流程改善

**犯錯的人不是惡意的，解決問題比較重要**

- 其實有點(ㄏㄣˇ)難
    - 完全不咎責可能導致無法正常溝通與績效難以管理
    - 團隊的人都要有一定的心理建設來面對批評
    - 團隊成員要先對錯誤有心理建設，但還是要講



## 監控指標


[Google SRE - The Four Golden Signals](https://sre.google/sre-book/monitoring-distributed-systems/#xref_monitoring_golden-signals)

- ERROR 系統錯誤內容與發生頻率
- Saturation 系統各項資源負載
- Traffic 系統容量需求
- Latency 服務請求所需時間

- 正確的監控指標必須經過長時間觀察與測試
    - 能透過監控預防事故發生或是事故後執行自動化維運是相當困難的

> 太依賴模板反而會使監控包含過多雜訊

### 目標明確的指標

- 說明指標含義（每個產品的指標不同，某指標一直都穩定可以不用列）
- 數值異常時可能的影響或事故
- 保留實用的指標




- 好的監控指標來自事故分析，很明確但通常不容易被發現
    - 多數情況不會呈現只有單一指標，建立良好除錯指標可以更快診斷問題所在

- 事故並非呈現在單一指標，很多事故無法明確監控
- 驗屍工作只有疑似原因

## 自動化維運

### 自動化維運目的與前提
SRE工作不應投資超過50%在瑣事上，建立自動化或半自動化維運相當重要，但是有以下前提：

- 維運資料標準化
- CI/CD流程標準化
- 使用一致的工具


    - 消除無效率的操作與管理
    - 減少人為錯誤發生
    - 有效降低成本
    - 減少聯繫與等待時間



### 自動化維運要點
- 減少瑣事
- 使用正確的工具
- 識別高價值流程
- 檢視團隊技能
不是每個團隊成員都有技能做自動化流程



#### 明確指標與消除誤報

- 多數情況下，事件發生時不是呈現在單一指標，建立良好除錯指標可以更快診斷問題所在

---









---

====== 聊天室 =====

程式法醫

簡報好快@@手要跟不上了
好多人在打還是好難追










