Помнится мне когда я был еще совсем начинающий системный администратор (Привет коллегам из Лексус Центр Измайлово), Еще один анализатор статистикито также как на текущем месте работы за работой сотрудников в интернет пользовании следил SQUID, а для анализа и статистики я поначалу использовал sarg, но однажды коллеги из другого офиса навели на мысль, а почему бы не попробовать более легкий и быстрый вариант формирования лог файлов в виде Web-отчета. Тогда еще я здорово намучался настраивать на FreeBSD утилиту free-sa о которой пойдет речь в текущей заметки, но это было тогда. Теперь же поднабравшись опыта работы я переделал все то ранее что у меня было через sarg, применительно к утилите именуемой, как Free-SA но настроенной на Ubuntu 12.04.5 Server amd64

Данная заметка будет представлять пошаговый мануал (врочем как всегда все на моем блоге) который я составлял применительно к своей ситуации: пользователи — squid — интернет, и еще одна система на которую я копирую логи squid и настраиваю обработчик логов. Почему же спросят многие я не использую все на одном сервере, отвечу — я не хочу пока трогать систему со squid’ом, настраивал ее не я, я бывший коллега экспериментатор, где все что было до меня я почти передал и задокументировал для коллег которые сейчас у меня в подчинении.

Ниже шаги проделанные мною на другой системе отличной от сервера squid:

Обновляю систему до актуального состояния текущего релиза:

ekzorchik@srv-mon:~$ sudo apt-get update && sudo apt-get upgrade -y

Устанавливаю необходимые утилиты:

ekzorchik@srv-mon:~$ sudo apt-get install build-essential gcc lftp -y

Время и часовой пояс:

ekzorchik@srv-mon:~$ sudo ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime

Локаль:

ekzorchik@srv-mon:~$ sudo locale-gen ru_RU

ekzorchik@srv-mon:~$ sudo locale-gen ru_RU.UTF8

ekzorchik@srv-mon:~$ sudo dpkg-reconfigure locales

ekzorchik@srv-mon:~$ sudo nano /etc/profile

export LC_ALL="en_US.UTF-8"

Загружаю настройки профиля:

ekzorchik@srv-mon:~$ source /etc/profile

Apparmor отключаю:

IPv6 отключаю:

Ставлю пакет LAMP:

ekzorchik@srv-mon:~$ sudo tasksel install lamp-server

Скачиваю пакет free-sa с официального сайта разработчика:

ekzorchik@srv-mon:~$ wget http://downloads.sourceforge.net/project/free-sa/free-sa-dev/2.0.0b6p7/free-sa-2.0.0b6p7.tar.gz

Распаковываю скачанный архив:

ekzorchik@srv-mon:~$ tar zxvf free-sa-2.0.0b6p7.tar.gz

ekzorchik@srv-mon:~$ mv free-sa-2.0.0b6p7 free-sa

ekzorchik@srv-mon:~$ nano free-sa/global.mk

OSTYPE = ubuntu-i586-gcc4

ekzorchik@srv-mon:~$ cd free-sa/

ekzorchik@srv-mon:~/free-sa$ make

ekzorchik@srv-mon:~/free-sa$ sudo make install

в выводе обнаружил

l_squid_native.c:1:0: error: CPU you selected does not support x86-64 instruction set

Я не внимателен, нужно вместо:

OSTYPE = ubuntu-i586-gcc4

указать:

OSTYPE = ubuntu-x86_64-gcc4

Я же совсем забыл, что моя система amd64, а не x86

ekzorchik@srv-mon:~/free-sa$ sudo make install

global.mk:26: configs/ubuntu-x86_64-gcc4.mk: No such file or directory

make: *** No rule to make target `configs/ubuntu-x86_64-gcc4.mk’. Stop.

Значит указываю, предварительно удалив символ комментария перед этой строкой:

OSTYPE = generic-any-cc

Компилирую приложение:

ekzorchik@srv-mon:~/free-sa$ sudo make install

ekzorchik@srv-mon:~/free-sa$ sudo make release

ekzorchik@srv-mon:~/free-sa$ whereis free-sa

free-sa: /etc/free-sa /usr/local/bin/free-sa /usr/local/etc/free-sa /usr/share/free-sa /usr/share/man/man1/free-sa.1

Текущая версия установленного приложения free-sa в системе:

ekzorchik@srv-mon:~$ sudo free-sa -v | head -n 1

Free-SA 2.0.0b6p7 (http://free-sa.sourceforge.net)

ekzorchik@srv-mon:~/free-sa$ cd ~/

Создаю каталог с логами squid:

ekzorchik@srv-mon:~$ sudo mkdir /var/log/squid

Копирую файлы логов squid’а с SQUID сервера:

ekzorchik@srv-mon:~$ sudo su -

root@srv-mon:~# lftp sftp://root:<PASSWORD>@<IP_ADDRESS_SQUID'a> -p 22 -e 'mirror -e /var/log/squid/ /var/log/squid;bye;'

Total: 1 directory, 49 files, 0 symlinks

New: 49 files, 0 symlinks

449524920 bytes transferred in 28 seconds (15.30M/s)

root@srv-mon:~# xz -d /var/log/squid/access.log*.xz

Создаю сайт для Web-сервера, чтобы в последствии заходить на URL вида: http://IP&DNS/free-sa

ekzorchik@srv-mon:~$ sudo nano /etc/apache2/sites-available/free-sa.conf

<virtualhost *:80>

ServerAdmin webmaster@localhost

ServerName srv-mon

ServerAlias sarg

DirectoryIndex index.html

DocumentRoot /var/www/free-sa/

LogLevel warn

ErrorLog /var/www/free-sa/log/error.log

CustomLog /var/www/free-sa/log/access.log combined

</virtualhost>

ekzorchik@srv-mon:~$ sudo a2ensite free-sa.conf

ekzorchik@srv-mon:~$ sudo service apache2 reload

ekzorchik@srv-mon:~$ sudo mkdir -p /var/www/free-sa/log

ekzorchik@srv-mon:~$ sudo chown -R www-data:www-data /var/www/free-sa/

Далее создаю как обычно резервную копию дефолтного конфигурационного файла:

ekzorchik@srv-mon:~$ sudo cp /usr/local/etc/free-sa/free-sa.conf.sample /usr/local/etc/free-sa/free-sa.conf

Настраиваю конфиг для своих нужд:

ekzorchik@srv-mon:~$ sudo nano /usr/local/etc/free-sa/free-sa.conf

# Месторасположение конфигурационного файла

configuration_name="/usr/local/etc/free-sa/free-sa.conf"

# каталог Web-сервера где будет формироваться обработанная статистика

target_directory="/var/www/free-sa"

# путь к местонахождения журнала работы squid

log_file="/var/log/squid/access.log"

# файл сопоставления IP адрес и учетная запись(пользователь)

username_file="/etc/free-sa/usertab"

# преобразовывать IP → в DNS

username_resolve_ip="yes"

# Дефолтные фильтры

local_filter="/usr/local/etc/free-sa/HTTP_proxy_auth_failures.filter.sample"

local_filter="/usr/local/etc/free-sa/HTTP_site_auth_failures.filter.sample"

local_filter="/usr/local/etc/free-sa/HTTP_proxy_denied.filter.sample"

local_filter="/usr/local/etc/free-sa/HTTP_site_denied.filter.sample"

local_filter="/usr/local/etc/free-sa/HTTP_CONNECT_method.filter.sample"

local_filter="/usr/local/etc/free-sa/HTTP_PUT+POST_method.filter.sample"

local_filter="/usr/local/etc/free-sa/HTTP_downloads.filter.sample"

local_filter="/usr/local/etc/free-sa/HTTP_downloads_archives.filter.sample"

local_filter="/usr/local/etc/free-sa/HTTP_downloads_audio.filter.sample"

local_filter="/usr/local/etc/free-sa/HTTP_downloads_cddvd.filter.sample"

local_filter="/usr/local/etc/free-sa/HTTP_downloads_code.filter.sample"

local_filter="/usr/local/etc/free-sa/HTTP_downloads_office.filter.sample"

local_filter="/usr/local/etc/free-sa/HTTP_downloads_video.filter.sample"

local_filter="/usr/local/etc/free-sa/HTTP_unusual_methods.filter.sample"

local_filter="/usr/local/etc/free-sa/HTTP_unusual_codes.filter.sample"

users_excess=""

users_report="yes"

users_show_ips="yes"

reports_bytes_divisor="M"

reports_indicators="yes"

reports_overwrite="1"

reports_url_limit="50"

top_sites_report="yes"

На заметку: если нужно вывести все пераметры без символа комментария, то используем следующую команду: ekzorchik@srv-mon:~$ cat /usr/local/etc/free-sa/free-sa.conf | grep -v '\#'

ekzorchik@srv-mon:~$ sudo nano /etc/free-sa/usertab

# через пробел

10.7.8.10 Kassa

10.7.8.187 Sklad

10.7.8.44 Bar

10.7.8.41 Dep.Ceh

10.7.8.97 Reception

10.7.8.147 Diagnost

Проверяю, что все работает:

ekzorchik@srv-mon:~$ free-sa

SAERROR: [SAfopenI] /var/log/squid/access.log. Permission denied

ekzorchik@srv-mon:~$ sudo free-sa

ekzorchik@srv-mon:~$ ls /var/www/free-sa/

09_24_2015-09_24_2015-1 d.png gsa.css log rsa.css s.png

c.png g.png index.html lsa.css sa.js themes

Захожу теперь на Web-страницу:

Сформированная статистика во Free-SA на Ubuntu 12.04

Но это за текущий день, а как сделать за любой другой, сперва определяю, как получается дата в моей системе (Ubuntu 12.04.5 Server amd64), а уже затем указываю необходимый диапозон согласно формату даты текущей системы:

ekzorchik@srv-mon:~$ date +'%x'

09/24/2015

ekzorchik@srv-mon:~$ sudo free-sa -d 09/20/2015-09/20/2015 -f /usr/local/etc/free-sa/free-sa.conf -l /var/log/squid/access.log-20150920 -o /var/www/free-sa

Сформированный отчет в странице Web-интерфейса стал:

http://IP&DNS/free-sa нажимаю клавишу F5 и появляется лог периода за 20 сентября.

Статистика за 20.09.2015

Поизучавши сформированный отчет, выделил для себя следующее:

  • Намного быстрее формируются отчеты по сравнению с sarg (мое мнение), можете проверить введя перед запуском sarg и free-sa команду "time -h".
  • Очень понятно по шаблонам: Download (archives files only, audio file only,office files only,video files only) кто качал (просматривал), полный путь до интернет файла и когда.

Если же Вы захотите попробовать все фильтры и поизучать визуализированную информацию на основе них, то следует быть более разборчивым, потому как всего возможно использовать только 16 шаблонов:

ekzorchik@srv-mon:~$ sudo free-sa -d 09/20/2015-09/20/2015 -f /usr/local/etc/free-sa/free-sa.conf -l /var/log/squid/access.log-20150920 -o /var/www/free-sa

SAWARNING: [InitConfig] Filter ‘/usr/local/etc/free-sa/SMTP_receiving_rejected.filter.sample’ will be skipped. Only 16 local filters are supported now, please contact developers if you need more

это я в конфигурационный файл free-sa.conf добавил:

local_filter=”/usr/local/etc/free-sa/SMTP_delivery_rejected.filter.sample”

local_filter=”/usr/local/etc/free-sa/SMTP_receiving_rejected.filter.sample”

Но вот у меня ситуация не стандартная с логами и каждый раз изменять строку выше (в ручную) уже как-то не совсем по админски получается, может попробовать написать простенький скрипт для этого дела:

ekzorchik@srv-mon:~$ nano report

#!/bin/bash

while [ 1 ]

do

read -p "Enter date for report free-sa: 09/<date>/2015:" A

read -p "Enter date for report free-sa: <month>/<date>/2015:" B

/usr/local/bin/free-sa -d $B/$A/2015-$B/$A/2015 -f /usr/local/etc/free-sa/free-sa.conf -l /var/log/squid/access.log-2015$B$A -o /var/www/free-sa

done

Наделяю простенький скрипт атрибутом исполнения:

ekzorchik@srv-mon:~$ chmod +x report

Запускаю созданный скрипт:

ekzorchik@srv-mon:~$ sudo ./report

Enter date for report free-sa: 09/<date>/2015:02

Enter date for report free-sa: <month>/<date>/2015:09

Enter date for report free-sa: 09/<date>/2015:03

Enter date for report free-sa: <month>/<date>/2015:09

Enter date for report free-sa: 09/<date>/2015:04

Enter date for report free-sa: <month>/<date>/2015:09

Enter date for report free-sa: 09/<date>/2015:

^C — по сочетанию Ctrl + C завершаю работу, перехожу на страницу http://IP&DNS/free-sa нажимаю F5 и получаю сформированные отчеты. Работает, хоть и кривой скрипт, но немного автоматизированный. Данной заметкой я добился, что развернул еще один сервис по анализу логов работы squid применительно к операционной системе Ubuntu 12.04.5 Server. Данной статистикой я уже могу смело оперировать в разграничении доступа к ресурсам ни как не относящимся к рабочим моментам и предоставлением статистики своему руководству о занятости коллег других подразделений. Вот не знаю, почему коллеги вместо того чтобы самосовершенствоваться на рабочем месте, повышать свой кваллификационный уровень занимаются как просмотром фильмов, роликов, слушают музыку, разве всего этого им не хватает дома. Может я конечно какой-то не правильный, я же стараюсь всегда знать чуточку больше и уметь чуточку больше. На этом заметка завершена, до встречи, с уважением автор блога — ekzorchik.

От ekzorchik

Всем хорошего дня, меня зовут Александр. Я под ником - ekzorchik, являюсь автором всех написанных, разобранных заметок. Большинство вещей с которыми мне приходиться разбираться, как на работе, так и дома выложены на моем блоге в виде пошаговых инструкции. По сути блог - это шпаргалка онлайн. Каждая новая работа где мне случалось работать вносила новые знания и нюансы работы и соответственно я расписываю как сделать/решить ту или иную задачу. Это очень помогает. Когда сам разбираешь задачу, стараешься ее приподнести в виде структурированной заметки чтобы было все наглядно и просто, то процесс усвоения идет в гору. Также прошу на https://win.ekzorchik.ru https://lin.ekzorchik.ru https://net.ekzorchik.ru https://voip.ekzorchik.ru https;//home.ekzorchik.ru