Project:LHS Graphs and Visualizations: Difference between revisions
Line 21: | Line 21: | ||
====Number of members==== | ====Number of members==== | ||
This data is stored in | This data is stored in an Sqlite database on [[Turing]]. See the [https://github.com/londonhackspace/hackspace-foundation-sites/blob/master/etc/schema.sql Schema]. It can be queried like so: | ||
SELECT COUNT(id) | SELECT COUNT(id) | ||
Line 42: | Line 42: | ||
GROUP BY t1.timestamp; | GROUP BY t1.timestamp; | ||
This bash script will generate the following cacti output: '''<tt>subscribed:136 pending:2</tt>''' | |||
#!/bin/sh | |||
DATABASE=<file.db> | |||
// | SUBSCRIBED=`sqlite lhs.db "select count(id) from users where subscribed = 'true';"` | ||
PENDING=`sqlite lhs.db "select count(id) from users where subscribed = 'false';"` | |||
echo "subscribed:"$SUBSCRIBED" pending:"$PENDING | |||
====Mailing list activity==== | ====Mailing list activity==== |
Revision as of 12:03, 14 December 2010
LHS Graphs and Visualizations
| |
---|---|
Members | Elliot |
QR code |
Overview
I'd like to supplement the Cacti graphs that we have for LHS bandwidth and power with metrics that provide insight to the growth of our community and organisation over time.
Initially I'd like to chart the following:
- Number of members
- Mailing list activity
- Wiki activity
- Website visitors and/or page impressions
Later I'd like to investigate:
- Space occupancy
Phase 1
To chart the initial metrics various bits of data will need to be exposed in a Cacti friendly way. I need help in getting access to these data sources so that I can write the various data input methods.
Number of members
This data is stored in an Sqlite database on Turing. See the Schema. It can be queried like so:
SELECT COUNT(id) FROM users WHERE subscribed = true;
And for pending users:
SELECT COUNT(id) FROM users WHERE subscribed = false;
To import historic data into rrdtool we can look at the date of members first payments:
SELECT t1.timestamp, COUNT(t1.id) FROM transactions t1 LEFT JOIN transactions AS t2 ON t1.user_id = t2.user_id AND t1.timestamp > t2.timestamp WHERE t2.timestamp IS NULL GROUP BY t1.timestamp;
This bash script will generate the following cacti output: subscribed:136 pending:2
#!/bin/sh DATABASE=<file.db> SUBSCRIBED=`sqlite lhs.db "select count(id) from users where subscribed = 'true';"` PENDING=`sqlite lhs.db "select count(id) from users where subscribed = 'false';"` echo "subscribed:"$SUBSCRIBED" pending:"$PENDING
Mailing list activity
- There is no API for Google Groups. Perhaps poll the RSS feed and count unrecognized message ids or look at the date?
https://groups.google.com/group/london-hack-space/feed/rss_v2_0_msgs.xml?num=50
- We can also calculate the size of the list (members) from the mailing list download
Wiki statistics
- We can get this using the MediaWiki API:
http://wiki.hackspace.org.uk/w/api.php?action=query&meta=siteinfo&siprop=statistics&format=xml
Returns:
<?xml version="1.0"?> <api> <query> <statistics pages="759" articles="215" views="229656" edits="7368" images="186" users="166" activeusers="22" admins="61" jobs="13" /> </query> </api>
And the perl to generate the following output for cacti:
pages:759 articles:215 views:229656 edits:7368 images:186 users:166 activeusers:22 admins:61 jobs:13
Is:
// TODO: Write the perl script
Website visitors and/or page impressions
The main site and the Wiki use Google Analytics and this has an API. This documented method looks promising:
https://www.google.com/analytics/feeds/data?metrics=ga%3Avisits%2Cga%3Apageviews&start-date=2010-11-29&end-date=2010-12-13&max-results=50
Phase 2
Space occupancy
- We could use a directional IR occupancy counter. I think that we already have something like this in the LHS stores.