diff --git a/munin/publik_count b/munin/publik_count new file mode 100755 index 0000000..16d217a --- /dev/null +++ b/munin/publik_count @@ -0,0 +1,45 @@ +#! /usr/bin/env python + +import cPickle +import os +import psycopg2 +import sys + +if len(sys.argv) == 2 and sys.argv[1] == 'autoconf': + print 'yes' + sys.exit(0) + +if len(sys.argv) == 2 and sys.argv[1] == 'config': + print '''graph_title Count of submitted forms +graph_category entrouvert +count.label Count +''' + sys.exit(0) + +total = 0 +base_dir = '/var/lib/machines/wcs.rbx.prod.entrouvert.org/var/lib/wcs/' +for tenant in os.listdir(base_dir): + if tenant in ('collectstatic', 'scripts', 'skeletons'): + 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) + cur = pgconn.cursor() + try: + cur.execute('''SELECT COUNT(*) from wcs_all_forms WHERE status != 'draft' ''') + except psycopg2.ProgrammingError: + pass + else: + total += cur.fetchone()[0] + pgconn.close() + +print 'count.value', total