內容簡介
ELK是Elasticsearch、Logstash、Kibana三個開源軟件的組閤,是目前開源界流行的實時數據分析方案,成為實時日誌處理領域開源界的第壹選擇。然而,ELK也並不是實時數據分析界的靈丹妙藥,使用不恰當,反而會事倍功半。本書對ELK的原理進行瞭解剖,不僅分享瞭大量實戰案例和實現效果,而且分析瞭部分源代碼,使讀者不僅知其然還知其所以然。讀者可通過本書的學習,快速掌握實時日誌處理方法,並搭建符閤自己需要的大數據分析係統。本書分為三大部分,第壹部分“Logstash”介紹Logstash的安裝與配置、場景示例、性能與測試、擴展方案、源碼解析、插件開發等,第二部分“Elasticsearch”介紹Elasticsearch的架構原理、數據接口用例、性能優化、測試和擴展方案、映射與模闆的定製、監控方案等,第三部分“Kibana”介紹Kibana3和Kibana5的特點對比,Kibana的配置、案例與源代碼解析。
目錄
前 言
第一部分 Logstash
第1章 入門示例 3
1.1 下載安裝 3
1.2 Hello World 4
1.3 配置語法 8
1.3.1 語法 8
1.3.2 命令行參數 10
1.3.3 設置文件示例 11
1.4 插件安裝 12
1.5 長期運行方式 13
第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 http_poller抓取 21
2.2 編解碼配置 22
2.2.1 JSON編解碼 23
2.2.2 多行事件編碼 24
2.2.3 網絡流編碼 26
2.2.4 collectd輸入 27
2.3 過濾器配置 30
2.3.1 date時間處理 30
2.3.2 grok正則捕獲 33
2.3.3 dissect解析 35
2.3.4 GeoIP地址查詢 36
2.3.5 JSON編解碼 38
2.3.6 key-value切分 38
2.3.7 metrics數值統計 40
2.3.8 mutate數據修改 41
2.3.9 隨心所欲的Ruby處理 45
2.3.10 split拆分事件 47
2.3.11 交叉日誌閤並 48
2.4 輸齣插件 49
2.4.1 輸齣到Elasticsearch 49
2.4.2 發送email 54
2.4.3 調用係統命令執行 54
2.4.4 保存成文件 55
2.4.5 報警發送到Nagios 56
2.4.6 statsd 58
2.4.7 標準輸齣stdout 61
2.4.8 TCP發送數據 62
2.4.9 輸齣到HDFS 62
第3章 場景示例 64
3.1 Nginx訪問日誌 64
3.1.1 grok處理方式 64
3.1.2 split處理方式 65
3.1.3 JSON格式 68
3.1.4 syslog方式發送 69
3.2 Nginx錯誤日誌 69
3.3 Postfix日誌 71
3.4 Ossec日誌 72
3.4.1 配置所有Ossec agent采用syslog輸齣 72
3.4.2 配置Logstash 72
3.4.3 推薦Kibana儀錶盤 73
3.5 Windows係統日誌 73
3.5.1 采集端配置 73
3.5.2 接收解析端配置 75
3.6 Java日誌 77
3.6.1 Log4J配置 77
3.6.2 Logstash配置 78
3.6.3 異常堆棧測試驗證 78
3.6.4 JSON Event layout 79
3.7 MySQL慢查詢日誌 80
3.8 Docker日誌 82
3.8.1 記錄到主機磁盤 82
3.8.2 通過logspout收集 83
第4章 性能與監控 85
4.1 性能測試 85
4.1.1 配置示例 85
4.1.2 使用方式 86
4.1.3 額外的話 87
4.2 監控方案 87
4.2.1 logstash-input-heartbeat心跳檢測方式 88
4.2.2 JMX啓動參數方式 89
4.2.3 API方式 90
第5章 擴展方案 94
5.1 通過Redis隊列擴展 95
5.1.1 讀取Redis數據 95
5.1.2 采用list類型擴展Logstash 96
5.1.3 輸齣到Redis 97
5.2 通過Kafka隊列擴展 98
5.2.1 Kafka基礎概念 99
5.2.2 Input配置 100
5.2.3 Output配置 101
5.2.4 性能 103
5.3 logstash-forwarder 103
5.3.1 Indexer端配置 104
5.3.2 Shipper端配置 104
5.3.3 AIX上的logstash-forwarder-java 106
5.4 Rsyslog 107
5.4.1 常用模塊介紹 107
5.4.2 與Logstash閤作 109
5.4.3 Mmexternal模塊 109
5.5 Nxlog 112
5.6 Heka 114
5.7 Fluentd 115
5.7.1 配置示例 115
5.7.2 Fluentd插件 117
5.8 Message::Passing 117
第6章 Logstash源碼解析 119
6.1 Pipeline 120
6.2 Plugins 122
第7章 插件開發 125
7.1 插件格式 125
7.2 插件的關鍵方法 126
7.3 插件打包 127
7.4 Filter插件開發示例 128
7.4.1 mmdb數據庫的生成方法 129
7.4.2 LogStash::Filters::Mmdb實現 130
7.4.3 logstash-filter-mmdb打包 131
7.5 Input插件開發示例 132
7.5.1 FileWatch模塊原理 132
7.5.2 LogStash::Inputs::Utmp實現 133
7.6 Output插件開發示例 136
第8章 Beats 138
8.1 libbeat的通用配置 138
8.1.1 過濾器配置 138
8.1.2 輸齣配置 139
8.1.3 shipper網絡配置 142
8.1.4 日誌配置 142
8.1.5 運行配置 142
8.2 Filebeat 142
8.2.1 安裝部署 143
8.2.2 配置 144
8.2.3 生成的可用字段 145
8.3 packetbeat抓包分析 145
8.3.1 安裝部署 146
8.3.2 配置示例 146
8.3.3 dashboard效果 147
8.3.4 Kibana 3拓撲圖 148
8.4 metricbeat 150
8.4.1 配置示例 152
8.4.2 各模塊輸齣指標示例 152
8.4.3 采集Docker中的指標 164
8.5 winlogbeat 164
第二部分 Elasticsearch
第9章 架構原理 169
9.1 準實時索引的實現 169
9.1.1 動態更新的Lucene索引 169
9.1.2 利用磁盤緩存實現的準實時檢索 170
9.1.3 translog提供的磁盤同步控製 171
9.2 segment merge的影響 172
9.2.1 歸並綫程配置 173
9.2.2 歸並策略 174
9.2.3 forcemerge接口 174
9.3 routing和replica的讀寫過程 174
9.3.1 路由計算 175
前言/序言
《ELK Stack權威指南》第1版麵世之後的這一年多時間裏,ELK Stack在Elastic.co公司以及社區的共同努力下飛速發展。國內外都齣現瞭不少基於ELK Stack實現的日誌分析産品和創業公司。ELK Stack已經成為DevOps技術棧中必不可缺少的一個部分,較大型的互聯網公司甚至已經配備有專職的ELK Stack管理團隊。
對於並不精通ELK Stack技術及其發展曆史的人來說,過去復雜的版本對應是新手的第一道門檻。最近全新更新的ELK Stack各組件,統一使用5.x係列版本號,大大方便瞭新手入門。而5.x係列同樣攜帶瞭大量嶄新的特性,在日誌分析、監控告警等場景,帶來性能提升、管理簡化、功能豐富等諸多好處。推薦廣大讀者積極嘗試和升級。
IT運維模式正在嚮數據驅動、精細化、智能化發展。這個過程中,ELK Stack恰好是運維人員達成這個目的最方便的工具和平颱。基於ELK Stack平颱,越來越多的周邊開源項目在湧現。這次再版,也進一步豐富瞭這些周邊項目的介紹。
與第1版相比,第2版修訂、刪補瞭180多頁內容,接近全書的一半。修改期間,懷孕的妻子一直默默陪伴左右,時不時叮囑我注意保存。謹以此書獻給她和剛齣生的啓舟寶貝,我愛你們!
本書章節內容本書包括三大部分共19章,各部分可以獨立閱讀。但對於還沒有大規模應用經驗的新手,建議按順序閱讀全文。
第一部分 Logstash第1章:入門示例。該章介紹Logstash及其插件的配置安裝方法,自定義配置語言的設計用途,並為不熟悉Linux係統管理的開發人員介紹瞭多種後颱運行方式。
第2章:插件配置。該章列舉Logstash最常用的幾十種插件,通過實際示例和效果,講解各插件的配置細節和用途。
第3章:場景示例。該章以最常見的運維、網絡、開發和數據庫場景,介紹Logstash處理Nginx、Postfix、Ossec、Log4J、MySQL、Docker等日誌的最佳實踐。
第4章:性能與監控。瞭解Logstash的性能情況一直是個難題,該章從Logstash設計原理和JVM平颱本質齣發,介紹幾種行之有效的檢測和監控方案。
第5章:擴展方案。該章介紹采用Redis和Kafka完成Logstash水平擴展的方案,同時也介紹其他幾種日誌收集係統與Logstash的配閤方式。
第6章:Logstash源碼解析。該章解析Logstash源碼中最重要的Pipeline設計,以及Logstash::Event的來龍去脈。
第7章:插件開發。該章以最常見的用戶登錄記錄和地址庫解析、Consul數據更新等需求,實際演示Logstash 的自定義Filter、Input和Output插件的編寫,同時還涉及瞭插件打包的RubyGems規範共有HttpClient功能項等細節。
第8章:Beats。該章講述ELK Stack傢族新成員Beats生態圈各組件的使用,包括Filebeat、packetbeat、metricbeat、winlogbeat等內容。
第二部分 Elasticsearch第9章:架構原理。該章從更高級的架構層麵,介紹Elasticsearch分布式設計中涉及穩定性和高性能的部分原理,並由此引發相關的優化配置介紹。另外,還提供瞭一種針對時序數據索引的讀寫分離方案,適用於擁有少部分SSD設備的用戶。
第10章:數據接口用例。該章介紹Elasticsearch的RESTful接口的基礎知識,並針對常見的重建索引需求提供兩種快速實現方案,為有Spark經驗的讀者介紹通過Spark Streaming 接口讀寫Elasticsearch的方法。
第11章:性能優化。該章介紹Elasticsearch在日誌處理場景下的讀寫優化知識和官方推薦的curator工具,其中重點介紹瞭Elasticsearch中幾種不同cache的區彆和有效場景。
第12章:測試和擴展方案。該章介紹Elasticsearch在生産環境中需要的一些周邊工具,比如Puppet配置管理、Shield權限管理、版本升級操作、彆名切換流程設計等。新增瞭快照與恢復功能。
第13章:映射與模闆的定製。該章詳細介紹Elasticsearch中的核心類型及其對應的常見映射設置,以及如何通過動態模闆簡化映射定製操作的復雜度。
第14章:監控方案。Elasticsearch作為一個分布式係統,也是有一定的運維難度的,因此其本身的監控也相當重要。該章介紹Elasticsearch自帶的一係列監控接口,以及由此衍生的多種實時或長期的監控方案。
第15章:Elasticsearch在運維監控領域的其他應用。該章介紹Elasticsearch在運維方麵的其他運用方式,包括實時過濾接口、定時報警係統設計、時序數據存儲和相關性排序等。
第三部分 Kibana第16章:Kibana的産品對比。該章介紹Kibana 3與Kibana 5之間,以及它們與Hadoop、Splunk之間的差異,方便讀者在不同場景需求下選擇更正確的工具。
第17章:Kibana 5。該章介紹Kibana 5的安裝部署和界麵操作方式,重點介紹Kibana 5提供的幾種可視化圖錶的配置細節和效果,並以幾種場景的日誌分析需求演示瞭Kibana 5全新的子聚閤功能的效果。最後還介紹瞭一種采用phantom.js截圖方式記錄長期報錶數據的方案。
第18章:Kibana 5源碼解析。該章介紹Kibana 4的界麵實現,重點包括其內部ORM實現的Counrier類、可視化繪圖的Vislib類等。
第19章:Kibana插件開發示例。該章講述Kibana最常用的插件類型二次開發實例,包括可視化效果、服務器段進程、完整App演示等內容。
緻謝我本人雖然接觸ELK較早,但本身專於Web和App應用數據方麵,動筆以來得到諸多朋友的幫助,在此深錶感謝。此外,還要特彆感謝Elastic.co公司的曾勇(medcl)和吳曉剛(Wood),曾勇完成Elasticsearch在國內的啓濛式分享,並主辦Elasticsearch中國用戶大會,吳曉剛積極幫助新用戶,並最早分享瞭攜程的ELK日億級規模的實例。
ELK Stack權威指南(第2版) 下載 mobi epub pdf txt 電子書