監控varnish的緩存命中率

緩存命中率計算公式:

MAIN.cache_hit / (MAIN.cache_hit + MAIN.cache_miss)


以下爲監控varnish緩存命中率的腳本,一共有兩個功能:

  1. 監控varnish總命中率,使用以上公式進行計算

  2. 監控最近一段時間內的命中率,方法是把當前獲得的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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章