asql is a simple console shell which allows you to run SQL queries against an Apache logfile, something that can be very useful - especially at getting information which is not easily available via static logfile analysers.
The links below should allow you to download the code in your preferred form:
- asql-1.7.tar.gz.asc -1k (GPG signature which may be validated using my GPG key).
In terms of requirements you will need only the Perl modules for working with SQLite database, and the Term::Readline module. Upon a Debian system you may install both via:apt-get install libdbd-sqlite3-perl libterm-readline-gnu-perl
Once installed, either via the package or via the source download, please start the shell by typing "asql".
Once the shell starts you have several commands available to you, enter help for a complete list. The three most commonly used commands would be:
This will load an Apache logfile into the temporary database which is created at startup. Single files, or globs are accepted so you may run something like this:load /var/log/apache2/acces*
To save time parsing the input files more than once you may saving the resulting database with save and later restore it.
This allows you to run an actual query.
This shows the table structure the logfile was parsed into.
The following sample session provides a demonstration of typical usage of the shell, it demonstrates the use of the alias command which may be used to create persistent aliases:asql v0.6 - type 'help' for help. asql> load /home/skx/hg/engaging/logs/access.log Loading: /home/skx/hg/engaging/logs/access.log sasql> select COUNT(id) FROM logs 46 asql> alias hits SELECT COUNT(id) FROM logs ALIAS hits SELECT COUNT(id) FROM logs asql> alias ips SELECT DISTINCT(source) FROM logs; ALIAS ips SELECT DISTINCT(source) FROM logs; asql> hits 46 asql> alias ALIAS hits SELECT COUNT(id) FROM logs ALIAS ips SELECT DISTINCT(source) FROM logs;
(User-input is in bold for emphasis)
More examples may be found in the included README.