munin: add script to get count of recently submitted forms
parent
7ecbc33621
commit
36122853fa
@ -0,0 +1,67 @@
|
||||
#! /usr/bin/env python
|
||||
#%# family=auto
|
||||
#%# capabilities=autoconf
|
||||
|
||||
import cPickle
|
||||
import datetime
|
||||
import os
|
||||
import psycopg2
|
||||
import sys
|
||||
|
||||
base_dir = None
|
||||
for dirname in os.listdir('/var/lib/machines/'):
|
||||
if os.path.exists(os.path.join('/var/lib/machines/', dirname, 'var/lib/wcs')):
|
||||
base_dir = os.path.join('/var/lib/machines/', dirname, 'var/lib/wcs')
|
||||
break
|
||||
|
||||
if len(sys.argv) == 2 and sys.argv[1] == 'autoconf':
|
||||
if base_dir:
|
||||
print 'yes'
|
||||
else:
|
||||
print 'no'
|
||||
sys.exit(0)
|
||||
|
||||
if len(sys.argv) == 2 and sys.argv[1] == 'config':
|
||||
print '''graph_title Count of recently submitted forms
|
||||
graph_category entrouvert
|
||||
count_5m.label Count (5 minutes)
|
||||
count_1h.label Count (1 hour)
|
||||
count_1d.label Count (k) (1 day)
|
||||
'''
|
||||
sys.exit(0)
|
||||
|
||||
total_5m = 0
|
||||
total_1h = 0
|
||||
total_1d = 0
|
||||
|
||||
time_5m = datetime.datetime.now() - datetime.timedelta(minutes=5)
|
||||
time_1h = datetime.datetime.now() - datetime.timedelta(hours=1)
|
||||
time_1d = datetime.datetime.now() - datetime.timedelta(days=1)
|
||||
|
||||
for tenant in os.listdir(base_dir):
|
||||
if tenant in ('collectstatic', 'scripts', 'skeletons', 'spooler'):
|
||||
continue
|
||||
if tenant.endswith('.invalid'):
|
||||
continue
|
||||
if not os.path.isdir(os.path.join(base_dir, tenant)):
|
||||
continue
|
||||
cfg = cPickle.load(open(os.path.join(base_dir, tenant, 'config.pck')))
|
||||
if not 'postgresql' in cfg:
|
||||
continue
|
||||
psql_cfg = {}
|
||||
for k, v in cfg['postgresql'].items():
|
||||
if v and isinstance(v, basestring):
|
||||
psql_cfg[k] = v
|
||||
pgconn = psycopg2.connect(**psql_cfg)
|
||||
try:
|
||||
for var, time in zip(('total_5m', 'total_1h', 'total_1d'), (time_5m, time_1h, time_1d)):
|
||||
cur = pgconn.cursor()
|
||||
cur.execute('''SELECT COUNT(*) from wcs_all_forms WHERE status != 'draft' AND receipt_time > %(time)s''', {'time': time})
|
||||
locals()[var] += cur.fetchone()[0]
|
||||
except psycopg2.ProgrammingError:
|
||||
pass
|
||||
pgconn.close()
|
||||
|
||||
print 'count_5m.value', total_5m
|
||||
print 'count_1h.value', total_1h
|
||||
print 'count_1d.value', int(total_1d / 1000)
|
Loading…
Reference in New Issue