用zabbix監控varnish運行狀態

   用過varnish的對varnishstat肯定不陌生。直接反應varnish當前運行的狀態,相比較這種當前狀態的展示,我更習慣看歷史曲線,所以我又將varnish與zabbix結合在一起了。

   首先,定義zabbix自定義監控

   怎麼做,這就不詳細說了,可以參考:http://shanks.blog.51cto.com/3899909/1310757

   我這隻把自定義腳本和zabbix-agent配置文件貼出來

   自定義腳本(varnish_stat)

#!/usr/bin/python
#monitor varnish3.0 status,use zabbix.
# -*- coding: UTF-8 -*-
import commands
import sys
import json
def get_varnish_stat(type):
    varnishstat_cmd = commands.getoutput('/usr/bin/varnishstat -j')
    varnishstatus = json.loads(varnishstat_cmd)
    print varnishstatus[type]['value']
                         
def show_help():
    print '''
    %s [segment]
    ---------------------------
    [segment:]
        N_struct_object
            varnish obj number.
        Client_requests_received
            number of client request.
        Cache_hits
            in all client requests ,hit in cache number.
        Cache_misses
            in all client requests ,not hit in cache number.
        N_expired_objects
            over time obj number.
        N_LRU_nuked_objects
            no free cache storage,to be moved obj number
        Total_header_bytes
            header bytes in all storage.
        Total_body_bytes
            body bytes in all storage.
    ''' % sys.argv[0]
    sys.exit(1)
def main_():
    if len(sys.argv) == 2:
        if (sys.argv[1]) == 'N_struct_object':
            get_varnish_stat('n_object')
        elif (sys.argv[1]) == 'Client_requests_received':
            get_varnish_stat('client_req')
        elif (sys.argv[1]) == 'Cache_hits':
            get_varnish_stat('cache_hit')
        elif (sys.argv[1]) == 'Cache_misses':
            get_varnish_stat('cache_miss')
        elif (sys.argv[1]) == 'N_expired_objects':
            get_varnish_stat('n_expired')
        elif (sys.argv[1]) == 'N_LRU_nuked_objects':
            get_varnish_stat('n_lru_nuked')
        elif (sys.argv[1]) == 'Total_header_bytes':
            get_varnish_stat('s_hdrbytes')
        elif (sys.argv[1]) == 'Total_body_bytes':
            get_varnish_stat('s_bodybytes')
        else:
            show_help()
    else:
        show_help()
main_()

   zabbix-agentd配置文件(只包含varnish自定義監控部分)

# ***For Varnish***
UserParameter=varnish.stat[*],/usr/bin/python /usr/local/zabbix/script/varnish/varnish_stat $1

   效果展示

150940723.jpg

150942541.jpg

150944989.jpg

150947353.jpg

150949493.jpg



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