Помнится мне когда я был еще совсем начинающий системный администратор (Привет коллегам из Лексус Центр Измайлово), то также как на текущем месте работы за работой сотрудников в интернет пользовании следил 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
Ставлю пакет 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-страницу:
Но это за текущий день, а как сделать за любой другой, сперва определяю, как получается дата в моей системе (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 сентября.
Поизучавши сформированный отчет, выделил для себя следующее:
- Намного быстрее формируются отчеты по сравнению с 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.