Author: glen Date: Tue Apr 13 12:20:17 2010 GMT Module: packages Tag: HEAD ---- Log message: - pull more data for new template
---- Files affected: packages/cacti-template-varnish: get_varnish_stats.py (1.1 -> 1.2) ---- Diffs: ================================================================ Index: packages/cacti-template-varnish/get_varnish_stats.py diff -u packages/cacti-template-varnish/get_varnish_stats.py:1.1 packages/cacti-template-varnish/get_varnish_stats.py:1.2 --- packages/cacti-template-varnish/get_varnish_stats.py:1.1 Tue Apr 13 14:14:30 2010 +++ packages/cacti-template-varnish/get_varnish_stats.py Tue Apr 13 14:20:12 2010 @@ -1,4 +1,11 @@ #!/usr/bin/python +# $Id$ +# Author: Elan Ruusamäe <[email protected]> +# +# Original varnish stat script by dmuntean from http://forums.cacti.net/viewtopic.php?t=31260 +# Modified by glen to add support for new template: http://forums.cacti.net/viewtopic.php?p=182152 +# + import telnetlib import re import sys @@ -6,7 +13,7 @@ opts, args = getopt.getopt(sys.argv[1:], "h:p:", ["host=", "port="]) host = '127.0.0.1' -port = 9001 +port = 6082 for o, v in opts: if o in ("-h", "--host"): host = str(v) @@ -16,18 +23,112 @@ telnet = telnetlib.Telnet() telnet.open(host, port) telnet.write('stats\r\n') -out=telnet.read_until("N duplicate purges removed", 10) +out = telnet.read_until("ESI parse errors (unlock)", 10) telnet.write('quit\r\n') telnet.close() -req = re.search("\d+ Client requests received", out) -req = req.group(0).split()[0] - -hit = re.search("\d+ Cache hits", out) -hit = float(hit.group(0).split()[0]) - -miss = re.search("\d+ Cache misses", out) -miss = float(miss.group(0).split()[0]) - +# This serves as template for matching keys. +# Also all entries present in this table must be present in result +# You should upgrade Varnish 2.1 as Varnish 2.0 does not have "uptime" column. +sample = """ +uptime 17903 . Child uptime +client_conn 3333449 186.19 Client connections accepted +client_req 14776402 825.36 Client requests received +cache_hit 13929762 778.07 Cache hits +cache_hitpass 52996 2.96 Cache hits for pass +cache_miss 788513 44.04 Cache misses +backend_conn 494618 27.63 Backend conn. success +backend_unhealthy 0 0.00 Backend conn. not attempted +backend_busy 0 0.00 Backend conn. too many +backend_fail 0 0.00 Backend conn. failures +backend_reuse 351664 19.64 Backend conn. reuses +backend_recycle 817584 45.67 Backend conn. recycles +backend_unused 0 0.00 Backend conn. unused +n_srcaddr 0 . N struct srcaddr +n_srcaddr_act 0 . N active struct srcaddr +n_sess_mem 2200 . N struct sess_mem +n_sess 1207 . N struct sess +n_object 151202 . N struct object +n_objecthead 91698 . N struct objecthead +n_smf 326799 . N struct smf +n_smf_frag 24687 . N small free smf +n_smf_large 326 . N large free smf +n_vbe_conn 26 . N struct vbe_conn +n_bereq 212 . N struct bereq +n_wrk 600 . N worker threads +n_wrk_create 600 0.03 N worker threads created +n_wrk_failed 0 0.00 N worker threads not created +n_wrk_max 0 0.00 N worker threads limited +n_wrk_queue 0 0.00 N queued work requests +n_wrk_overflow 2639 0.15 N overflowed work requests +n_wrk_drop 0 0.00 N dropped work requests +n_backend 20 . N backends +n_expired 472014 . N expired objects +n_lru_nuked 165622 . N LRU nuked objects +n_lru_saved 0 . N LRU saved objects +n_lru_moved 6575346 . N LRU moved objects +n_objsendfile 0 0.00 Objects sent with sendfile +n_objwrite 14087414 786.87 Objects sent with write +n_objoverflow 0 0.00 Objects overflowing workspace +s_pipe 879 0.05 Total pipe +s_pass 56935 3.18 Total pass +s_hdrbytes 5095096301 284594.55 Total header bytes +s_bodybytes 105139468938 5872729.09 Total body bytes +sess_closed 211106 11.79 Session Closed +sess_pipeline 52085 2.91 Session Pipeline +sess_readahead 54758 3.06 Session Read Ahead +sess_linger 14576708 814.20 Session Linger +sess_herd 11874652 663.28 Session herd +shm_records 626744114 35007.77 SHM records +shm_writes 37710636 2106.39 SHM writes +shm_flushes 32226 1.80 SHM flushes due to overflow +shm_cont 101165 5.65 SHM MTX contention +shm_cycles 256 0.01 SHM cycles through buffer +sm_nreq 1857435 103.75 allocator requests +sm_balloc 3918831616 . bytes allocated +sma_nreq 0 0.00 SMA allocator requests +sma_nbytes 0 . SMA outstanding bytes +sms_nreq 344 0.02 SMS allocator requests +sms_nbytes 0 . SMS outstanding bytes +backend_req 845376 47.22 Backend requests made +n_vcl 1 0.00 N vcl total +n_vcl_avail 1 0.00 N vcl available +n_vcl_discard 0 0.00 N vcl discarded +n_purge 1 . N total active purges +n_purge_add 1 0.00 N new purges added +n_purge_retire 0 0.00 N old purges deleted +n_purge_obj_test 0 0.00 N objects tested +n_purge_re_test 0 0.00 N regexps tested against +n_purge_dups 0 0.00 N duplicate purges removed +hcb_nolock 0 0.00 HCB Lookups without lock +hcb_lock 0 0.00 HCB Lookups with lock +hcb_insert 0 0.00 HCB Inserts +esi_parse 0 0.00 Objects ESI parsed (unlock) +esi_errors 0 0.00 ESI parse errors (unlock) +""" + +# process results +split = re.compile('^\s*(?P<value>\S+)\s+(?P<key>.+)$') +res = {} +for line in out.split('\n'): + m = re.search(split, line); + if m: + res[m.group('key')] = m.group('value') + +# map for keys +split = re.compile('^(?P<key>\S+)\s+(\d+)\s+\S+\s+(?P<value>.+)$') +for line in sample.split('\n'): + m = re.search(split, line); + if m: + if res.has_key(m.group('value')): + value = res[m.group('value')] + print "%s:%s" % (m.group('key'), value), + else: + # for missing value, print -1 + print "%s:-1" % m.group('key'), + +# print results for original script +req = res['Client requests received'] +hit = float(res['Cache hits']) +miss = float(res['Cache misses']) print 'varnish_requests:'+str(req)+' varnish_hitrate:'+str(round(hit / (hit + miss) * 100, 1)) - ================================================================ ---- CVS-web: http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/cacti-template-varnish/get_varnish_stats.py?r1=1.1&r2=1.2&f=u _______________________________________________ pld-cvs-commit mailing list [email protected] http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit
