Table of Contents ====================== ###### tags: `Observability-Engineering` 前言 序言 ------ Part I. 通往可觀測性之路 1. 什麼是可觀測性? - 可觀測性的數學定義 - 將可觀測性應用於軟體系統 - 關於軟體可觀測性的錯誤認知 - 為什麼現在可觀測性很重要 - 這真的是最好的方式嗎? - 為什麼指標和監控不夠用? - 以指標和可觀測性進行除錯的區別 - 基數的作用 - 維度的作用 - 利用可觀測性進行除錯 - 現代化系統的可觀測性 - 結論 2. 可觀測性與監控之間的除錯實踐有何不同? - 監控資料如何用在除錯 - 使用儀表板來進行故障排除 - 用直覺來排除故障的侷限性 - 傳統監控基本上是被動的 - 可觀測性如何協助更好的除錯 - 結論 3. 從沒有可觀測性下的進行擴展中學到的教訓 - 介紹Parse服務 - 在Parse上的系統擴展 - 向現代化系統的演進 - 向現代化實踐的演進 - 在Parse上的實踐轉變 - 結論 4. 可觀測性與 DevOps、SRE 和 Cloud Native 的關聯 - Cloud Native、DevOps 和 SRE 簡介 - 可觀測性:從以前到現在的除錯方式 - 可觀測性增強DevOps和SRE實踐 - 結論 ------ Part II. 可觀測性的基本原理 5. 結構化事件是可觀測性的基礎 - 使用結構化事件進行除錯 - 以指標為基礎的侷限性 - 以傳統日誌為基礎的限制 - 非結構化日誌 - 結構化日誌 - 在除錯中有用的事件特性 - 結論 6. 將事件串連成追蹤 - 分散式追蹤及其現在的重要性 - 追蹤的組成部分 - 以艱苦方式進行測量追蹤 - 在追蹤跨度中添加自定義資訊 - 將事件串連成追蹤 - 結論 7. 使用OpenTelemetry進行儀表測量 - 測量的簡介 - 開放式測量標準 - 使用程式碼範例進行測量 - 從自動化儀表測量工具開始 - 添加自定義測量 - 將測量資料發送到後端系統 - 結論 8. 分析事件以實現可觀測性 - 從已知條件進行排錯 - 從基本原理進行排錯 - 使用核心分析循環 - 自動化核心分析循環中的暴力部分 - AIOps的的誤導性承諾 - 結論 9. 可觀測性與監控如何結合? - 什麼情境適合監控 - 什麼情境適合可觀測性 - 系統與軟體的考量 - 評估你的組織需求 - 例外情況:無法忽略的基礎設施監控 - 實際案例 - 結論 ----- Part III. 團隊的可觀測性 10. 在您的團隊中應用可觀測性實踐 - 加入社群 - 從最大的痛點開始 - 購買而不是建立 - 逐步擴展您的測量 - 尋找利用現有努力的機會 - 為最艱難的最後一次推動做準備 - 結論 11. 可觀測性驅動開發 - 以測試驅動開發為例 - 可觀測性在開發週期中 - 確定何處有問題 - 微服務時代下的除錯方法 - 測量如何驅動可觀測性 - 向左轉移可觀測性 - 利用可觀測性加快軟體交付速度 - 結論 12. 使用服務水準目標來提高可靠性 - 傳統的監控方法會導致危險的警報疲勞 - 閾值警報僅適用於已知的未知情況 - 用戶體驗是重要的引導指標 - 什麼是服務水準目標? - 使用SLO提供可靠的警報 - 改變文化以實現基於SLO的警報:案例研究 - 結論 13. 基於 SLO 的警報行動和除錯 - 在您的錯誤預算用盡之前發出警報 - 將時間定為滑動窗口 - 使用預測警報進行預測 - 預測窗口 - 基準窗口 - 對 SLO 燃燒警報採取行動 - 使用可觀測資料與時間序列資料來定義SLO的差異 14. 可觀測性和軟體供應鏈 - 為什麼Slack需要可觀測性 - 測量:共享客戶端套件和維度 - 案例研究:實現供應鏈 - 通過工具理解前後關係 - 將可行的警報嵌入 - 理解發生了什麼變化 - 結論 ----- Part IV. 規模化的可觀測能力 15. 購買和自己構建之間的抉擇以及投資報酬率 - 如何分析觀測性的投資報酬率? - 自己構建的真實成本 - 使用“免費”軟體的隱藏成本 - 自己構建的好處 - 自己構建的風險 - 購買商業軟體的真實成本 - 商業軟體的隱藏財務成本 - 商業軟體的隱藏非財務成本 - 購買商業軟體的好處 - 購買商業軟體的風險 - 購買與建立並非只能擇一 - 結論 16. 高效資料存儲 - 實現可觀測性的功能要求 - 時序資料庫不足以滿足可觀測性 - 其他可能的資料存儲方案 - 資料存儲策略 - 案例研究:實現Honeycomb的實施 - 按時間進行資料分區 - 在段中按列進行資料存儲 - 執行查詢工作量 - 查詢追蹤資料 - 即時查詢資料 - 分層儲存以達到經濟實惠 - 通過平行處理使其更快 - 處理高基數 - 擴展和可持續性策略 - 建立自己的高效資料存儲的注意事項 - 結論 17. 抽樣: 讓觀測性存儲夠便宜而且很精準 - 抽樣以精煉資料收集 - 使用不同的取樣方法 - 恆定機率抽樣 - 基於最近的傳輸量進行抽樣 - 基於事件內容(關鍵字)的取樣 - 結合每個關鍵字和歷史方法 - 選擇動態抽樣選項 - 何時對跟踪進行抽樣決定 - 將抽樣策略轉化為程式碼 - 基礎案例 - 固定速率抽樣 - 記錄抽樣率 - 一致抽樣 - 目標速率抽樣 - 擁有多個靜態抽樣率 - 按關鍵字和目標率進行抽樣 - 使用任意多個關鍵字的動態速率抽樣 - 組合起來:按鍵目標速率的頭部和尾部抽樣 - 結論 18. 運用流程流水線進行遙測管理 - 使用流水線管理遙測的特性 - 路由 - 安全性和合規性 - 工作負載隔離 - 資料緩衝 - 容量管理 - 資料篩選和擴充 - 資料轉換 - 確保資料品質和一致性 - 管理遙測流水線:解剖 - 管理遙測流水線時的挑戰 - 效能 - 正確性 - 可用性 - 可靠性 - 隔離 - 資料新鮮度 - 使用案例:Slack 的遙測管理 - 指標彙總 - 日誌和追蹤事件 - 開源替代方案 - 管理遙測管道:自行構建或買入 - 結論 ----- Part V. 推廣可觀測性文化 19. 可觀測性的商業案例 - 引入變革的響應式方法 - 可觀測性的投資回報 - 以主動方法引入變革 - 將可觀測性作為實踐引入 - 使用合適的工具 - 測離 - 資料存儲和分析 - 向團隊推廣工具 - 了解何時擁有足夠的可觀測性 - 結論 20. 可觀測性的利益相關者和盟友 - 認識非工程的可觀測需求 - 在實踐中創造可觀測性盟友 - 客戶服務團隊 - 客戶成功及產品團隊 - 銷售及執行團隊 - 使用可觀測性工具與商業智能工具 - 查詢執行時間 - 準確度 - 新鮮度 - 結構 - 時間窗口 - 短暫性 - 如何將可觀測性和BI工具一起使用 - 結論 21. 關於可觀測性的成熟度模型 - 關於成熟度模型的說明 - 為什麼可觀測性需要一個成熟度模型 - 關於可觀測性成熟度模型(OMM) - 在OMM中有引用的能力 - 彈性地應對系統故障 - 交付高質量的代碼 - 管理複雜性和技術債務 - 按可預測的節奏進行發布 - 了解用戶行為 - 如何在組織中使用OMM - 結論 22. 接下來去哪裡? - 過去與現在的可觀測性 - 附加資源 - 對可觀測性的發展趨勢預測 索引