Журнальные файлы прокси-сервера Squid даже для небольших предприятий могут быть очень объёмны. Их разбор вручную малоэффективен, а ведение статистики или какого-либо учёта просто не возможны. Для этого используют вспомогательные программы. Мы рассмотрим три из них: Sarg , Calamaris и LightSquid .

Рано или поздно мы (системные администраторы) хотим (или нас заставляют) установить контроль над использованием Интернет-трафика. У меня пользователи периодически недоумённо осведомляются, на что истратилась их квота. Конечно, чаще всего они, не глядя, скачали какое-нибудь обновление, но бывают случаи, от них не зависящие. Так, например, несколько раз приходилось сталкиваться со злонамеренными самообновляющимися страницами.

Ясность частично можно внести и штатными средствами, используя команды cat и grep. Например, сделать выборку из журнала для конкретного IP адреса командой:

#cat /var/log/squid/access.log | grep 10.0.0.15 > /tmp/10.0.0.15.txt

а затем перенести файл на компьютер, где есть MS Excel, и там его просматривать.

Или воспользовавшись небольшими скриптами grab_ip_traffic.sh и parse_squid_log.pl получить туже информацию, но отфильтрованную и отсортированную по нужному полю, с преобразованым временем из unix формата в человеческий вид.

Так я и делал, пока не потребовалось проводить более серьёзный анализ и вести статистику.

Подготовительные работы

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

  • Ради универсальности процедуры установки программ под разные операционные системы (семейства Unix) будем устанавливать их из исходных кодов. На сайтах программ указано, где можно взять уже собранные пакеты для определённых ОС. По возможности лучше использовать их, так как в этом случае пакет регистрируется в системе, что весьма полезно при автоматическом обновлении ОС, для получения подробной информации об установленном пакете, для соблюдения зависимостей при установки новых пакетов и в массе других случаев. Примите во внимание, что при установке собранного пакета пути к файлам могут отличаться от указанных в статье.
  • Для просмотра отчётов через веб-интерфейс нам понадобится, соответственно, веб-сервер. Условимся отчёты хранить в каталоге /var/www/html/reports.
  • Calamaris и LightSquid написаны на Perl, поэтому он должен уже стоять в системе. Автор Calamaris рекомендует ставить самую последнюю версию, хотя и упоминает, что некоторые пользователи успешно использовали его программу на Perl 5.001. Требования к Perl для LightSquid не приводятся, так что от себя скажу, что на версии 5.8.7 всё работает отлично.
  • Ну и сам Squid (www.squid-cache.org), конечно, уже должен быть установлен, вести журнал в родном формате (что определяется в squid.conf опцией emulate_httpd_log off) и проводить ежедневную ротацию журналов, не сжимая архивы. Последнюю задачу лучше поручить программе logrotate, указав в файле /etc/logrotate.d/squid следующее:
/var/log/squid/access.log { daily rotate 6 copytruncate nocompress notifempty missingok } … # далее описана ротация cache.log и store.log. Её не трогаем

а сам Squid освободить от этой обязанности, указав опцию logfile_rotate 0

Установка анализаторов

Всё, приступим. См. отдельные статьи Sarg , Calamaris и LightSquid

Заключение

У всех трёх программ есть настройки внешнего вида отчёта, графики. Все поддерживают русский язык. У каждой есть свои отличительные характеристики, заслуживающие внимания, и при наличии возможности можно установить все три, но если такой возможности (или желания) нет, то при выборе стоит учесть:

  1. нужны ли вам те или иные отчёты
  2. достаточно ли у вас дискового пространства, чтобы хранить все желаемые отчёты
  3. позволяет ли существующая нагрузка на процессор добавить генерацию всех желаемых отчётов. Для обработки 140 тысяч строк журнала на компьютере с процессором Pentium 4 с тактовой частотой 3GHz и с 1 Gb оперативной памяти потребовалось для всех трёх программ вместе при их последовательном запуске около 2,5 минут.

Напоследок хочу сказать, что, поискав в Интернете отклики по этим программам, вы обнаружите различные жалобы администраторов на их неудобство или даже частичную неработоспособность. Так, например, Sarg до сих пор останавливается на некоторых записях журнала, отказываясь создавать отчёт (благо, что такие записи у меня попадаются редко). Однако все три проекта довольно активно развиваются и недочёты исправляются, поэтому ставьте свежие версии программ и пользуйтесь!

Squid - программный пакет, реализующий функцию кеширующего прокси-сервера для протоколов HTTP, FTP, Gopher и (в случае соответствующих настроек) HTTPS. Разработан сообществом как программа с открытым исходным кодом (распространяется в соответствии с GNU GPL). Все запросы выполняет как один неблокируемый процесс ввода/вывода. Используется в UNIX-системах и в ОС семейства Windows NT. Имеет возможность взаимодействия с Active Directory Windows Server путём аутентификации через LDAP, что позволяет использовать разграничения доступа к интернет ресурсам пользователей, которые имеют учётные записи на Windows Server, также позволяет организовать «нарезку» интернет трафика для различных пользователей.

Sarg (Squid Analysis Report Generator) — генератор отчетов на основании анализа лог-файла прокси сервера Squid. Отчеты позволяют выяснить какой пользователь в какое время обращался к какому сайту.Суммарный отчет может оказать большую помощь в тарификации работающих через Squid пользователей, так как включает в себя суммарный трафик и число коннектов для каждого пользователя за определенный период времени.

Установка и настройка Squid

Существует две версии Squid — 2.x и 3.x. Последняя бета версия — 3.1. Мы будем ставить третью ветку прокси-сервера. На момент написания статьи, стабильной версией была 3.0.STABLE15.

# cd /usr/ports/www/squid30/ # make install clean

Пока искал описания всех опций на английском, понял, что если опция не будет использована в течении месяца, то ставить ее нет смысла, т.к. если я правильно понял, то часть опций, начиная с релиза 3.1 будут активироваться в конфиге (например SQUID_PINGER). По этому, я не стал отмечать те опции, которые не планирую использовать после начальной конфигурации. Иными словами, мне нужен простой кеширующий прокси сервер.

В опциях установки я выбрал SQUID_SSL, SQUID_IDENT, SQUID_PF, SQUID_KQUEUE.

Все конфигурационные файлы squid находятся в папке /usr/local/etc/squid/
Директория с кешем: /usr/local/squid/cache/
Логи пишутся в /usr/local/squid/logs/

Добавляем следующую строчку в /etc/rc.conf:

Squid_enable="YES"

Перед началом работы, надо инициализировать директории с кешем. Делается это командой:

# squid -z

Команду надо выполнять от пользователя root или squid. И выполнять ее надо после того, как вы создали готовый конфигурационный файл, а то могут выдаваться ошибки.

По умолчанию, конфигурация Squid будет запрещать всем доступ к proxy-серверу. Чтобы это изменить, надо отредактировать параметры http_access в файле /usr/local/etc/squid/squid.conf.

# squid -f /usr/local/etc/squid/squid.conf -k parse

Первоначальный файл конфигурации представляет из себя файл, где все установлено по умолчанию. Как сказано в документации, если вы не будете менять какую-то опцию и хотите ее значение по умолчанию, то не надо ее раскомментировать. Из-за этого могут быть ошибки во время выполнения. Так же, надо знать, что значение NONE иногда означает, что не надо использовать вообще никакое значение определенной опции, а иногда является валидной опцией. Так что, если есть недопонимания того или иного параметра в конфигурационном файле, следует обратиться к официальной документации (ссылку на сайт с документацией можно найти в самом низу статьи).

В конфигурационном файле предусмотрено использование директивы include для подключения дополнительных конфигурационных файлов, например:

Include /путь/до/файла/конфигурации/squid.acl.config

Следует учитывать, что количество уровней include ограничено 16. Сделано это для того, чтобы предотвратить «петли», когда Squid бесконечно включал файлы конфигурации, указанные в других файлах.

Моя конфигурация будет актуально для сетей, где Squid в связке с используется в качестве прозрачного прокси-сервера (transparent proxy). Весь доступ будет открыт из внутренней локальной сети и закрыт всем извне. По этому, никакие параметры авторизации использоваться не будут. Так же, т.к. это прозрачные прокси-сервер, то надо перенаправлять все запросы через PF на порт 3128.

Так же, надо помнить, что по умолчанию Squid принимает запросы на порте 3128.

Теперь, когда покончено с небольшой теоретической частью, пора приступать к конфигурационной части. В целях экономии места, здесь я буду указывать лишь те параметры, которые я менял, и те параметры, на которые стоит обратить внимание. Итак, приступим. Файл конфигурации:

# закомментировал следующие строчки, т.к. этих подсетей у меня нет #acl localnet src 10.0.0.0/8 #acl localnet src 172.16.0.0/12 # так же, закомментировал неиспользуемые порты и добавил нужные # я не знаю на сколько это верно, может правильнее было бы их оставить acl WEBMIN_ports port 10000 acl Safe_ports port 8080 # www acl Safe_ports port 10000 # webmin #acl Safe_ports port 70 # gopher (сетевой протокол распределенного поиска и передачи документов) #acl Safe_ports port 210 # wais (сетевая информационная поисковая система) #acl Safe_ports port 1025-65535 # незарегистрированные порты #acl Safe_ports port 280 # http-mgmt #acl Safe_ports port 488 # gss-http #acl Safe_ports port 591 # filemaker (кросс-платформенные реляционные базы данных) #acl Safe_ports port 777 # multiling http (какой-то доисторический протокол, о котором никто ничего не знает) # если это не указать, то нельзя будет покдлючиться к Webmin через адрес https://webmin_address:10000 http_access allow CONNECT WEBMIN_ports # раскомментируем следующую строку... она отвечает за то, чтобы на прокси-сервере не осуществлялся доступ # к http://localhost через сам прокси-сервер # это рекомендуем параметр, но не обязательный http_access deny to_localhost # т.к. это у нас будет прозрачный прокси-сервер, то надо изменить значение по умолчанию на следующее # а еще я добавляю ip-адрес на котором принимать запросы, т.к. в компьютере две сетевые карты http_port 192.168.0.10:3128 transparent # сколько памяти могут занимать процессы Squid; по умолчанию 8 Мб, но в версии 3.1 # этот параметр будет увеличен до 256 Мб - увеличим и мы cache_mem 256 MB # максимальный размер объектов в памяти... опять же, в версии 3.1 этот параметр будет увеличен # с 8 кб до 512 кб; делаем так же maximum_object_size_in_memory 512 KB # указываем директорию с кешем. параметр имеет вид: # cache_dir ufs Directory-Name Mbytes L1 L2 , где # Directory-Name - это сама директория # Mbytes - количество мегабайт, которые выделены для директории (я выделяю 2 гига) # L1 - количество директорий, которое может быть создано в папке с кешем (по умолчанию 16) # L2 - количество поддиректорий, которое может быть в каждой директории (по умолчанию 256) cache_dir ufs /usr/local/squid/cache 2048 256 512 # параметр я не трогал, но хочу сделать небольшое пояснение по нему # максимальный размер объектов, который будет сохранен в кеш # если вы хотите сэкономить траффик, то стоит увеличить этот параметр # если хотите производительность - понизить # maximum_object_size 4096 KB # если свободное место в директории с кешем израсходовано на 90% (cache_swap_low), то # начинается постепенная утилизация (замещение) сохраненных объектов # когда процент занятого пространства достигает отметки 95% (cache_swap_high), утилизация # происходит более "агрессивно" # так же стоит учитывать, то если под кеш директорию выделено много пространства, то разница # между 90% и 95% может быть сотни мегабайт... стоит задуматься о уменьшении разницы между # этими параметрами # cache_swap_low 90 # cache_swap_high 95 # этот лог отвечает за то какие объекты удаляются из кеша, какие сохраняются и на сколько # т.к. нет утилит для создания отчетов по этим данным, то их можно смело отключить cache_store_log none # указываем какую часть ip-адреса клиента указывать в логе. по умолчанию указывается весь адрес. # но если, например, указать значени 255.255.255.0, то в логе будут отображены три первые октета # ip-адреса. т.е. если клиент (192.168.0.15 делает запрос), то в логе будет отображено - 192.168.0.0 # я не менял параметр, т.к. хитрый и хочу знать кто куда ходит # client_netmask 255.255.255.255 # закомментируем это, т.к. не используем этот протокол #refresh_pattern ^gopher: 1440 0% 1440 # e-mail человека, который отвечает за кеш. сюда будет выслано письмо, если с кешем что-то случится cache_mgr av3nger # имя сервера visible_hostname имя_компьютера # не используем это #icp_port 3130 # в самом низу конфига есть раздел DNS OPTIONS. можно с ним еще поиграться, если нужна большая "стандартизация"

И вот теперь стоит инициализировать директории с кешем. Чтобы его сделать «прозрачным», надо в конфигурационный файл Packet Filter /etc/pf.conf добавить следующую строчку:

Rdr on $int_if proto tcp from $int_if:network to !(self) port 80 -> ip_адрес_прокси_сервера port 3128

Напоминаю, что пример настройки PF можно посмотреть .

Проблемы, с которыми я столкнулся

1. При переадресации заменяется ip-адрес отправителя, адресом сервера. Т.е. например, если я (192.168.0.3) пытаюсь через прокси подключиться к 192.168.0.10:8080 (веб сервер), но при этом, на веб-сервере стоит ограничение на подключение только с IP 192.168.0.3, то подключение НЕ произойдет. Т.к. в логах будет написано, что подключение шло с адреса 192.168.0.10. Способа решения два. Первый — это заморачиваться с NAT, второй — просто поправить конфиг Apache. Ведь прокси сервер все равно запрещен для пользования из вне. Мы лишь теряем защиту сайта в локальной сети. Что, конечно же, не очень хорошо, но терпимо.

Установка и настройка Sarg

Сразу приступим к установке:

# cd /usr/ports/www/sarg/ # make install clean

Единственная доступная опция установки — GD. Отмечаем ее. GD — это графическая библиотека, скорее всего отвечает за отображение красивых графиков. Если выскочет окошко, где надо будет выбрать опции установки для GD, то не надо ничего выбирать.

Все конфигурационные файлы лежат в /usr/local/etc/sarg/. Нам нужен файл sarg.conf, открываем его в любом редакторе и приводим примерно вот к такому виду:

# язык (из русских есть еще Russian_windows1251 и Russian_UTF-8) language Russian_koi8 # указываем, где лежат логи Squid access_log /usr/local/squid/logs/access.log # используем графики, где это возможно graphs yes # указываем название страниц title "Статистика использования Squid" # директория для временных файлов temporary_dir /tmp # куда кидать отчеты (у меня так) output_dir /usr/local/www/secure/squid-reports # если хочется, чтобы репорты приходили вам на почту, то можно воспользоваться следующим параметром # при этом, отчеты в папку, указанную вышу, сохраняться не будут # output_email ваш_email # преобразовываем ip в адрес resolve_ip yes # по какому полю и как сортируем отчеты для страницы с топовыми пользователями # поля бывают USER, CONNECT, BYTES и TIME # способы сортировки - normal и reverse topuser_sort_field BYTES reverse # тоже самое, но для страницы пользователи user_sort_field BYTES reverse # европейский формат дат date_format e # удаляем временные файлы remove_temp_files yes # генерируем файл index.html index yes # если папка с отчетом уже создана, то мы ее перезаписываем overwrite_report yes # удаляем из отчета записи, содержащие следующие коды (400, 404 и т.д.) # кода надо вписать в указанный файл exclude_codes /usr/local/etc/sarg/exclude_codes # я раскомментировал следующую строчку, чтобы получить все отчеты # строчку полностью не привожу, т.к. она длинновата report_type ... # в следующем файле мы указываем пары ip-адрес - пользователь # формат следующий: 192.168.0.1 Василий Пупкин # в конце обязательно должны быть символы конца строки (иными словами - надо нажать Enter) usertab /usr/local/etc/sarg/users # кодировка создаваемых отчетов charset Koi8-r # убираем лого; оно только мешается show_sarg_logo no # заменяем байты на более понятные величины (кб и мб) displayed_values abbreviation

Все! Теперь, чтобы сгенерировать отчеты, надо лишь выполнить команду:

Чтобы постоянно не выполнять эту команду, можно добавить следующую запись в crontab. Sarg будет запускаться каждый день в полночь.

@daily /usr/local/bin/sarg

1. Официальный сайт Squid (на английском)
2. (на английском)
3. (опять же, на английском)

Каждый, кто поднимает проксю, потом хочет смотреть кто её пользуется, кто сколько качает. И иногда бывает очень полезным просмотр в режиме реального времени, кто что качает. В данном топике будут рассмотрены следующие программы:
SqStat - Real Time статистика через web
- Анализатор логов Squid с последующей генерации HTML
SquidView - Интерактивный консольный монитор логов Squid

0. Введение

Я не буду здесь рассказывать как настроить Apache. В инете и так много мануалов на эту тему, так что вперед и с песней, я буду рассказывать про те фичи, которые внедрял у себя.
Да, рассказывать буду на примере Debian Etch, у вас могут отличаться пути, имейте ввиду…
Поехали…

1. SquidView

Данная программа работает в консоли, и выводит там же все что делает Squid.
Установка:

Aptitude install squidview

Подождем пару секунд, если у вас быстрый интернет. Все, теперь мы можем смотреть кто, что качает. Если у вы не меняли расположение логов, и оставили большинство параметров squid дефолтными, то для просмотра необходимо только запустить его, но с правами root"а, потомучто логи сквида пишутся им…

Sudo squidview

Я думаю что этого вполне хватит вам, но также сообщу очень полезные вещи, нужно нажимать кнопки, и смотреть:

  • h - помощь, здесь мы можем узнат ь еще больше;)
  • l - enter - генерация отчета, вы также можете настроить дополнительные настройки
  • T - начинется учет статистики по размеру скачиваемого
  • O - просмотре кто чё качал по юзерам, после T

По SquidView вроде бы все, если что нибудь не до рассказал, пишиите, добавлю!

2. SqStat

Это скрипт который позволяет смотреть активные соединения, загрузку канала, и среднюю загрузку канала.
Я предполагаю что у вас уже настроен апач.
Скачиваем последнюю версию,

Wget -c samm.kiev.ua/sqstat/sqstat-1.20.tar.gz
tar xvfz sqstat-1.20.tar.gz
cd ./sqstat-1.20
mkdir /var/www/squid-stat
cp -R * /var/www/squid-stat*

Всё, теперь нам необходимо настроить Squid-cgi или cachemgr.cgi, Ставим:
aptitude install squid-cgi

Теперь необходимо настраивать доступ…

Nano /etc/squid/squid.conf

Добавляем
acl manager proto cache_object
http_access allow manager localhost
http_access deny manager
#Данная строка задает пароль secret и разрешает делать все
cachemgr_passwd secret all

Сейчас необходимо поправить /etc/squid/cachemgr.conf
echo "*" >> /etc/squid/cachemgr.conf
Вместо * можете поставить адрес сетевой которую прослушивает squid

У меня почему то не получилось завести при адресе 127.0.0.1 и ввел 192.168.0.1 и все заработало. теперь вам необходимо ввести в поле Cache Host адрес внещней сетевой. Порт какой у вас стоит, в поле логин, если вы делали всё по мануалу, можно ничего не водить, и в поле пароля пишем secret. Если всё прошло удачно, то вы увмидете список доступных параметров… Можете посмотреть, а мы переходим к настройке SqStat…

Nano /var/www/squid-stat/config.inc.php
//Это адрес на котором слушает ваш сквид
$squidhost="192.168.0.1";
$squidport=3128;
$cachemgr_passwd="secret";
//Этот параметр разрешает резолвить имена записями в ващей системе
$resolveip=false;
//В этом файле содержится айпи и имена кмопьютеров, можно использовать кирилицу:)
$hosts_file="hosts";
$group_by="host";

В принципе, сам конфиг хорошо документирован, изучайте, благо там изучать нечего))

Теперь делаем поддомен, так намного удобнее)

Nano /etc/apache2/sites-enabled/sqstat

ServerAdmin [email protected]
DocumentRoot /var/www/squid-stat/
ServerName proxy.server.local

Для резолвинга пишем в /etc/hosts

Nano /etc/hosts
192.168.0.1 proxy.server.local

Вот и всё :) почти все

Squid -k reconfigure
/etc/init.d/apache2 reload

3. Sarg

Эта программа генерирует html отчеты, риcует графики, и тд…
Ставим:

Aptitude install sarg

Nano /etc/squid/sarg.conf
language Russian_koi8
graphs yes
title "Squid User Access Reports"
temporary_dir /tmp
output_dir /var/www/sarg
max_elapsed 28800000
charset Koi8-r

Kонечно же никто Вам не запрещает поизгаляться над стилем отображения всего этого хозяйства - конфиг снабжён очень подробными комментариями.

Crontab -u root -e
* 08-18/1 * * * /usr/sbin/sarg-reports today
* 00 * * * /usr/sbin/sarg-reports daily
* 01 * * 1 /usr/sbin/sarg-reports weekly
* 02 1 * * /usr/sbin/sarg-reports monthly

Эпилог

Всё :)) Если хотите, можете создать и для него поддомен! Это уже описано…
Сам я пользуюсь всеми тремя программами и доволен.

UPD. Для решения проблемы со скивдом 3-ей версии неоходимо сделать мягкую ссылку:

Ln -s /var/log/squid3/access.log /root/.squidview/log1

UPD.2. В следующей статье будет идти разговор о delay pools

Одним из насущных вопросов для системного администратора является получение статистики использования интернета в организации. Располагая такими данными всегда можно ответить на вопрос руководства "куда ушел весь интернет", обосновать необходимость расширения канала, своевременно выявлять и пресекать нежелательный трафик. Сегодня мы рассмотрим такое решение для на платформе Ubuntu Server.

Основной интересующий нас тип траффика - HTTP, который составляет львиную долю входящего интернет-трафика в организации и наиболее интересен, так как позволяет судить об активности и предпочтениях пользователей (а также о том, как они проводят рабочее время). Все необходимые нам данные имеются в логах прокси-сервера Squid, но не будем же мы просматривать их вручную! Необходим инструмент, позволяющий анализировать и предоставлять отчеты на основе этих логов. Одним из таких инструментов является SARG - Squid Analysis Report Generator , что и отражено в его названии.

Приступим. Прежде чем браться за установку SARG необходимо подготовить сервер, данная утилита выдает отчеты в формате HTML и для работы с ними потребуется установленный веб-сервер. Если вы не собираетесь использовать роутер в качестве полноценного веб-сервера, то будет вполне достаточно легкого сервера lighttpd :

Sudo apt-get install lighttpd

Сервер начинает работать сразу после установки, для проверки наберите в браузере адрес сервера и вы увидите стандартную страницу. По умолчанию lighttpd принимает соединения на всех интерфейсах, что нас никоим образом не устраивает, ограничим его работу внутренней сетью. Открываем конфигурационный файл /etc/lighttpd/lighttpd.conf , находим и приводим к следующему виду опцию:

Server.bind = "10.0.0.1"

где 10.0.0.1 - внутренний адрес роутера, также не забудьте раскомментировать эту строку и перезагрузить веб-сервер:

Sudo /etc/init.d/lighttpd restart

Устанавливаем SARG:

Sudo apt-get install sarg

Настройка анализатора логов довольно проста и сводится к выбору языка, кодировки и формата отчета, а также пути для его размещения. Все изменения вносим в файл /etc/sarg/sarg.conf :

Language Russian_UTF-8
graphs yes
graph_days_bytes_bar_color orange
output_dir /var/www/squid-reports
charset UTF-8

Также находим и комментируем строку:

#site_user_time_date_type table

Теперь можем проверить работу анализатора:

Sudo /usr/bin/sarg

После того как утилита закончит работу набираем в браузере http://10.0.0.1/squid-reports , вы должны увидеть следующую страницу:

По умолчанию SARG формирует отчет за весь доступный период, отчет содержит детализацию по пользователям (адресам) и посещенным ими сайтам, использованию трафика и кэша, загрузкам. Отдельно можно просмотреть наиболее посещаемые сайты, данный отчет сортирует сайты не по трафику, а по количеству посещений.

По каждому пользователю можно получить исчерпывающую статистику:

Можно также просмотреть график потребления трафика и статистику работы по датам и времени.

Если есть желание, можете настроить отображение отчетов по собственному вкусу, конфигурация SARG использует для задания параметров вывода отчетов стандартные HTML теги и неплохо документирована. Если вы владеете HTML на базовом уровне, эта операция не должна вызвать у вас затруднений.

Анализатор настроен и работает, это хорошо. Но запускать его каждый раз вручную не очень интересно, поэтому настроим систему на получение ежедневных, еженедельных и ежемесячных отчетов. Для этого откроем файл /etc/sarg/sarg-reports.conf и укажем путь для размещения отчетов, а также адрес и ссылку для логотипа.

HTMLOUT=/var/www/squid-reports
LOGOIMG=/sqiud-reports/logo.png
LOGOLINK="http://10.0.0.1/squid-reports"

Учтите, что изображение логотипа должно находиться в пределах корневой папки веб-сервера (/var/www) и пути указываются от корня веб-сервера, а не файловой системы.

Теперь зададим расписание для формирования отчетов, которое необходимо добавить в /etc/crontab

00 09-18 * * * root sarg-reports today
00 22 * * * root sarg-reports daily
30 22 * * 0 root sarg-reports weekly
30 23 1 * * root sarg-reports monthly

Данное расписание означает, что каждый час с 9:00 до 18:00 (рабочий день организации) запускается скрипт формирования ежедневной статистики, каждый день в 22:00 формируется статистка за день, в 22:30 Воскресенья - статистка за неделю и первого числа каждого месяца в 23:30 статистика за месяц.

Думаю, многим известна утилита tail , которая позволяет просматривать последние строки текстового файла. Удобнейшая вещь при просмотре лог-файлов. Ко всему прочему tail может работать в т. н. follow -режиме. В этом режиме утилита «следит» за изменениями в файле и выводит новые строки в поток вывода по мере их появления в режиме реального времени. Довольно часто необходимо бывает следить одновременно более чем за одним файлом. Согласитесь, переключение между несколькими терминалами - не самый удобный способ. К счастью, существует MultiTail — утилита, основным назначением которой является вывод содержимого одновременно более чем одного файла в одно окно.

Список возможностей MultiTail впечатляет. Назвать его просто улучшенным tail было бы, мягко говоря, неуважительно. Взгляните на некоторые, основные возможности утилиты:

  • вывод более чем одного файла в терминал, который делится на т. н. окна;
  • терминал может разделяться на окна как горизонтально, так и вертикально;
  • окна можно создавать, перемещать, закрывать, объединять и временно скрывать;
  • в одно окно можно выводить более одного файла;
  • поиск как в одном окне, так и во всех сразу;
  • фильтрация строк перед выводом при помощи регулярных выражений;
  • мерцание экрана или звуковое оповещение при обнаружении определённого текста;
  • подсветка цветом текста на основе регулярных выражений;
  • направление вывода в текстовые файлы (работает, подобно tee );
  • работа в режиме syslog-сервера;
  • подавление вывода дублирующихся строк;
  • изменение конфигурации MultiTail «на лету» в ответ на изменения в наблюдаемом файле;
  • наблюдение за потоком стандартного ввода;
  • преобразование IP-адресов в имена хостов, значений errno в текстовые описания, etc;
  • разнообразные варианты обрезки длинных строк: справа, слева, определённую часть;
  • горизонтальная и вертикальная прокрутка, режим переноса длинных строк;
  • и многое, многое другое!

Впечатляет? Что ж, давайте установим и попробуем понаблюдать за лог-файлами в системе. MultiTail присутствует в репозитариях многих систем, так что вы можете установить его штатными средствами. В Ubuntu достаточно команды:

$ sudo apt-get install multitail

Во FreeBSD из портов можно установить так:

# portsnap fetch update # cd /usr/ports/sysutils/multitail # make install clean

После установки можно сразу же приступать к работе. Вот так выглядит лог-файл Squid (обратите внимание на автоматическое обратное разрешение имён хостов):

Несколько некрасиво получается с учётом переноса строк. Можно попросить multitail обрезать строки справа (оставлять только начало строки):

или слева (оставлять только конец строки):

Следим за пингом google.com:

$ multitail -l "ping google.com"

Усложняем. Следим за пингом и поглядываем на протокол Squid :

$ multitail -l "ping google.com" -i /var/log/squid/access.log

Наблюдаем за двумя пингами и лог-файлом:

Multitail -l "ping ubuntu.com" -l "ping yandex.ru" -i /var/log/squid/access.log

Вариант с использованием вертикальных областей (опция «-s 2» делит терминал на две вертикальные области):

$ multitail -s 2 -i /var/log/squid/access.log -l "ping ubuntu.com" -l "ping yandex.ru"

Вывод двух команд в одно окно (опция «-L» добавляет вывод команды в окно предыдущей) и просмотр двух лог-файлов:

$ multitail -l "ping ubuntu.com" -L "ping yandex.ru" -p l -i /var/log/squid/access.log -i /var/log/dmesg

Просмотр лога Apache. Опцией «-cS apache» сообщаем multitail , что при выводе лог-файла необходимо использовать цветовую схему «apache». Полный список поставляемых в комплекте цветовых схем можно получить в /etc/multitail.conf .

Поиск и подсветка при помощи регулярных выражений:

$ multitail -ec ""GET[^"]+"" -cS apache /var/log/apache2/access.log

Вот такая небольшая демонстрация основных, на мой взгляд, возможностей multitail получилась. Ещё раз повторюсь: утилита очень мощная и гибкая. Чего только стоит возможность выполнения указанной команды при соответствии какой-либо строки регулярному выражению! В общем, ставьте, пробуйте, читайте документацию и вы получите в своё распоряжение мощный инструмент мониторинга системы и оповещения о нужных вам событиях, фиксируемых многими приложениями в обычных текстовых лог-файлах. Удачи!