Part 1 – Tracking Blackboard Activity

This is Part 1 of 2 in this series:

Part 1 – Analyzing the Blackboard Access Logs

Part 2 – Analyzing the Activity Accumulator

 

PREFACE

All users’ actions within the Blackboard application are recorded in Blackboard’s access logs. Each log entry contains information about the user, their environment, the nature of the activity, and the time of the activity. Prior to the release of Blackboard version 9.0 ( versions 6 through 8 ) the httpd logs located under blackboard\logs\httpd contained this information. With the release of Blackboard 9.0 the bb-access-log was introduced located under blackboard\logs\tomcat. In version 9.0 and later the httpd log still exists, but the bb-access-log is more useful to the administrator because it automatically cross-references the session id in the httpd logs and the modperl logs to identify the primary key of the user that performed a given access. In versions 6 through 8 this cross-referencing must be done manually.

 

ANALYZING THE BB-ACCESS-LOG

192.168.90.128 – _5_1 [03/Dec/2010:10:40:21 -0600] “GET /webapps/portal/frameset.jsp?tab_tab_group_id=_2_1&url=%2Fwebapps%2Fblackboard%2Fexecute%2Flauncher%3Ftype%3DCourse%26id%3D_2_1%26url%3D HTTP/1.1” 200 7620 “Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12” 132E22BA1D45421822B981B8326AC471 0.017 17 7620

– The IP address of the user that accessed the page. If in a load balanced environment, this will be the IP of a server and not the user’s PC.

 

192.168.90.128 – _5_1 [03/Dec/2010:10:40:21 -0600] “GET /webapps/portal/frameset.jsp?tab_tab_group_id=_2_1&url=%2Fwebapps%2Fblackboard%2Fexecute%2Flauncher%3Ftype%3DCourse%26id%3D_2_1%26url%3D HTTP/1.1” 200 7620 “Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12” 132E22BA1D45421822B981B8326AC471 0.017 17 7620

– The primary key (pk1) of the user that accessed the page. The primary key of the user can be utilized to determine the username and name of the user by searching the users table in the bb_bb60 or BBLEARN table. For example:

SELECT user_id, firstname, lastname FROM users

Please note that the httpd log does not list users’ primary keys. To determine the user with an httpd log, the session id must be cross-referenced with the modperl log.

 

192.168.90.128 – _5_1 [03/Dec/2010:10:40:21 -0600] “GET /webapps/portal/frameset.jsp?tab_tab_group_id=_2_1&url=%2Fwebapps%2Fblackboard%2Fexecute%2Flauncher%3Ftype%3DCourse%26id%3D_2_1%26url%3D HTTP/1.1” 200 7620 “Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12” 132E22BA1D45421822B981B8326AC471 0.017 17 7620

– The date, time, and time zone when that the page was accessed.

 

192.168.90.128 – _5_1 [03/Dec/2010:10:40:21 -0600] “GET /webapps/portal/frameset.jsp?tab_tab_group_id=_2_1&url=%2Fwebapps%2Fblackboard%2Fexecute%2Flauncher%3Ftype%3DCourse%26id%3D_2_1%26url%3D HTTP/1.1″ 200 7620 “Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12” 132E22BA1D45421822B981B8326AC471 0.017 17 7620

–  The cs-method specified whether the call was a GET or a POST.

 

192.168.90.128 – _5_1 [03/Dec/2010:10:40:21 -0600] “GET /webapps/portal/frameset.jsp?tab_tab_group_id=_2_1&url=%2Fwebapps%2Fblackboard%2Fexecute%2Flauncher%3Ftype%3DCourse%26id%3D_2_1%26url%3D HTTP/1.1” 200 7620 “Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12” 132E22BA1D45421822B981B8326AC471 0.017 17 7620

– The cs-uri-stem is usually the URL or portion of the URL that was accessed. This along with the user’s primary key is the most valuable information contained in a log entry. It is the HTTP call that was made as a result of a user’s access (i.e. clicking a tab or link.) From this example we can tell exactly what the user accessed. By examining “tab_tab_group_id=_2_1” we know that the user clicked on a tab. To determine which tab we can look up the row in the “tab_tab_group” table with a primary key of 2.

SELECT * FROM tab_tab_group WHERE pk1=’2’

The result:

tab_pk1                pk1                          position                  tab_group_pk1

2                              2                              0                              2

From here where know the primary key of the tab and its tab group, which we can in turn look up.

SELECT * FROM tab WHERE pk1=’2’

The “label” field from the returned row is “Courses.label” and tells us that the tab that was clicked was the Courses tab.

The cs-uri-stem will vary greater based on the type of access and may contain more or less detailed information than the above example. However the details of most accesses can be determined either by querying the Blackboard databases, or replicating the access and observing the respective cs-uri-stem for comparison.

 

192.168.90.128 – _5_1 [03/Dec/2010:10:40:21 -0600] “GET /webapps/portal/frameset.jsp?tab_tab_group_id=_2_1&url=%2Fwebapps%2Fblackboard%2Fexecute%2Flauncher%3Ftype%3DCourse%26id%3D_2_1%26url%3D HTTP/1.1” 200 7620Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 132E22BA1D45421822B981B8326AC471 0.017 17 7620

–  The User Agent specifies information regarding the client application that is sending the logging message. This includes their operating system, browser and version, language and dialect, version of the .NET CLR, etc.

 

192.168.90.128 – _5_1 [03/Dec/2010:10:40:21 -0600] “GET /webapps/portal/frameset.jsp?tab_tab_group_id=_2_1&url=%2Fwebapps%2Fblackboard%2Fexecute%2Flauncher%3Ftype%3DCourse%26id%3D_2_1%26url%3D HTTP/1.1” 200 7620 “Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12” 132E22BA1D45421822B981B8326AC471 0.017 17 7620

– The session id of the user that accessed the log. If using a version earlier than 9.0, the session id can cross-referenced in the modperl log to acquire the user’s primary key.

About blackboardcodemonkey
My name is Tony West. I am currently a Blackboard server administrator and software developer for a consortium of universities in the mid-west. I was employed by Blackboard from 2009 – 2010 out of Rochester, New York. I am passionate about application development and administration.

7 Responses to Part 1 – Tracking Blackboard Activity

  1. David CT says:

    Tony,

    Good stuff.

    There’s value in a couple of fields you didn’t mention:

    0.017 17 7620

    First field is the time in seconds that Tomcat took to generate and deliver the data. Second field is the same thing in milliseconds. Third field is the quantity of data sent. I’ve spent a LOT of time running analysis of performance based on the first field and looking at the results of tuning changes. I’ve found it very useful indeed. You have to account for the delivery of large files which throw off averages, but you can for example zero in on the performance of one page (I use tabAction) and see how performance changes as you make changes in your environment.

    • Thank you David – that is valuable information. I personally use external monitoring tools for this purpose. However it would be relatively easy to develop an application to parse these times and access types to give historic reporting.

      • David CT says:

        Exactly. I do something like this (unix):

        perfnum=`grep “$primarysearch” $logtosearch 2> /dev/null | grep “$searchfor” | awk ‘{sum+=$(NF-2);datasum+=$(NF);if ( max<$(NF-2) ){max=$(NF-2)}; if ( $(NF-2) 2 && $(NF-2) 10){np+=1;sum-=$(NF-2)}; } END { avg=((sum)/NR); printf “%2.3f”,avg; print ” “, NR, max, (n+0),(nm+0),(np+0); printf “%2.4f”, 100*((np+0)/NR); print ” “,datasum}’ 2> /dev/null`

        which gives

        Avg Rows Max num<2 2<num10 %num>10 data

        columns for requests that take less than 2 seconds, etc., plus for the sake of the average, throwing out requests that take longer than 10 seconds.

        The advantage is that it eliminates external factors like communication to/from our load balancer. The disadvantage is that it eliminates those external factors and you have to look at them separately.

  2. ScottG says:

    Tony,

    This is a great post explaining each item logged in the bb-access-log file.

    Regarding that in load-balanced environments the load balancer’s IP is being logged in bb-access-log instead of the real client IP address, do you know if there’s a way to log the real client IP address instead of the load balancer’s IP?

    We’re on a Windows 2008 environment. To fix this logging issue in the IIS logs (~blackboard\logs\httpd\), I’ve applied the X-Forwarded-For ISAPI filter that is described and can be downloaded here:
    http://devcentral.f5.com/weblogs/Joe/archive/2009/08/19/x_forwarded_for_log_filter_for_windows_servers.aspx

    (With a slight modification: in step 6, I applied it at the localhost/machine level instead of the specific Blackboard website level since any Blackboard PushConfigUpdates command would remove the ISAPI Filter.)

    But I would love to also be able to log the real client IP additionally in the bb-access-log file too.

    Any ideas?

  3. Dino says:

    Terrific work! This is the kind of information that should be shared across the
    net. Disgrace on the seek engines for not positioning this publish higher!
    Come on over and consult with my site . Thank you =)

  4. alimentares says:

    Somebody essentially help to make seriously articles I’d state. That is the first time I frequented your website page and up to now? I amazed with the research you made to create this particular put up incredible. Wonderful job!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: