Elastic 探祕之遺落的珍珠

IT大咖說發表於2018-09-20

Elastic 探祕之遺落的珍珠

內容來源:2018 年 06 月 30 日,Elastic工程師與佈道師曾勇在“Elastic Meetup 南京交流會”進行的《Elastic探祕之遺落的珍珠》演講分享。IT 大咖說(微信id:itdakashuo)作為獨家視訊合作方,經主辦方和講者審閱授權釋出。

閱讀字數:2250 | 5分鐘閱讀

獲取嘉賓演講視訊及PPT:suo.im/4E278t

摘要

Elastic Stack 功能越來越豐富了,有很多功能可能你只聽說過名字,有很多功能也許沒有機會嘗試過,其實你可能錯過了很多寶貝,所以讓我們來探究探究。本次分享主要介紹 Elastic Stack 技術棧裡面,一些可能看起來不太起眼但卻非常有意思的功能,定義為非乾貨,儘量輕拍,不過相信對於剛接觸 Elastic 的同學來說,也會有所收穫。

ElasticSearch裡的幾個不起眼的小功能

備註

Elastic 探祕之遺落的珍珠

在建立資料庫表的時候,我們可能會面臨為表中的欄位新增備註的需求,對於業務複雜環境下的開發者來說這通常非常有幫助。

一般開發人員會為此編寫詳細的開發文件,標註各個欄位的用處,不過文件的問題在於難以保持更新,很少有人查閱。

Elastic 探祕之遺落的珍珠

最好的方式是將備註和資料繫結在一起,恰好ES擁有這個功能,它通過Mate欄位實現(如上圖)。Meta中所有的資訊都能夠自定義,類似於後設資料儲存倉庫,比如庫表資訊、表中欄位、欄位備註、版本、建立者等。

排序

Elastic 探祕之遺落的珍珠

排序是查詢中比較常見的操作,一些限定範圍的操作也會依賴於它。一般排序的步驟是先查詢資料獲取到文件,然後再使用特定欄位進行排序。這種方式的效能開銷較大,文件越多排序越慢。

理想的情況是在建索引的時候就排好序,這樣可以一次性獲取到結果,避免不必要的效能消耗。利用ES的Index Sorting能夠完美的實現這一效果,另外它還帶來了更好的壓縮比和更小的磁碟空間。

使用方法也很簡單,先指定排序欄位,可以是一個或多個(上圖為date),然後指定排序方式,倒序或正序,最後新建成的欄位在建立索引的時候會依據它來排序。

Adaptive ReplicaSelection

Elastic 探祕之遺落的珍珠

在ES中請求傳送到任意節點之後,若索引主分片不在請求所在節點,請求就會被轉發到主分片所在的伺服器節點上,之後由主分片建立索引並寫入副本。相對寫入,查詢過程會簡單些,請求達到節點後,該節點會拿到副本集合,然後依次輪詢。

索引資料的大小和熱度會使得叢集中不同伺服器IO壓力不一致,從而造成輪詢的時候,第一次訪問的可能是空閒的伺服器,很快就有返回,而第二次可能是壓力大的伺服器,較長時間後才有返回。

從使用者體驗角度來說,這種效果是非常不理想的。所以ES推出了Adaptive Replica Selection功能,它會以伺服器的響應時間和請求佇列作為參考指標,智慧的選擇副本進行查詢,儘可能的縮短請求響應時間。

Kibana裡面幾個值得留意的新功能

Kuery + Autocomplete

Elastic 探祕之遺落的珍珠

Kuery是資料分析搜尋的視覺化平臺kibana的新查詢語法,通過在輸入框中鍵入特定欄位來檢索資訊,可以說是相對原生的搜尋方式,即沒有候選項也沒有模糊查詢。

Kibana新版中可以通過在options中開啟新feature來啟動智慧檢索功能,鍵入一部分欄位後,搜尋框下方馬上會列出補全後的候選欄位,欄位中的可能值也會被列舉出來。雖說是個小功能,不過也大大提高了檢索效率。

Chained Input Control

Elastic 探祕之遺落的珍珠

Chained Input Control是一種鏈式查詢的功能,所有的索引資料都以控制元件的形式存放在一個列表中,使用者可以先從列表中選擇一個控制元件作為要查詢的範圍,之後列表中的控制元件會更新為上一個控制元件所限定的範圍內,範圍更新的同時頁面展示資料也會隨之更新。

比如要查詢某個城市的相關資料,就可以先選擇國家然後選中目標城市,之後所有資料都會同步更新。如果想要更詳細的資料,還可以進一步選擇控制元件。其實本質上這是通過前一個控制元件過濾下一個控制元件的值。

最後介紹一個小功能,大家都知道在智慧化運維方面通過API來完成任務是非常有必要的,所以我們也提供了使用API建立Index Pattern的功能。

Logstash/Beats裡面幾個值得留意的新功能

Dissect Filter

Elastic 探祕之遺落的珍珠

Dissect filter可以應用於有一定規則的結構化資料上。比如將一個文字欄位拆分成多個欄位,通過逗號或空格進行切割。如上圖所示,使用逗號分割欄位,大括號中是欄位的名稱。

之所以不使用正規表示式,是因為它規則過於複雜,CPU消耗非常高,而目前所用的方式僅通過符號就可以切分,能夠直觀的預測到所獲取的資料。不過該方式也存在限制,所有的資料都要遵循統一規則。

Munin

Elastic 探祕之遺落的珍珠

Munin不是Elastic,不過它出現的比較早,2002年的時候就誕生了,用的是PerL語言編寫的,可以執行在各個平臺上,跨平臺能力很強。

Munin主要用來監控伺服器的效能指標,比如CPU效能、磁碟佔用、記憶體佔用等。由於有著非常久的歷史,所有外掛非常豐富,基本上涵蓋了能找的所有平臺和應用。

剛好Elastic現在也在做監控和效能指標分析,我們就在想能不能直接接入Munin。最終的方案是通過beats將Munin拉入到Elastic裡進行分析,由beats彙總Munin上傳上來的資料,Elastic接收這些資料並交由Kibana分析,這樣Elastic就能應對各種不同的平臺。

Beats – Spoolingto Disk

Elastic 探祕之遺落的珍珠

如上圖所示是一個和beats相關的基於磁碟的佇列,可以理解為磁碟的一個緩衝區。當用beats進行處理資料時,如果資料時高時低記憶體佔用就會比較高,而在基於磁碟的場景下得以避免這種問題。我們還可以用磁碟做一個緩衝區,讓資料先落地。

X-Pack不容錯過的免費功能

Elastic 探祕之遺落的珍珠

X-Pack雖然是我們的商業產品,但是有很多免費功能,這些都預設包含在下載版本中。如上圖所示,大部分功能都是開源的,但有一部分要PAID,另一部分是免費的。

Elastic 探祕之遺落的珍珠

Monitoring是其中的一個免費功能,主要用來監控K8S和ES的內部執行資訊,包含從監控到收集再到視覺化的一整套流程。

第二個是SQL相關的功能,我們現在可以用SQL的語法來構建查詢,目前來說還很簡單,只提供select 基本功能,不能完全的寫資料、修改資料。主要還是用於讓資料科學家和運維分析人員方便的查詢資料,畢竟他們對SQL語句更熟悉些。

Elastic 探祕之遺落的珍珠

Rolling up功能可以對資料進行上卷,按照指定的時間戳範圍對資料進行聚合得到新的結果,這樣資料量會少很多,很大程度上節省了磁碟空間,也比較適用於對歷史資料和經營資料的進行業務分析。

還一個功能是Grok Debugger,它是一個用來除錯python的工具。很多場景會用到Grok,像日誌的每一行可能不一樣,就可以用Grok把它們做成一個事件。


相關文章