Apache SkyWalking 實戰
內容描述
這是一本從功能使用、項目設計、核心模塊、工作原理、擴展實踐5個維度全面講解SkyWalking的著作。由SkyWalking的創始人和核心開發團隊撰寫,得到了來自華為、百度、螞蟻金服、京東數科、Tetrate.io的5位資深技術專家的聯袂推薦。
本書共14章,在邏輯上分為4個部分:
第一部分 SkyWalking入門(第1~3章)
詳細介紹了SkyWalking的必備常識、架構設計、安裝與配置,以及它在單體應用架構和微服務架構中的實戰操作,能幫助讀者快速上手。
第二部分 SkyWalking理論(第4~5章)
作為監控軟件,SkyWalking需要考慮如何使自身對應用的影響最小化,以及如何實現分佈式追蹤和監控,這兩章對此做了詳細的技術分析。內存無堵塞隊列是減小系統負載的關鍵,而集中分佈式追蹤模型是SkyWalking監控分析的靈魂。
第三部分 SkyWalking原理(第6~12章)
SkyWalking後端的OAP平臺具有極強的模塊化和擴展能力,本部分深入講解了總體的模塊化設計,以及OAL分析、集群和存儲這三個最核心的模塊。此外,本部分還介紹了探針插件開發和MQ通信模式擴展這兩個熱門主題。
第四部分 SkyWalking趨勢(第13~14章)
SkyWalking雖然是以分佈式探針為基礎的分佈式追蹤工具,但深耕於整個APM領域。本部分從Service Mesh和基於語言探針性能剖析這兩大方向,展現了SkyWalking在雲原生領域更大的集成能力和運用範圍。
目錄大綱
前 言
第1章 全面認識Apache SkyWalking 1
1.1 SkyWalking介紹 1
1.1.1 什麽是SkyWalking 1
1.1.2 SkyWalking的發展歷程 2
1.1.3 SkyWalking的適用場景 3
1.1.4 SkyWalking的社區與生態 5
1.2 SkyWalking的架構設計 6
1.2.1 面向協議設計 7
1.2.2 模塊化設計 8
1.2.3 輕量化設計 9
1.3 SkyWalking的優勢 9
1.3.1 傳統分佈式架構與雲原生的一致性支持 10
1.3.2 易於維護 10
1.3.3 高性能 11
1.3.4 利於二次開發和集成 11
1.4 SkyWalking開發必備知識介紹 11
1.4.1 JavaAgent介紹 12
1.4.2 遠程調試介紹 18
1.4.3 Service Mesh介紹 19
1.5 本章小結 21
第2章 SkyWalking安裝與配置 22
2.1 項目編譯與工程結構 22
2.1.1 項目編譯 22
2.1.2 工程結構 24
2.2 JavaAgent安裝 27
2.2.1 安裝方法 27
2.2.2 配置參數 29
2.2.3 插件介紹 30
2.2.4 高級特性 36
2.3 後端與UI部署 43
2.3.1 SkyWalking部署介紹 43
2.3.2 快速啟動 45
2.3.3 application.yaml詳解 46
2.3.4 參數復寫 51
2.3.5 IP和埠設置 51
2.3.6 集群管理配置 52
2.3.7 Kubernetes部署 56
2.3.8 後端存儲 58
2.3.9 設置服務端採樣率 62
2.3.10 告警設置 63
2.3.11 Exporter設置 66
2.3.12 UI部署詳解 66
2.4 UI介紹 67
2.4.1 Dashboard介紹 67
2.4.2 拓撲介紹 69
2.4.3 Trace視圖 70
2.5 本章小結 71
第3章 Apache SkyWalking實戰 72
3.1 SkyWalking與單體應用架構 72
3.1.1 什麽是單體應用架構 72
3.1.2 單體應用架構的優缺點 74
3.1.3 SkyWalking對單體應用架構的適用性 74
3.2 SkyWalking與微服務架構 75
3.2.1 遠程過程調用 77
3.2.2 外部服務 78
3.3 實戰環境搭建 79
3.3.1 SkyWalking後台搭建 79
3.3.2 實戰集群搭建 80
3.4 實戰操作 82
3.4.1 觀察微服務中的各個維度 82
3.4.2 觀察指標 83
3.4.3 觀察系統架構 85
3.4.4 提取關鍵路徑 90
3.4.5 查找失敗服務或請求 93
3.4.6 查找慢服務或請求 96
3.4.7 處理告警 101
3.5 本章小結 105
第4章 輕量級隊列內核 106
4.1 什麽是輕量級隊列內核 106
4.1.1 Buffer 106
4.1.2 Channel 107
4.1.3 DataCarrier 108
4.2 生產者—消費者如何協同 108
4.2.1 生產消息 108
4.2.2 消費消息 111
4.3 本章小結 115
第5章 SkyWalking追蹤模型 116
5.1 追蹤模型入門 116
5.1.1 Dapper與追蹤模型 116
5.1.2 典型的追蹤模型 119
5.2 SkyWalking追蹤模型與協議 120
5.2.1 SkyWalking追蹤模型 120
5.2.2 SkyWalking數據傳輸協議 122
5.3 SkyWalking探針上下文傳播協議 124
5.3.1 傳播模型 124
5.3.2 傳播上下文 124
5.4 SkyWalking v3協議 125
5.5 本章小結 126
第6章 SkyWalking OAP Server模塊化架構 127
6.1 模塊化框架 127
6.1.1 模塊和模塊實現 127
6.1.2 模塊管理配置文件 129
6.2 模塊啟動與模塊依賴 130
6.3 模塊可替換性 131
6.4 模塊實現選擇器 132
6.5 新增模塊 132
6.6 本章小結 133
第7章 Observability Analysis Language體系 134
7.1 什麽是OAL 134
7.2 OAL實現原理 135
7.3 OAL語法 137
7.3.1 指標計算定義語法 137
7.3.2 disable語法 142
7.4 本章小結 143
第8章 SkyWalking OAP Server集群通信模型 144
8.1 計算流 145
8.2 通信協議 146
8.3 集群協調器 148
8.4 本章小結 149
第9章 SkyWalking OAP Server存儲模型 150
9.1 模型結構介紹 150
9.1.1 註冊模型結構 150
9.1.2 明細模型結構 152
9.1.3 指標模型結構 153
9.1.4 採樣模型結構 154
9.2 存儲模型間的聯系 154
9.3 存儲模型與OAL的關系 156
9.4 本章小結 159
第10章 Java探針插件開發 160
10.1 基礎概念 160
10.1.1 Span 160
10.1.2 Trace Segment 161
10.1.3 ContextCarrier 162
10.1.4 ContextSnapshot 162
10.2 核心對象相關API的使用 162
10.3 探針插件工程結構 168
10.3.1 工程結構簡介 168
10.3.2 定義攔截形式 169
10.3.3 實現攔截形式的攔截器 171
10.4 探針插件開發實戰 171
10.4.1 設計探針插件 172
10.4.2 Apache Dubbo探針插件 173
10.4.3 Spring @Async探針插件 177
10.5 本章小結 182
第11章 探針和後端消息通信模式開發 183
11.1 為什麽官方默認不提供多種方式 183
11.2 通信機制分析 184
11.2.1 探針與後端的註冊通信 184
11.2.2 探針與後端的數據上報通信 193
11.3 如何擴展通信模式 197
11.3.1 使用HTTP擴展註冊通信 198
11.3.2 使用Kafka擴展數據上報通信 205
11.4 本章小結 214
第12章 SkyWalking OAP Server監控與指標 215
12.1 針對Trace場景的監控指標 216
12.2 針對Service Mesh場景的監控指標 219
12.3 自監控 220
12.4 本章小結 221
第13章 下一代監控體系——SkyWalking觀測Service Mesh 222
13.1 SkyWalking可觀測性模型 223
13.1.1 監控指標 223
13.1.2 告警與可視化 224
13.1.3 分佈式追蹤和日誌 225
13.2 觀測Istio的監控指標 226
13.2.1 Mixer模式集成 226
13.2.2 ALS模式集成 227
13.3 觀測Istio的技術發展 229
13.4 本章小結 229
第14章 SkyWalking未來初探 230
14.1 SkyWalking 7新特性 230
14.1.1 Java探針不再支持JDK 1.6和1.7 230
14.1.2 支持新的生產級存儲實現 231
14.1.3 HTTP請求參數採集 231
14.1.4 HTTP收集協議和Nginx監控 232
14.1.5 Elasticsearch存儲的進一步優化 232
14.2 代碼性能剖析 232
14.2.1 性能剖析基本原理 232
14.2.2 性能剖析的功能特點 233
14.2.3 使用場景 233
14.3 SkyWalking 8 Roadmap 234
14.4 本章小結 234
作者介紹
吴 晟
Tetrate.io创始工程师、前华为云技术专家,专注于云原生、分布式系统监控和Service Mesh领域的技术发展。Apache基金会会员,Apache SkyWalking创始人、项目VP和PMC成员,Apache孵化器PMC成员,Apache ShardingSphere PMC成员,Apache APISIX PMC成员,Apache ECharts (incubating)和Apache DolphinScheduler (incubating)孵化器导师,Zipkin