Chartbeat – traffic analysis¶
Chartbeat provides real-time analytics to websites and blogs. It shows visitors, load times, and referring sites on a minute-by-minute basis. The service also provides alerts the second your website crashes or slows to a crawl.
Installation¶
To start using the Chartbeat integration, you must have installed the
django-analytical package and have added the analytical
application
to INSTALLED_APPS
in your project settings.py
file.
See Installation and configuration for details.
Next you need to add the Chartbeat template tags to your templates. This
step is only needed if you are not using the generic
analytical.*
tags. If you are, skip to
Configuration.
The Chartbeat tracking code is inserted into templates using template
tags. At the top of the template, load the chartbeat
template
tag library. Then insert the chartbeat_top
tag at the top of
the head section, and the chartbeat_bottom
tag at the bottom of
the body section:
{% load chartbeat %}
<html>
<head>
{% chartbeat_top %}
...
{% chartbeat_bottom %}
</body>
</html>
Because these tags are used to measure page loading time, it is important to place them as close as possible to the start and end of the document.
Configuration¶
Before you can use the Chartbeat integration, you must first set your User ID.
Setting the User ID¶
Your Chartbeat account has a unique User ID. You can find your User ID by visiting the Chartbeat Add New Site page. The second code snippet contains a line that looks like this:
var _sf_async_config={uid:XXXXX,domain:"YYYYYYYYYY"};
Here, XXXXX
is your User ID. Set CHARTBEAT_USER_ID
in the
project settings.py
file:
CHARTBEAT_USER_ID = 'XXXXX'
If you do not set a User ID, the tracking code will not be rendered.
Internal IP addresses¶
Usually you do not want to track clicks from your development or
internal IP addresses. By default, if the tags detect that the client
comes from any address in the CHARTBEAT_INTERNAL_IPS
setting,
the tracking code is commented out. It takes the value of
ANALYTICAL_INTERNAL_IPS
by default (which in turn is
INTERNAL_IPS
by default). See Identifying authenticated users for
important information about detecting the visitor IP address.
Setting the domain¶
The Javascript tracking code can send the website domain to Chartbeat.
If you use multiple subdomains this enables you to treat them as one
website in Chartbeat. If your project uses the sites framework, the
domain name of the current Site
will be passed to Chartbeat automatically. You can modify this behavior
using the CHARTBEAT_AUTO_DOMAIN
setting:
CHARTBEAT_AUTO_DOMAIN = False
Alternatively, you set the domain through the chartbeat_domain
context variable when you render the template:
context = RequestContext({'chartbeat_domain': 'example.com'})
return some_template.render(context)
It is annoying to do this for every view, so you may want to set it in
a context processor that you add to the
TEMPLATE_CONTEXT_PROCESSORS
list in settings.py
:
def chartbeat(request):
return {'chartbeat_domain': 'example.com'}
The context domain overrides the domain from the current site. If no domain is set, either explicitly or implicitly through the sites framework, then no domain is sent, and Chartbeat will detect the domain name from the URL. If your website uses just one domain, this will work just fine.
Thanks go to Chartbeat for their support with the development of this application.