Skip to main content

Web Statistics and Analytics Package

Project description

Web Statistics and Analytics

This package produces web statistics and analytical output based on nginx access log files.

PyPI package version number Actions Status License

Downloads Python

Live Examples

Visit the live examples on logikfabrik.com.

Installation

pip install a9x-webstatistics

Requirements on Linux / Unix

  • access log file from web server
    • standard access log file from nginx, freenginx or apache
    • access log file in json format
  • python3.9 onwards
  • optional: maxmind db which need to be download by end user after registration

Deployment on Linux / Unix

#!/bin/sh

export LOG=/usr/local/www/webstats.log
export PATH=/usr/local/www/django5/envpy311/bin:$PATH

python3.11 -m a9x_webstatistics.main \
   --infile /var/log/nginx-access.log \
   --geoip /usr/local/share/GeoIP/GeoLite2-Country.mmdb \
   --domain https://www.logikfabrik.com \
   --statfile /usr/local/www/lf_static/webstatsLF24.json &> $LOG

python3.11 -m a9x_webstatistics.gencockpit \
   --infile /usr/local/www/lf_static/webstatsLF24.json \
   --outfile /usr/local/www/lf_static/webstatsLF24.html &>> $LOG

Cron-Job Entry for Linux / FreeBSD:

#minute hour    mday    month   wday    who     command
13,58   *       *       *       *       dj1     /usr/local/www/cronjobs/cron_webstatistics.sh

Installation on Windows

# install on windows:

## install a virtual env for python
python -m venv c:\temp\webstatsenv

## activate env
c:\temp\webstatsenv\Scripts\activate.bat

## install a9x-webstatistics
pip install a9x-webstatistics
python -m pip install --upgrade pip
python -m pip list

Deployment on Windows

# run
c:
cd \temp
wget -URI https://www.logikfabrik.com/wlog/access.log -OutFile access.log

## active env
c:\temp\webstatsenv\Scripts\activate.bat

## create calculate statistics
## there are no country statistics created as not geoip defined
python -m a9x_webstatistics.main --infile access.log --statfile webstatsLF.json

## create html file for webstatistics
python -m a9x_webstatistics.gencockpit --infile webstatsLF.json --outfile webstatsLF.html

Extended Example

#!/bin/sh

export LOG=/usr/local/www/webstats.log
export PATH=/usr/local/www/django5/envpy311/bin:$PATH

_YEARNUM="$(date +'%Y')";
_MONTHNUM="$(date +'%m')";

# make a archive copy for every month:
cp /usr/local/www/lf_static/webstatsLF24.json /usr/local/www/lf_static/webstatsLF24$_YEARNUM$_MONTHNUM.json
cp /usr/local/www/lf_static/webstatsLF24.html /usr/local/www/lf_static/webstatsLF24$_YEARNUM$_MONTHNUM.html

# updates all packages:
pip install -U `pip list --outdated | awk 'NR > 2 {print $1}'` >> $LOG


python3.11 -m a9x_webstatistics.main \
   --infile /var/log/nginx-access.log \
   --geoip /usr/local/share/GeoIP/GeoLite2-Country.mmdb \
   --domain https://www.logikfabrik.com \
   --statfile /usr/local/www/lf_static/webstatsLF24.json &> $LOG

python3.11 -m a9x_webstatistics.gencockpit \
   --infile /usr/local/www/lf_static/webstatsLF24.json \
   --outfile /usr/local/www/lf_static/webstatsLF24.html &>> $LOG

Supported Access Log Formats

Nginx Combined Format

predefined combined format: access_log /.../logs/nginx-access.log combined;

Nginx Json Format

log_format a9x_logs escape=json '{'
  '"tl":"$time_local",'
  '"ip":"$remote_addr",'                 # must; client IP
  '"rq":"$request_uri",'                 # must; full original request URI (with arguments)
  '"qs":"$query_string",'                # optional
  '"st":"$status",'                      # must; response status code
  '"ru":"$remote_user",'                 # optional; client HTTP username
  '"bs":"$bytes_sent", '                 # must; the number of bytes sent to a client
  '"rf":"$http_referer",'                # optional;
  '"rt":"$upstream_response_time", '     # optional; time spend receiving upstream body
  '"sc":"$scheme", '                     # optional; http or https
  '"ua":"$http_user_agent",'             # optional
  '"cs":"$upstream_cache_status",'       # optional
  '"al":"$http_accept_language",'        # optional
'}';

access_log     /.../log/nginx-access-log.json a9x_logs buffer=1k;

Apache Combined Format

CustomLog /.../log/apache2/apache_access.log combined

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

a9x_webstatistics-1.9.3b3.tar.gz (388.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

a9x_webstatistics-1.9.3b3-py3-none-any.whl (80.6 kB view details)

Uploaded Python 3

File details

Details for the file a9x_webstatistics-1.9.3b3.tar.gz.

File metadata

  • Download URL: a9x_webstatistics-1.9.3b3.tar.gz
  • Upload date:
  • Size: 388.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for a9x_webstatistics-1.9.3b3.tar.gz
Algorithm Hash digest
SHA256 d139fcf8c5351022478df8d236d01b4bb4573cfdf683b89761a9f98ffdf732de
MD5 cd338e0479e79c87a1df77e820575879
BLAKE2b-256 d1cf8d68899c5a2034828135e3f6558619d90ce418b22248505d5b9c99fe4411

See more details on using hashes here.

File details

Details for the file a9x_webstatistics-1.9.3b3-py3-none-any.whl.

File metadata

File hashes

Hashes for a9x_webstatistics-1.9.3b3-py3-none-any.whl
Algorithm Hash digest
SHA256 d761d3ae09aba0ac8cb0b571b2c5a2feb9bbef95979ea90ff6a0e2592eff481c
MD5 b668a7761d54040d7b5f27d1ca2a076e
BLAKE2b-256 51f003ed0302c3ca4f741093a7fc88cb8fe86a4f418d4a24be629e8cb9e93a85

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page