Difference between revisions of "Project:LHS Graphs and Visualizations"

From London Hackspace Wiki
Jump to navigation Jump to search
Line 3: Line 3:
 
I'd like to supplement [http://hack.rs/cacti/graph_view.php?action=tree&tree_id=1 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.
 
I'd like to supplement [http://hack.rs/cacti/graph_view.php?action=tree&tree_id=1 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:
+
Phase 1 is complete and we now [http://hack.rs/cacti/graph_view.php?action=tree&tree_id=5 chart the following]:
 
* Number of members
 
* Number of members
 
* Wiki activity
 
* Wiki activity
Line 12: Line 12:
 
* Space occupancy
 
* Space occupancy
  
==Phase 1==
+
==In progress==
  
'''[http://hack.rs/cacti/graph_view.php?action=tree&tree_id=5 We have graphs for Phase 1]'''
+
====Space occupancy====
 +
* We could use a directional IR occupancy counter. I think that we already have something like this in the LHS stores.
 +
 
 +
==Desired==
 +
 
 +
====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 [http://groups.google.com/support/bin/answer.py?hl=en&answer=46398 mailing list download]
 +
 
 +
====Website visitors and/or page impressions====
 +
The main site and the Wiki use Google Analytics and this has an API. This [http://code.google.com/apis/analytics/docs/gdata/gdataCommonQueries.html 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
 +
 
 +
==Done==
  
 
To chart the initial metrics various bits of data are exposed in a Cacti friendly way.
 
To chart the initial metrics various bits of data are exposed in a Cacti friendly way.
Line 107: Line 123:
 
     print "NaN";
 
     print "NaN";
 
   }
 
   }
 
==Phase 2==
 
 
====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 [http://groups.google.com/support/bin/answer.py?hl=en&answer=46398 mailing list download]
 
 
====Website visitors and/or page impressions====
 
The main site and the Wiki use Google Analytics and this has an API. This [http://code.google.com/apis/analytics/docs/gdata/gdataCommonQueries.html 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 3==
 
 
====Space occupancy====
 
* We could use a directional IR occupancy counter. I think that we already have something like this in the LHS stores.
 

Revision as of 11:17, 15 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.

Phase 1 is complete and we now chart the following:

  • Number of members
  • Wiki activity

Later I'd like to investigate:

  • Website visitors and/or page impressions
  • Mailing list activity
  • Space occupancy

In progress

Space occupancy

  • We could use a directional IR occupancy counter. I think that we already have something like this in the LHS stores.

Desired

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

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

Done

To chart the initial metrics various bits of data are exposed in a Cacti friendly way.

Number of members

COMPLETE - but not very interesting currently.

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;

Cacti runs on babbage but the members database is on Turing. There is a PHP script on Turing to expose the member numbers and then a script on babbage to pull this in with a HTTP request.

This PHP generates the following output for cacti: subscribed:136 pending:2

 <?php
 
 require_once( $_SERVER['DOCUMENT_ROOT'] . '/../lib/init.php'); 
 $subscribers = $db->translatedQuery( 'SELECT COUNT(id) AS num FROM users WHERE subscribed=1' )->fetchRow();
 $pending = $db->translatedQuery( 'SELECT COUNT(id) AS num FROM users WHERE subscribed=0' )->fetchRow();
 
 print "subscribed:{$subscribers['num']} pending:{$pending['num']}";

Perl to fetch member numbers for cacti:

 #!/usr/bin/perl
 
 use strict;
 use LWP::Simple;
 
 eval {
   my $file = get("http://london.hackspace.org.uk/member_stats.php");
   print $file;
   1;
 } or do {
   print "NaN";
 }

Wiki statistics

COMPLETE

  • We get this using the MediaWiki API:
 http://wiki.hackspace.org.uk/w/api.php?action=query&meta=siteinfo&siprop=statistics&format=xml

It 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>

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

 #!/usr/bin/perl
 
 use strict;
 use LWP::Simple;
 use XML::Simple;
 
 eval {
   my $file = get("http://wiki.hackspace.org.uk/w/api.php?action=query&meta=siteinfo&siprop=statistics&format=xml");
   my $xs1 = XML::Simple->new();
   my $doc = $xs1->XMLin($file);
   my $first = 1;
 
   foreach my $key (keys (%{$doc->{query}->{statistics}})){
     if ($first eq 1) {
       $first = 0;
     } else {
       print " ";
     }
     print $key . ":" . $doc->{query}->{statistics}->{$key};
   }
   1;
 } or do {
   print "NaN";
 }