ELKstack 權威指南 ELKstack权威指南

饒琛琳

  • 出版商: 機械工業
  • 出版日期: 2015-10-01
  • 定價: $474
  • 售價: 8.5$403
  • 語言: 簡體中文
  • 頁數: 391
  • 裝訂: 平裝
  • ISBN: 7111516346
  • ISBN-13: 9787111516347
  • 相關分類: 全文搜尋引擎 Full-text-search
  • 無法訂購

買這商品的人也買了...

商品描述

內容簡介

Elasticsearch、Logstash、Kibana這三個開源軟件組成了當今最流行的實時數據分析利器,為快速應對大數據時代的數據收集、檢索、可視化,提供了一站式解決方案,成為實時日誌處理領域開源界的第一選擇。本書對ELK stack的工作原理概念進行瞭解剖,不僅分享了大量實戰案例和實現效果,而且分析了部分源代碼。作者將自己多年的運維開發實戰經驗融入了書中,使得本書易讀、易懂,將複雜的環境分解得清清楚楚,展示了多種工具的組合使用,為打造複雜環境的數據分析系統提供了有價值的參考。
Logstash單進程安裝運行方式以及各種常見插件的用法,列舉了一些最常見的日誌,實際演示如何搭配多種插件完成數據裁剪和計算。
Logstash性能測試和監控方案,如何通過Redis或Kafka隊列線性擴展Logstash集群。
Logstash的Pipe ,演示Logstash插件的接口方法和打包分發方式。
Elasticsearch分佈式索引原理,著重介紹segment、buffer和translog三部分對實時性和性能方面的影響。
Elasticsearch的數據讀寫接口、集群狀態、緩存和fielddata等概念,具有針對性的優化方案。
Elasticsearch的配置管理、版本升級、性能測試、監控報警等運維方案。
ELasticsearch周邊產品的運用,包括接入其他日誌處理框架、Watcher報警、packetbeat網絡分析、Kale異常探測等。
Kibana 3和Kibana 4不同的設計思路和功能特性比較。通過實際日誌場景演示使用子聚合功能構建複雜數據模型的可視化。
Kibana在生產環境中的代理和權限控制部署方式。
Kibana的源代碼實現,以及range panel和percentile panel的開發實例。

目錄

前 言
第一部分 Logstash
第1章 入門示例 3
1.1 下載安裝 3
1.2 Hello World 5
1.3 配置語法 7
1.3.1 語法 8
1.3.2 命令行參數 10
1.4 插件安裝 11
1.5 長期運行方式 12
第2章 插件配置 15
2.1 輸入插件 15
2.1.1 標準輸入 16
2.1.2 文件輸入 17
2.1.3 TCP輸入 18
2.1.4 syslog輸入 19
2.1.5 collectd輸入 21
2.2 編解碼配置 23
2.2.1 JSON編解碼 24
2.2.2 多行事件編碼 25
2.2.3 網絡流編碼 26
2.3 過濾器配置 28
2.3.1 date時間處理 28
2.3.2 grok正則捕獲 30
2.3.3 GeoIP地址查詢 33
2.3.4 JSON編解碼 34
2.3.5 key-value切分 35
2.3.6 metrics數值統計 36
2.3.7 mutate數據修改 37
2.3.8 隨心所欲的Ruby處理 42
2.3.9 split拆分事件 43
2.3.10 elapsed 43
2.4 輸出插件 44
2.4.1 輸出到Elasticsearch 44
2.4.2 發送 49
2.4.3 調用系統命令執行 50
2.4.4 保存成文件 50
2.4.5 報警發送到Nagios 51
2.4.6 statsd 52
2.4.7 標準輸出stdout 54
2.4.8 TCP發送數據 55
2.4.9 輸出到HDFS 55
第3章 場景示例 57
3.1 Nginx訪問日誌 57
3.1.1 grok處理方式 57
3.1.2 split處理方式 58
3.1.3 json格式 61
3.1.4 syslog方式發送 62
3.2 Nginx錯誤日誌 62
3.3 Postfix日誌 63
3.4 Ossec日誌 64
3.4.1 配置所有Ossec agent採用
syslog輸出 64
3.4.2 配置Logstash 65
3.4.3 推薦Kibana儀表盤 65
3.5 Windows系統日誌 67
3.5.1 採集端配置 67
3.5.2 接收解析端配置 68
3.6 Java日誌 69
3.6.1 Log4J配置 70
3.6.2 Logstash配置 70
3.6.3 異常堆棧測試驗證 70
3.6.4 JSON Event layout 71
3.7 MySQL慢查詢日誌 73
3.8 Docker日誌 74
3.8.1 記錄到主機磁盤 75
3.8.2 通過logspout收集 75
第4章 性能與監控 77
4.1 性能測試 77
4.1.1 配置示例 77
4.1.2 使用方式 78
4.1.3 額外的話 79
4.2 監控方案 79
4.2.1 logstash-input-heartbeat心跳檢測方式 80
4.2.2 JMX啟動參數方式 81
第5章 擴展方案 83
5.1 通過Redis隊列擴展 84
5.1.1 讀取Redis數據 84
5.1.2 採用list類型擴展Logstash 85
5.1.3 輸出到Redis 86
5.2 通過Kafka隊列擴展 87
5.2.1 Logstash1.4版本插件的安裝 88
5.2.2 Input配置 88
5.2.3 Output配置 90
5.3 logstash-forwarder 91
5.3.1 Indexer端配置 91
5.3.2 Shipper端配置 92
5.3.3 AIX上的logstash-forwarder-java 93
5.4 Rsyslog 95
5.4.1 常用模塊介紹 95
5.4.2 與Logstash合作 96
5.4.3 Mmexternal模塊 97
5.5 Nxlog 99
5.6 Heka 101
5.7 Fluentd 102
5.7.1 配置示例 103
5.7.2 Fluentd插件 104
5.8 Message::Passing 104
第6章 Logstash源碼解析 107
6.1 Pipe 
6.2 Plugins 109
6.2.1 Input中的Codec 110
6.2.2 Output中的Worker 111
第7章 插件開發 113
7.1 插件格式 113
7.2 插件的關鍵方法 114
7.3 插件打包 115
7.4 Filter插件開發示例 116
7.4.1 mmdb數據庫的生成方法 116
7.4.2 LogStash::Filters::Mmdb實現 117
7.4.3 logstash-filter-mmdb打包 119
7.5 Input插件開發示例 119
7.5.1 FileWatch模塊原理 120
7.5.2 LogStash::Inputs::Utmp實現 121
7.6 Output插件開發示例 124
第二部分 Elasticsearch
第8章 架構原理 129
8.1 準實時索引的實現 129
8.1.1 動態更新的Lucene索引 129
8.1.2 利用磁盤緩存實現的準實時檢索 130
8.1.3 translog提供的磁盤同步控制 131
8.2 segment merge的影響 132
8.2.1 歸並線程配置 133
8.2.2 歸並策略 134
8.2.3 optimize接口 134
8.3 routing和replica的讀寫過程 134
8.3.1 路由計算 134
8.3.2 副本一致性 135
8.4 shard的allocate控制 136
8.4.1 reroute接口 138
8.4.2 冷熱數據的讀寫分離 138
8.5 自動發現的配置 139
8.5.1 multicast方式 140
8.5.2 unicast方式 140
第9章 數據接口用例 141
9.1 增刪改查操作 141
9.2 搜索請求 143
9.2.1 全文搜索 143
9.2.2 聚合請求 145
9.3 腳本 147
9.3.1 動態提交 147
9.3.2 固定文件 147
9.3.3 其他語言 148
9.4 重建索引 148
9.4.1 Perl客戶端 149
9.4.2 用Logstash重建索引 149
9.5 Spark Streaming交互 150
第10章 性能優化 153
10.1 bulk提交 153
10.1.1 bulk大小 154
10.1.2 UDP方式 154
10.2 gateway配置 155
10.3 集群狀態維護 156
10.4 緩存 160
10.4.1 filter緩存 160
10.4.2 shard query緩存 161
10.5 字段數據 162
10.5.1 Circuit Breaker 162
10.5.2 doc-values 163
10.6 curator工具 163
10.6.1 參數介紹 163
10.6.2 常用示例 165
第11章 測試和擴展方案 167
11.1 測試方案 167
11.2 多集群互聯 168
11.3 puppet-elasticsearch模塊的使用 171
11.3.1 安裝和配置示例 171
11.3.2 配置解釋 171
11.4 計劃內停機升級的操作流程 172
11.5 Shield權限管理 174
11.5.1 Shield架構 174
11.5.2 安裝部署 175
11.6 別名的應用 176
11.6.1 索引更名時的無縫切換 177
11.6.2 限制索引數據部分可讀 178
第12章 映射與模板的定製 181
12.1 映射的增刪改查 181
12.2 Elasticsearch的核心類型 183
12.3 自定義字段映射 184
12.3.1 精確索引 184
12.3.2 時間格式 185
12.3.3 多重索引 185
12.4 特殊字段 186
12.5 動態模板映射 186
12.6 索引模板 187
第13章 監控方案 189
13.1 監控相關接口 189
13.1.1 集群健康狀態 189
13.1.2 節點狀態 191
13.1.3 索引狀態 199
13.1.4 等待執行的任務 200
13.1.5 cat接口的命令行使用 201
13.2 日誌記錄 204
13.3 實時bigdesk方案 205
13.4 官方marvel方案 207
13.4.1 安裝和卸載 208
13.4.2 配置 208
13.4.3 訪問 209
13.4.4 面板定製示例 209
13.5 Zabbix trapper方案 212
13.5.1 安裝配置 212
13.5.2 模板應用 213
第14章 Elasticsearch在運維監控領域的其他應用 215
14.1 Percolator接口 215
14.2 Watcher報警 217
14.3 packetbeat抓包分析 220
14.3.1 安裝部署 220
14.3.2 配置示例 220
14.3.3 dashboard效果 221
14.3.4 Kibana 3拓撲圖 223
14.4 時序數據庫 224
14.5 Etsy的Kale異常檢測 226
第三部分 Kibana
第15章 Kibana的產品對比 231
15.1 Kibana 3的設計思路和功能 231
15.2 Kibana 4的設計思路和功能 232
15.3 與Hadoop體系的區別 232
15.4 Splunk場景參考 233
第16章 Kibana 3 235
16.1 Kibana 3入門 235
16.1.1 準備工作 236
16.1.2 界面介紹 236
16.1.3 跨域訪問註意事項 239
16.2 config.js配置 240
16.3 頁面佈局 240
16.3.1 請求和過濾 241
16.3.2 行和麵板 244
16.4 各面板功能 251
16.4.1 histogram 252
16.4.2 table 262
16.4.3 map 266
16.4.4 bettermap 267
16.4.5 terms 269
16.4.6 column 274
16.4.7 stats 274
16.4.8 query 275
16.4.9 trend 276
16.4.10 text 277
16.4.11 spark 
16.4.12 hits 279
16.4.13 goal 279
16.5 儀表盤的保存和加載 279
16.5.1 保存儀表盤 280
16.5.2 加載儀表盤 280
16.5.3 分享儀表盤 280
16.5.4 保存成靜態儀表盤 281
16.6 自定義儀表盤功能 281
16.6.1 schema簡介 281
16.6.2 模板化template儀表盤 288
16.6.3 腳本化scripted儀表盤 289
16.7 認證授權 290
16.7.1 用Nginx實現基礎的認證 290
16.7.2 用Node.js實現基於CAS的認證 292
16.7.3 用Perl實現認證和用戶授權 293
第17章 Kibana 3源碼解析 297
17.1 源碼目錄結構 297
17.2 入口和模塊依賴 300
17.3 控制器和服務 302
17.3.1 dashboard 303
17.3.2 querySrv 303
17.3.3 filterSrv 304
17.3.4 fields 304
17.3.5 esVersion 304
17.4 面板指令 304
17.4.1 添加面板 304
17.4.2 展示面板 305
17.5 面板實現 306
17.5.1 module.js 306
17.5.2 module.html 308
17.5.3 editor.html 309
17.6 用facet接口開發一個range panel 309
17.6.1 代碼實現 310
17.6.2 面板效果 313
17.7 用agg接口開發一個percentile panel 313
17.7.1 代碼實現要點 316
17.7.2 面板效果 318
第18章 Kibana 4 319
18.1 安裝、配置和運行 320
18.2 生產環境部署 323
18.2.1 Nginx代理配置 323
18.2.2 配置Kibana和shield一起工作 324
18.2.3 開啟SSL 325
18.2.4 控制訪問權限 325
18.3 Discover功能 326
18.3.1 設置時間過濾器 326
18.3.2 搜索數據 327
18.3.3 按字段過濾 328
18.3.4 過濾器的協同工作方式 329
18.3.5 查看文檔數據 330
18.4 各種可視化功能 332
18.4.1 area 333
18.4.2 table 336
18.4.3  
18.4.4 Markdown 338
18.4.5 metric 338
18.4.6 pie 339
18.4.7 tile map 339
18.4.8 vertical bar 340
18.5 儀表盤功能 341
18.5.1 開始 342
18.5.2 容器功能 343
18.5.3 修改可視化 346
18.6 Setting功能 346
18.6.1 創建一個連接到Elasticsearch的索引模式 346
18.6.2 創建一個腳本化字段 349
18.6.3 設置高級參數 350
18.6.4 管理已保存的搜索、可視化和儀表盤 350
18.7 設置Kibana服務器屬性 351
18.8 常用sub agg示例 352
18.8.1 函數堆棧鏈分析 352
18.8.2 分圖統計 355
18.8.3 TopN的時序趨勢圖 356
18.8.4 響應時間的百分占比趨勢圖 358
18.8.5 響應時間的概率分佈在不同時段的相似度對比 359
18.9 Kibana報表的快速實現 360
第19章 Kibana 4源碼解析 363
19.1 Kibana索引的數據結構 364
19.2 主頁入口 365
19.2.1 index.js解析 365
19.2.2 Courier類 367
19.2.3 路徑記憶功能的實現 370
19.2.4 標籤頁應用的加載 371
19.3 Discover解析 374
19.4 Visualize解析 377
19.4.1 vis_types實現 378
19.4.2 savedVisualizations實現 384
19.4.3 Visualize實現 384
19.4.4 VisEditorSidebar實現 385
19.5 Dashboard解析 387
19.6 Setting解析 389