Elastic 探秘之遺落的珍珠

2021-09-11 09:07:08 字數 2459 閱讀 9782

suo.im/4e278t

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

munin不是elastic,不過它出現的比較早,2023年的時候就誕生了,用的是perl語言編寫的,可以執行在各個平台上,跨平台能力很強。

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

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

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

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

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

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

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

探秘SLAM之RANSAC演算法

隨機抽樣一致演算法 random sample consensus 簡稱ransac演算法,採用迭代的方式從一組包含離群的被觀測資料中估算出數學模型的引數。其廣泛應用在計算機視覺領域和數學領域,例如直線擬合 平面擬合 計算影象或點雲間的變換矩陣 計算基礎矩陣等方面。ransac演算法基本思想 從資料...

探秘C 之詳解extern C

在cpp的 之中有這樣的一段 ifdef cplusplus extern c endif解釋一下 首先,cplusplus是cpp中的自定義巨集,那麼定義了這個巨集的話表示這是一段cpp的 也就是說,上面的 的含義是 如果這是一段cpp的 那麼加入extern c 處理其中的 要明白為何使用ext...

遊戲設計規則探秘之賓語

正確地選擇賓語不是一件想當然的事情。在 入墓 中,簡的下行路徑由四個賓語組成 三種不同顏色互相連在一體的土塊,以及金屬塊。就像動詞一樣,我們選擇恰當的賓語也會帶來諸多益處。我們應盡量避免引入那些無法被發展的賓語,因為它們的用途與其他的賓語有太多的重疊。只給土塊一種顏色未免太少。我也許可以用這來控制遊...