壓測全鏈路日誌的時候,不知道怎麼監測ES的實時入庫速度,於是在Chrome的瀏覽器裏寫了點js腳本,實現了對ES實時入庫速度的監控,不能說是百分之百實時,不過滿足壓測的數據觀察。
二話不說上JS
var startTime = new Date();
var baseCount=0;
var showStat = function(){
$.getJSON("http://es.yue.ma:9200/_stats",null,function(d){
console.log(d._all.primaries.docs.count);
//有數據的時候纔開始統計
if(baseCount==0){
baseCount = d._all.primaries.docs.count;
startTime = new Date();
}
if(baseCount>0){
var currentTime = new Date();
console.log("開始時間:"+startTime);
console.log("統計時間:"+currentTime);
var diffTime = currentTime.getTime() -startTime.getTime();
console.log("時間差:"+diffTime);
var diffSec = diffTime / 1000;
console.log("時間差(秒):"+diffSec);
var speadSec = d._all.primaries.docs.count / diffSec;
console.log("平均每秒新增doc數量:"+speadSec);
console.log("預估每分鐘新增doc數量:"+speadSec*60);
}else{
console.log("還未探測到數據流");
}
});
setTimeout('showStat()',3000);
};
showStat();
實時速率顯示效果
腳本使用說明
進到ES查看頁面後,按F12,貼上js腳本。如果有數據流入es會顯示每秒的速度,將預估出每分鐘的速度。腳本會先檢測初始數據的變化,如果沒有變化,視爲數據流動還未開始,當檢測到有數據流入,再依據時間差與數據差額計算速度。因爲小工具的使用場景在於數據開始流動到數據停止的時間段,如果數據長時間不流入,顯示的速度會逐步下降,並影響後續實時數據的展示,這個時候可以重新刷新頁面,重新執行腳本。
首發公衆號