|
NAMESquidAnalyzer - Squid access log report generation toolDESCRIPTIONSquidAnalyzer parse native access log format of the Squid proxy and generate general statistics about hits, bytes, users, networks, top url, top second level domain and denied URLs. Common and combined log format are also supported. SquidGuard logs can also be parsed and ACL's redirection reported into denied URLs report.Statistic reports are oriented to user and bandwidth control, this is not a pure cache statistics generator. SquidAnalyzer use flat files to store data and don't need any SQL, SQL Lite or Berkeley databases. This analyzer is incremental so it should be run in a daily cron. Take care if you have rotate log enable to run it before rotation is done. REQUIREMENTNothing is required than a modern perl version 5.8 or higher. Graphics are based on the Flotr2 Javascript library so they are drawn at your browser side without extra installation required.INSTALLATIONGeneric installIf you want the package to be intalled into the Perl distribution just do the following:perl Makefile.PL make make install Follow the instruction given at the end of install. With this default install everything configurable will be installed under /etc/squidanalyzer. The Perl library SquidAnalyzer.pm will be installed under your site_perl directory and the squid-analyzer Perl script will be copied under /usr/local/bin. The default output directory for html reports will be /var/www/squidanalyzer/. On FreeBSD, if make install is freezing and you have the following messages: FreeBSD: Registering installation in the package database FreeBSD: Cannot determine short module description FreeBSD: Cannot determine module description please proceed as follow: perl Makefile.PL INSTALLDIRS=site make make install as the issue is related to an install into the default Perl vendor installdirs it will then use Perl site installdirs. Custom installYou can create your fully customized SquidAnalyzer installation by using the Makefile.PL Perl script. Here is a sample:perl Makefile.PL \ LOGFILE=/var/log/squid3/access.log \ BINDIR=/usr/bin \ CONFDIR=/etc \ HTMLDIR=/var/www/squidreport \ BASEURL=/squidreport \ MANDIR=/usr/man/man3 \ DOCDIR=/usr/share/doc/squidanalyzer If you want to build a distro package, there are two other options that you may use. The QUIET option is to tell to Makefile.PL to not show the default post install README. The DESTDIR is to create and install all files in a package build base directory. For example for Fedora RPM, thing may look like that: # Make Perl and SendmailAnalyzer distrib files %{__perl} Makefile.PL \ INSTALLDIRS=vendor \ QUIET=1 \ LOGFILE=/var/log/squid/access.log \ BINDIR=%{_bindir} \ CONFDIR=%{_sysconfdir} \ BASEDIR=%{_localstatedir}/lib/%{uname} \ HTMLDIR=%{webdir} \ MANDIR=%{_mandir}/man3 \ DOCDIR=%{_docdir}/%{uname}-%{version} \ DESTDIR=%{buildroot} < /dev/null See spec file in packaging/RPM for full RPM build script. Local installYou can also have a custom installation. Just copy the SquidAnalyzer.pm and the squid-analyzer perl script into a directory, copy and modify the configuration file and run the script from here with the -c option.Then copy files sorttable.js, squidanalyzer.css and logo-squidanalyzer.png into the output directory. Post installation1. Modify your httpd.conf to allow access to HTML output like follow:Alias /squidreport /var/www/squidanalyzer <Directory /var/www/squidanalyzer> Options -Indexes FollowSymLinks MultiViews AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.1 </Directory> 2. If necessary, give additional host access to SquidAnalyzer in httpd.conf. Restart and ensure that httpd is running. 3. Browse to http://my.host.dom/squidreport/ to ensure that things are working properly. 4. Setup a cronjob to run squid-analyzer daily or more often: # SquidAnalyzer log reporting daily 0 2 * * * /usr/local/bin/squid-analyzer > /dev/null 2>&1 or run it manually. For more information, see README file. If your squid logfiles are rotated then cron isn't going to give the expected result as there exists a time between when the cron is run and the logfiles are rotated. It would be better to call squid-analyzer from logrotate, eg: /var/log/proxy/squid-access.log { daily compress rotate 730 missingok nocreate sharedscripts postrotate test ! -e /var/run/squid.pid || /usr/sbin/squid -k rotate /usr/bin/squid-analyzer -d -l /var/log/proxy/squid-access.log.1 endscript } You can also use network name instead of network ip addresses by using the network-aliases file. Also if you don't have authentication enable and want to replace client ip addresses by some know user or computer you can use the user-aliases file to do so. See the file squidanalyzer.conf to customized your output statistics and match your network and file system configuration. USAGESquidAnalyzer can be run manually or by cron job using the squid-analyzer Perl script. Here are authorized usage:Usage: squid-analyzer [ -c squidanalyzer.conf ] [logfile(s)] -c | --configfile filename : path to the SquidAnalyzer configuration file. By default: /etc/squidanalyzer/squidanalyzer.conf -b | --build_date date : set the date to be rebuilt, format: yyyy-mm-dd or yyyy-mm or yyyy. Used with -r or --rebuild. -d | --debug : show debug informations. -h | --help : show this message and exit. -j | --jobs number : number of jobs to run at same time. Default is 1, run as single process. -p | --preserve number : used to set the statistic obsolescence in number of month. Older stats will be removed. -P | --pid_dir directory : set directory where pid file will be stored. Default /tmp/ -r | --rebuild : use this option to rebuild all html and graphs output from all data files. -t, --timezone +/-HH : set number of hours from GMT of the timezone. Use this to adjust date/time of SquidAnalyzer output when it is run on a different timezone than the squid server. -v | version : show version and exit. --no-year-stat : disable years statistics, reports will start from month level only. --no-week-stat : disable weekly statistics. Log files to parse can be given as command line arguments or as a comma separated list of file for the LogFile configuration directive. By default SquidAnalyer will use file: /var/log/squid/access.log There is special options like --rebuild that force SquidAnalyzer to rebuild all HTML reports, useful after an new feature or a bug fix. If you want to limit the rebuild to a single day, a single month or year, you can use the --build_date option by specifying the date part to rebuild, format: yyyy-mm-dd, yyyy-mm or yyyy. The --preserve option should be used if you want to rotate your statistics and data. The value is the number of months to keep, older reports and data will be removed from the filesystem. Useful to preserve space, for example: squid-analyzer -p 6 -c /etc/squidanalyzer/squidanalyzer.conf will only preserve six month of statistics from the last run of squidanalyzer. If you have a SquidGuard log you can add it to the list of file to be parsed, either in the LogFile configuration directive log list, either at command line: squid-analyzer /var/log/squid3/access.log /var/log/squid/SquidGuard.log SquidAnalyzer will automatically detect the log format and report SquidGuard ACL's redirection to the Denied Urls report. MULTIPROCESSIf you have huges squid access.log you will be interested by using multiprocess with SquidAnalyzer. Using the -j or --jobs command line option you can force SquidAnalyzer to use as many cores/cpus as wanted.squid-analyzer -j 8 -l /var/log/squid3/huge_access.log Here SquidAnalyzer will use 8 cpus to parse the file and compute all statistics reports. It will also use much more memory at the same time. LOGFORMATSquidAnalyzer supports the following predefined log format:logformat squid %ts.%03tu %6tr %>a %Ss/%03>Hs %<st %rm %ru %un %Sh/%<A %mt logformat common %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st %Ss:%Sh logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh The common and combined log format can have one more field to add mime-type report like with the native squid log format: logformat common %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st %Ss:%Sh %mt logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh %mt Those are the default format used by squid, you can switch to any of the three log format by giving the name at end of the access_log directive: access_log /var/log/squid3/access.log squid or access_log /var/log/squid3/access.log common CONFIGURATIONUnless previous version customization of SquidAnalyzer is now done by a single configuration file squidanalyzer.conf.Here follow the configuration directives used by Squid Analyzer.
SUPPORTRelease annoucementPlease follow us on twitter to receive release annoucement and latest news : https://twitter.com/SquidAnalyzerBugs and Feature requestsPlease report any bugs, patches, discussion and feature request using tools on the git repository at https://github.com/darold/squidanalyzer.How to contribute ?Any contribution to build a better tool is welcome, you just have to send me your ideas, features request or patches using the tools on the git repository at https://github.com/darold/squidanalyzerYou can also support the developper by donate some contribution by clicking on the "Donate" button on the SquidAnalyzer web site at http://squidanalyzer.darold.net/ AUTHORGilles DAROLD <gilles@darold.net>COPYRIGHTCopyright (c) 2001-2016 Gilles DAROLDThis package is free software and published under the GPL v3 or above license.
Visit the GSP FreeBSD Man Page Interface. |