官术网_书友最值得收藏!

前言

2015年我在為公司做技術選型時就覺得有必要寫一本全面介紹ELK的圖書,因為彼時在國內(nèi)圖書市場上很難找到一本全面介紹ELK的書籍。但由于那時我正在創(chuàng)業(yè),而后又加入了阿里巴巴,繁忙的工作使我根本沒法騰出時間編寫。但在此期間ELK卻一直在以驚人的速度成長著,從Beats組件的加入到ELK更名為Elastic Stack,ELK在國內(nèi)外的應用越來越廣泛。與此形成鮮明對比的是,許多從事傳統(tǒng)軟件研發(fā)的編程人員和架構師對于大數(shù)據(jù)處理、全文檢索等領域的知識還缺乏最基本的認識。2018年Elastic公司掛牌上市讓更多的人知道了ELK,許多在軟件行業(yè)工作的朋友紛紛向我問詢ELK的相關知識。此時,我剛剛好有了一些空閑時間,所以最終下定決心開始編寫本書。希望能借本書讓更多的研發(fā)人員了解ELK及其背后的原理,讓人們在大數(shù)據(jù)處理與應用中少走一些彎路。

由于ELK也是剛剛更名為Elastic Stack,中間還曾經(jīng)叫過ELK Stack,所以ELK這個名稱在國內(nèi)的接受程度要遠高于Elastic Stack。雖然使用ELK可能更利于本書在讀者群中的傳播,但為了與官方稱謂保持一致,本書最終仍以Elastic Stack稱呼這一套組件。不僅如此,為了保證本書的權威性,書中所述內(nèi)容均與Elastic官方敘述保持一致。書中所有示例也都經(jīng)過了實際驗證,以保證它們可以在相應的環(huán)境中無誤地運行。

無論以何種名稱稱呼這套組件,它們現(xiàn)在主要都是指代Elasticsearch、Logstash、Kibana和Beats等組件。它們是本書介紹的主要內(nèi)容,并且天然地將本書劃分為五大部分。

第一部分是本書第1章,主要從整體上介紹Elastic Stack家族成員,并且講解了這些組件的安裝和基本使用方法。雖然第一部分只有一章,但這一章是后續(xù)章節(jié)的基礎。在這一部分中介紹了Elastic Stack的幾種應用場景,并根據(jù)其中一個場景搭建了一套分布式的日志收集和存儲系統(tǒng)。這套系統(tǒng)從整體上展示了Elastic Stack組件之間的協(xié)作,同時本書后續(xù)章節(jié)所有示例也都是基于這套系統(tǒng)。所以,讀者最好按照該章介紹將這個系統(tǒng)完整地搭建起來,以保證后續(xù)章節(jié)的學習可以順利展開。

第二部分是本書第2~8章,主要介紹了Elasticsearch的原理和應用。如果讀者對Elasticsearch沒有任何了解,建議一定要好好研讀一下第2章。這一章將Elasticsearch的基本原理和重要概念做了非常詳細的講解,這包括全文檢索與倒排索引的理論知識,以及在Elasticsearch中非常重要的索引、映射和文檔等基本概念。除此之外,還有Elasticsearch支持大數(shù)據(jù)存儲與容錯的分片、副本等技術,它們是Elasticsearch能夠高效且可靠運行的重要基石。第3、4章主要介紹Elasticsearch對外提供的REST接口,其中第3章介紹的主要是操作索引和文檔的接口,而第4章介紹的則都是與文檔檢索相關的接口。第5、6章介紹的是在文檔檢索中使用的查詢語言DSL,而第7章介紹的則是可以用于統(tǒng)計分析的聚集查詢。此外,Elasticsearch還定義了一些比較特殊的數(shù)據(jù)類型,這些數(shù)據(jù)類型的DSL與聚集查詢都有專門的用法,所以第8章將它們集中在一起講解。Elasticsearch是Elastic Stack中的核心成員,在應用上相對于其他組件也更復雜一些,希望讀者能夠按照書中給出的示例耐心研習。

第三部分是本書第9~11章,主要介紹Kibana的文檔發(fā)現(xiàn)、可視化、儀表盤和畫布等功能。Kibana就像是Elasticsearch的圖形化界面一樣,可通過它操作Elasticsearch中的數(shù)據(jù)。第9章介紹的文檔發(fā)現(xiàn)對應于Elasticsearch中的DSL,而第10章介紹的文檔可視化則基于聚集查詢。在第11章介紹的綜合展示中,儀表盤由文檔發(fā)現(xiàn)和文檔可視化自由組合而成,而畫布等功能則提供了更為豐富多彩的數(shù)據(jù)展示形式。Kibana使用起來并不難,但它卻可以通過極為簡單的配置操作將數(shù)據(jù)直觀地展示出來。通過這些直觀的展示,用戶可以挖掘出深藏在數(shù)據(jù)背后的信息。

第四部分是本書第12~14章,主要介紹Logstash體系結構及四種插件。第12章介紹了Logstash的整體結構,以及其中的編解碼器插件。由于Logstash輸入插件與輸出插件有許多相似之處,所以在第13章中按類型對它們統(tǒng)一做了介紹。由于過濾器插件種類繁多且完全獨立于輸入輸出插件,所以在第14章中單獨介紹。Logstash插件種類繁多,掌握好這些插件可以解決很多數(shù)據(jù)處理中的棘手問題。

第五部分是本書第15~16章,主要介紹Beats組件的共同框架Libbeat以及不同Beats類型的輸入組件。第15章除了介紹Beats體系結構以外,還介紹了在Libbeat框架中實現(xiàn)的共有組件,這主要是處理器組件和輸出組件。第16章則對Beats主要類型的輸入組件做了介紹,包括Packetbeat、Filebeat、Metricbeat、Heartbeat、Auditbeat、Winlogbeat和Journalbeat等。Beats組件使用起來并不復雜,它們的出現(xiàn)極大地擴充了Elastic Stack的應用領域。

由于本書涉及的內(nèi)容非常龐雜,其中的每一個組件其實都可以獨立成書。所以要想在一本書中將它們?nèi)恐v解清楚,對我來說也是一個非常巨大的挑戰(zhàn)。為了減少篇幅并方便讀者學習,我在編寫本書時將各種組件的知識做了合理的歸納和總結,將具有相似性的知識放在一起講解以方便讀者比較和記憶。此外,我還希望本書能夠成為開發(fā)人員的一本參考手冊,可以放在手邊隨時查看。所以在編寫此書時,我盡可能地將所有涉及內(nèi)容都講解到,并以表格和示例的形式將它們羅列出來。但畢竟內(nèi)容太過龐雜,有些內(nèi)容因此也就沒辦法展開詳細講解,希望讀者能夠體諒。

為了節(jié)省篇幅,書中一些示例只展示了核心內(nèi)容。比如在講解Elasticsearch時,多數(shù)REST請求的示例都沒有展示它們的返回結果,這需要讀者自己動手在Kibana開發(fā)工具中執(zhí)行查看。還有在Logstash、Beat等章節(jié)中講解的配置文件也只列出了關鍵內(nèi)容,需要讀者自行補充完整。比如在講解Logstash管道配置時,有相當一部分示例只列出了所要講解插件的配置,讀者在試驗時要根據(jù)已經(jīng)講解的內(nèi)容將其他必要插件補充完整。不過相信只要讀者認真研讀了章節(jié)的內(nèi)容,這些補充工作就不會太復雜。總之,實踐出真知,希望讀者在研讀的過程中一定要親自動手操作,這樣才能真正掌握所學內(nèi)容。

另外需要說明的一點是,由于查詢、檢索和搜索這三個詞在漢語中的含義基本相同,所以我在編寫本書時做了一些區(qū)分。簡單來說就是檢索對應全文檢索,查詢對應關系型數(shù)據(jù)庫,而搜索一般只在搜索引擎一詞中出現(xiàn)。為了與人們的習慣保持一致,在全文檢索的一些名詞中也會使用查詢,比如查詢語句、查詢條件等。盡管我在編寫本書時已經(jīng)盡可能做了區(qū)分,但由于本書篇幅巨大而不可避免地會出現(xiàn)一些混亂。如果確有讓讀者感到困惑的地方,可以將這三個詞視為相同的含義。

最后要感謝我的父親、妻子和一對兒女,由于編寫此書幾乎占據(jù)了我所有業(yè)余時間,陪伴他們的時間少了很多。感謝他們在此期間給予我的理解和照顧,最終才使本書得以順利結稿。還要感謝為本書最終出版做了大量工作的編輯,是他們辛勤的付出讓這本書提早問世。希望本書能夠幫助正在學習或使用Elastic Stack的讀者,可以更輕松、更全面地掌握這一家族中的組件。Elastic Stack的大門已經(jīng)開啟,快開始你的神奇旅程吧!

田雪松

2019年8月于北京

主站蜘蛛池模板: 平定县| 临西县| 绥芬河市| 南昌县| 富宁县| 鹤庆县| 道真| 乌鲁木齐县| 亳州市| 青浦区| 墨江| 秀山| 晋江市| 关岭| 鄄城县| 西乌珠穆沁旗| 合山市| 崇左市| 景德镇市| 慈溪市| 临高县| 琼中| 深水埗区| 鸡西市| 茶陵县| 洞头县| 晴隆县| 台中市| 长宁县| 达拉特旗| 岳池县| 南投市| 和田市| 绿春县| 确山县| 民勤县| 诸城市| 孙吴县| 华坪县| 扎鲁特旗| 贵德县|