Elasticsearch&Kibana改進TopHits的設想

      網友投稿 873 2025-04-03

      Elasticsearch&Kibana改進TopHits的設想


      背景

      大家在使用ES和Kibana的時候,應該都遇到過這樣的場景:

      假設有一個主機監控的任務,收集的數據格式為:時間戳、主機名、當前內存占用量,收集周期為每分鐘收集一次。那么在Kibana中可能需要提供這樣的報表,當前所有主機總體內存占用量。大家動手試試,在Kibana報表中,應該是做不到的。

      我這里實際動手,作為示例解釋下:

      1、進入Kibana的DevTools頁面,導入模擬數據

      如上圖,4條數據,兩條是主機AAA的不同時間上報的內存占用量,另外兩條是主機BBB的。

      思考下,我們如何從這些數據中求出AAA、BBB的總內存占用?思考可得知,先需要求得AAA和BBB主機分別的最后一條上報數據,即圖中第二條和第四條數據。然后將這兩條數據的mem_used_mb相加。

      順著這個思路,我們繼續。

      2、用分組aggregation和TopHits aggregation求出AAA和BBB的最后一條上報數據

      上圖中,涉及到兩個Aggregation,一個是terms agg,在ES中屬于Buckets Agg,是可以攜帶子agg的。一個是top_hits agg,屬于Metric Agg,是不可以攜帶子agg的。組合起來含義就是,按照host的值進行分組,每個分組中取按照@timestamp字段值倒排序的前一條文檔

      執行返回結果:

      我們在kibana中看看是怎么圖形化構造這個語句的(注意先在kibana中創建monitor索引對應的Pattern):

      上圖中,我們可以看到Kibana中和ES原生語法相比TopHits的內容多了個Field和一個Aggregate with需要填,這是Kibana界面上的一個優化,確保得出來的值是一個數字,而不是一條條記錄。意思就是在求出來的記錄上挑選一個字段求聚合的值,以便得到一個數字從而生成指標圖。

      好了,已經得到了每個主機的最后一條記錄,如何求兩個主機的mem_used_mb只和呢?ES有提供相關的Agg,叫sum_bucket agg,用于求其他bucket類型agg的多個分組數值只和。我們先看一個樣例。

      求得結果:

      大家可以注意,上圖中分組agg里面嵌套的是一種叫做max的agg,用于求mem_used_mb的最大值,而整個語句的效果相當于,求出每個主機記錄中mem_used_mb字段最大一次的值,然后相加。這樣很明顯不是我們所需要的結果。那么為什么不用top_hits呢?

      3、為什么top_hits不可以和sum_bucket配合

      大家看看我們把max agg替換為top_hits agg后的結果,輸入命令:

      結果:

      出錯了!為什么呢?由解釋可知sum_bucket只能接受分組中的值為一個單數字,并且結果字段名稱要叫做”value”,而top_hits agg的結果只是一行行文檔,不符合這個條件。

      Kibana也知道ES這個限制,從而在sum_buket的構造頁面中根本不提供接入top_hits的選項。

      4、如何解決呢?

      設想應該可以增加一個ES插件,擴展top_hits agg的行為,增加類似kibana界面優化上的aggregate with選項,將top_hits的輸出變為一個單值,叫做”value”。同時kibana界面上開放相關適配。

      這個能力已經在華為云云搜索服務中實現了,云搜索服務是基于開源的elasticsearch的一款云服務,并且做了很多增強,歡迎前往官網使用華為云CSS服務官網:

      關于云搜索服務的其他功能介紹可以參考:

      https://support.huaweicloud.com/usermanual-css/css_01_0007.html

      云搜索服務 CSS Elasticsearch

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:甘特圖怎么體現計劃和實際
      下一篇:wps20163Excel怎樣修改標題樣式(wpsexcel標題怎么設置)
      相關文章
      久久国产亚洲精品| 亚洲国产精品综合久久20| 亚洲午夜福利在线视频| 亚洲午夜在线一区| 亚洲小视频在线播放| 亚洲综合男人的天堂色婷婷| 亚洲视频在线观看| 久久亚洲私人国产精品| 久久久综合亚洲色一区二区三区 | 2020年亚洲天天爽天天噜| 亚洲男女性高爱潮网站| 中文字幕亚洲色图| 91嫩草亚洲精品| 亚洲男人的天堂久久精品| 亚洲精品国产国语| 亚洲精品无码专区在线播放| 亚洲日韩国产二区无码| 亚洲欧美乱色情图片| 亚洲AV第一成肉网| 亚洲成A人片77777国产| 亚洲精品偷拍视频免费观看| av在线亚洲欧洲日产一区二区| 久久精品亚洲男人的天堂| 在线观看亚洲精品国产| 国产亚洲精品观看91在线| 久久91亚洲精品中文字幕| 亚洲五月激情综合图片区| 亚洲熟妇无码爱v在线观看| 亚洲已满18点击进入在线观看| 亚洲精品国产av成拍色拍| 久久久亚洲精华液精华液精华液 | 在线看亚洲十八禁网站| 亚洲国产精品日韩| 亚洲人成色77777| 99ri精品国产亚洲| 亚洲中文字幕一二三四区苍井空 | 亚洲A∨无码一区二区三区 | 亚洲男人电影天堂| 亚洲情A成黄在线观看动漫软件| 亚洲av永久中文无码精品| jizzjizz亚洲|