緩存命中率計算公式:
MAIN.cache_hit / (MAIN.cache_hit + MAIN.cache_miss)
以下爲監控varnish緩存命中率的腳本,一共有兩個功能:
監控varnish總命中率,使用以上公式進行計算
監控最近一段時間內的命中率,方法是把當前獲得的hit數和總數以變量形式輸出到文件中,下一次執行該腳本時從文件中獲取舊數據,使用當前數據與舊數據的差值進行計算命中率
使用方法:
傳入totalHitRate 或 recentHitRate 以獲取對應的值,可結合zabbix做監控
#!/bin/bash totalHit=`varnishstat -1 | awk '/MAIN.cache_hit\>/{print $2}'` totalMiss=`varnishstat -1 | awk '/MAIN.cache_miss\>/{print $2}'` total=$[${totalHit}+${totalMiss}] echoTotalHitRate() { totalHitRate=$(awk 'BEGIN{print "'"$totalHit"'"/"'"$total"'"}') echo ${totalHitRate} } echoRecentHitRate() { [ -f lastData ] && source `pwd`/lastData recentHit=$[$totalHit-${lastHit:-0}] recentTotal=$[$total-${lastTotal:-0}] echo "lastHit=$totalHit" > lastData echo "lastTotal=$total" >> lastData [ $recentTotal != "0" ] && recentHitRate=$(awk 'BEGIN{print "'"$recentHit"'"/"'"$recentTotal"'"}') \ || recentHitRate=`echoTotalHitRate` echo ${recentHitRate} } case $1 in totalHitRate) echoTotalHitRate ;; recentHitRate) echoRecentHitRate ;; esac