0

Статистика proxy сервера SQUID

Proxy сервер SQUID умеет отдавать статистику запросов. Вообще считаю, что логировать надо как можно больше событий. Никогда не знаешь когда пригодится какая либо информация, поэтому ставлю парсер логов squid.

Мой выбор пал на lightsquid — простой, без базы данных, написан на perl, поэтому встанет на любой сервер.

Nginx

Для этого сначала мне надо установить http сервер. Я буду ставить ставить NGINX, а в принципе подойдет любой.

Приступаю:
# cd /usr/ports && make search name=nginx
Port: nginx-1.0.8,1
Path: /usr/ports/www/nginx
Info: Robust and small WWW server
Maint:
B-deps: pcre-8.13_1
R-deps: pcre-8.13_1
WWW: http://sysoev.ru/nginx/
# cd /usr/ports/www/nginx && make install clean

Затем ставлю fcgiwrap — server для обработки cgi запросов:
# cd /usr/ports && make search name=fcgiwrap
Port: fcgiwrap-1.0.3_3
Path: /usr/ports/www/fcgiwrap
Info: Simple FastCGI wrapper for CGI scripts
Maint:
B-deps: autoconf-2.68 autoconf-wrapper-20101119 fcgi-devkit-2.4.0 m4-1.4.16,1 perl-5.12.4_2
R-deps: fcgi-devkit-2.4.0
WWW: http://nginx.localdomain.pl/wiki/FcgiWrap
# cd /usr/ports/www/fcgiwrap && make install clean

Привожу конфигурационный файл nginx к следующему виду:

user  www www;
worker_processes  1;
pid        /var/run/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        charset koi8-r;
        access_log      /www/_logs/localhost/access.log;
        error_log       /www/_logs/localhost/error.log;

        location / {
            root   /www/localhost;
            index  index.cgi index.html index.htm;
        }
        location ~ ^/lightsquid/(.*).cgi$ {
            fastcgi_pass   unix:/var/run/fcgiwrap/fcgiwrap.sock;
            fastcgi_index  index.cgi;
            fastcgi_param  SCRIPT_FILENAME  /www/localhost$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
}

Далее создаю необходимые директории и даю пользователю www на них права. Так же создаю /www/localhost/index.html.

Прописываю nginx в rc.conf:
# echo nginx_enable="YES" >> /etc/rc.conf
# /usr/local/etc/rc.d/nginx start

Теперь можно проверить работу, обратившись в браузере к серверу.

Lightsquid

Ставлю lightsquid:
# cd /usr/ports/www/lightsquid && make install clean

Приступаю к настройке lightsquid — правлю /usr/local/etc/lightsquid/lightsquid.conf
Оставил его практически без изменений. А что касается изменений, то:

#path to additional `cfg` files
$cfgpath             ="/usr/local/etc/lightsquid";
#path to `tpl` folder
$tplpath             ="/www/localhost/lightsquid/tpl";
#path to `lang` folder
$langpath            ="/usr/local/share/lightsquid/lang";
#path to `report` folder
$reportpath          ="/www/localhost/lightsquid/report";
#path to access.log
$logpath             ="/var/log/squid";

Переношу скрипты lightsquid в свою рабочую www директорию.
# mv /usr/local/www/lightsquid /www/localhost

Теперь ставлю сбор статистики в cron раз в час, так как мне чаще и не надо.
# crontab -e
# 00 * * * 1-5 /www/localhost/lightsquid/lightparser.pl

После этого пойду спокойно домой и завтра посмотрю что накопилось в логах за день. Или буду разбирать ошибки. По идее все должно работать.

Останется, как обычно, доработка напильником.

Alexey Egorychev

FreeBSD and Linux sysadmin. Know many systems like mailsystems, DB, WWW stack. Automation with salt, ansible. Monitoring with nagios, zabbix.