Install SquidAnalyzer for Squid Log Analysis on CentOS 7

Install SquidAnalyzer for Squid Log Analysis on CentOS 7

SquidAnalyzer is a log analyzer for Squid proxy server. SquidAnalyzer generates and provides analytical reports via a web-based interface. SquidAnalyzer is free and open source. SquidAnalyzer is distributed under GNU GPL license.

We have installed Squid proxy server on CentOS 7 in our previous article. Now, we are installing SquidAnalyzer for Squid log analysis on the same CentOS 7 server to have a analytical view of Squid logs.

 

This Article Provides:

     

    Environment Specification:

    We have provisioned a CentOS 7 virtual machine with following specification.

    • CPU - 3.4 Ghz (1 Core)
    • Memory - 1 GB
    • Storage - 20 GB
    • Operating System - CentOS 7.7
    • Hostname - squid-proxy-01.example.com
    • IP Address - 192.168.116.214/24

     

    Installing SquidAnalyzer Prerequisites on CentOS 7:

    SquidAnalyzer is a web based software therefore, we are required to install a web server to deploy and run SquidAnalyzer.

    Install Apache HTTP Server using yum command.

    [root@squid-proxy-01 ~]# yum install -y httpd
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    * base: mirrors.ges.net.pk
    * extras: mirrors.ges.net.pk
    * updates: mirrors.ges.net.pk
    Resolving Dependencies
    --> Running transaction check
    ---> Package httpd.x86_64 0:2.4.6-90.el7.centos will be installed
    --> Processing Dependency: /etc/mime.types for package: httpd-2.4.6-90.el7.centos.x86_64
    --> Running transaction check
    ---> Package mailcap.noarch 0:2.1.41-2.el7 will be installed
    --> Finished Dependency Resolution

    Dependencies Resolved

    ================================================================================
    Package Arch Version Repository Size
    ================================================================================
    Installing:
    httpd x86_64 2.4.6-90.el7.centos base 2.7 M
    Installing for dependencies:
    mailcap noarch 2.1.41-2.el7 base 31 k

    Transaction Summary
    ================================================================================
    Install 1 Package (+1 Dependent package)

    Total download size: 2.7 M
    Installed size: 9.4 M
    Downloading packages:
    (1/2): mailcap-2.1.41-2.el7.noarch.rpm | 31 kB 00:01
    (2/2): httpd-2.4.6-90.el7.centos.x86_64.rpm | 2.7 MB 00:05
    --------------------------------------------------------------------------------
    Total 519 kB/s | 2.7 MB 00:05
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
    Installing : mailcap-2.1.41-2.el7.noarch 1/2
    Installing : httpd-2.4.6-90.el7.centos.x86_64 2/2
    Verifying : mailcap-2.1.41-2.el7.noarch 1/2
    Verifying : httpd-2.4.6-90.el7.centos.x86_64 2/2

    Installed:
    httpd.x86_64 0:2.4.6-90.el7.centos

    Dependency Installed:
    mailcap.noarch 0:2.1.41-2.el7

    Complete!

    SquidAnalyzer also requires perl compiler for installation.

    Install perl packages using yum command.

    [root@squid-proxy-01 ~]# yum install -y perl perl-devel
    ...
    Installed:
    perl-devel.x86_64 4:5.16.3-294.el7_6

    Dependency Installed:
    gdbm-devel.x86_64 0:1.10-8.el7
    glibc-devel.x86_64 0:2.17-292.el7
    glibc-headers.x86_64 0:2.17-292.el7
    kernel-headers.x86_64 0:3.10.0-1062.1.2.el7
    libdb-devel.x86_64 0:5.3.21-25.el7
    perl-ExtUtils-Install.noarch 0:1.58-294.el7_6
    perl-ExtUtils-MakeMaker.noarch 0:6.68-3.el7
    perl-ExtUtils-Manifest.noarch 0:1.61-244.el7
    perl-ExtUtils-ParseXS.noarch 1:3.18-3.el7
    perl-Test-Harness.noarch 0:3.28-3.el7
    pyparsing.noarch 0:1.5.6-9.el7
    systemtap-sdt-devel.x86_64 0:4.0-9.el7

    Complete!

    We are also required git command to clone the SquidAnalyzer source from GitHub.

    [root@squid-proxy-01 ~]# yum install -y git
    ...
    Installed:
    git.x86_64 0:1.8.3.1-20.el7

    Dependency Installed:
    perl-Error.noarch 1:0.17020-2.el7 perl-Git.noarch 0:1.8.3.1-20.el7
    perl-TermReadKey.x86_64 0:2.30-20.el7 rsync.x86_64 0:3.1.2-6.el7_6.1

    Complete!

     

    Installing SquidAnalyzer on CentOS 7:

    Download the source code of SquidAnalyzer using git command.

    [root@squid-proxy-01 ~]# cd /var/www
    [root@squid-proxy-01 www]# git clone https://github.com/darold/squidanalyzer
    Cloning into 'squidanalyzer'...
    remote: Enumerating objects: 2064, done.
    remote: Total 2064 (delta 0), reused 0 (delta 0), pack-reused 2064
    Receiving objects: 100% (2064/2064), 1.44 MiB | 640.00 KiB/s, done.
    Resolving deltas: 100% (1309/1309), done.

    Compile SquidAnalyzer from source code.

    [root@squid-proxy-01 www]# cd squidanalyzer/
    [root@squid-proxy-01 squidanalyzer]# perl Makefile.PL
    which: no bzcat in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
    Checking if your kit is complete...
    Looks good
    Writing Makefile for SquidAnalyzer
    Done...

    Now type 'make && make install'

    Installing SquidAnalyzer as follows.

    [root@squid-proxy-01 squidanalyzer]# make && make install
    cp SquidAnalyzer.pm blib/lib/SquidAnalyzer.pm
    cp squid-analyzer blib/script/squid-analyzer
    /usr/bin/perl -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/squid-analyzer
    Manifying blib/man3/SquidAnalyzer.3pm

    Installing /usr/local/share/perl5/SquidAnalyzer.pm
    sh install_all.sh

    -----------------------------------------------------------------------------
    1. 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:

    # 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.
    -----------------------------------------------------------------------------

    Appending installation info to /usr/lib64/perl5/perllocal.pod

    Edit Apache configuration to add SquidAnalyzer website.

    [root@squid-proxy-01 squidanalyzer]# cd
    [root@squid-proxy-01 ~]# vi /etc/httpd/conf.d/squidanalyzer.conf

    Add following directives in configuration file.

    Alias /squidreport /var/www/squidanalyzer
    <Directory /var/www/squidanalyzer>
    Options -Indexes +FollowSymLinks +MultiViews
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 192.168.116.0/24
    </Directory>

    Enable and start httpd.service.

    [root@squid-proxy-01 ~]# systemctl enable --now httpd
    Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

    Allow HTTP service in CentOS 7 firewall.

    [root@squid-proxy-01 ~]# firewall-cmd --permanent --add-service=http
    success
    [root@squid-proxy-01 ~]# firewall-cmd --reload
    success

    By default the log file location, provided in squidanalyzer.conf file is incorrect according to our Linux distro. Therefore, we need to correct it before moving forward.

    [root@squid-proxy-01 ~]# grep LogFile /etc/squidanalyzer/squidanalyzer.conf
    LogFile /var/log/squid3/access.log
    [root@squid-proxy-01 ~]# sed -i 's/squid3/squid/' /etc/squidanalyzer/squidanalyzer.conf
    [root@squid-proxy-01 ~]# grep LogFile /etc/squidanalyzer/squidanalyzer.conf
    LogFile /var/log/squid/access.log

    Configure a Cron job for SquidAnalyzer to generate analytical reports.

    [root@squid-proxy-01 ~]# crontab -e

    add following lines therein.

    # SquidAnalyzer log reporting daily
    0 2 * * * /usr/local/bin/squid-analyzer > /dev/null 2>&1

    We have to explicitly execute squid-analyzer command one time to generate reports in /var/www/squidanalyzer directory.

    [root@squid-proxy-01 ~]# /usr/local/bin/squid-analyzer

    Browse URL http://squid-proxy-01.example.com/squidreport in a client's browser.

    01-install-squidanalyzer-global-stats

    02-install-squidanalyzer-cache-stats

    03-install-squidanalyzer-top-100-url

     

    Configure HTTP Basic Authentication for SquidAnalyzer:

    SquidAnalyzer does not provides a native authentication method.

    Since the SquidAnalyzer running as a web application, therefore, we can utilize the HTTP basic authentication to restrict the access to SquidAnalyzer website.

    Install httpd-tools using yum command.

    [root@squid-proxy-01 ~]# yum install -y httpd-tools
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    * base: mirrors.ges.net.pk
    * extras: mirrors.ges.net.pk
    * updates: mirrors.ges.net.pk
    Package httpd-tools-2.4.6-90.el7.centos.x86_64 already installed and latest version
    Nothing to do

    Nothing to do! because, we have already installed httpd-tools during installation of Squid proxy server on CentOS 7.

    Create a password file for SquidAnalyzer and add squidadmin user therein.

    [root@squid-proxy-01 ~]# htpasswd -c /etc/squidanalyzer/passwd squidadmin
    New password:
    Re-type new password:
    Adding password for user squidadmin

    Edit Apache configurations to add HTTP basic authentication.

    [root@squid-proxy-01 ~]# vi /etc/httpd/conf.d/squidanalyzer.conf

    Add HTTP basic authentication for SquidAnalyzer. Final configuration should be look like this.

    Alias /squidreport /var/www/squidanalyzer
    <Directory /var/www/squidanalyzer>
    Options -Indexes +FollowSymLinks +MultiViews
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 192.168.116.0/24
    AuthType Basic
    AuthName "Restricted Content"
    AuthUserFile /etc/squidanalyzer/passwd
    Require valid-user
    </Directory>

    Test Apache configuration files for syntax errors.

    [root@squid-proxy-01 ~]# httpd -t
    Syntax OK

    Restart Apache service to take changes in effect.

    [root@squid-proxy-01 ~]# systemctl restart httpd.service

    Browse URL http://squid-proxy-01.example.com/squidreport in a client's browser.

    04-install-squidanalyzer-user-authentication

    Now, it requires user authentication for access to SquidAnalyzer website.

    We have successfully installed and configured SquidAnalyzer for Squid log analysis on CentOS 7.

    0 Comments