Набор Perl-cкриптов «ProxyStat»
18.06.2002 | khomya

для расчёта входящего HTTP/FTP-трафика и визуализации статистики Интернет-активности пользователей

FreeWare, OpenSource, Perl script 


1. Назначение:

Набор Perl-скриптов предназначен для расчёта входящего HTTP/FTP-трафика и визуализации статистики Интернет-активности пользователей. Набор удобно использовать для мониторинга входящего Интернет-трафика с целью его минимизации и для выявления пользователей, злоупотребляющих доступом в Интернет.

Скрипты анализируют лог-файлы прокси-сервера Squid в формате httpd, выводят величину входящего трафика суммарно и по каждому из хостов (пользователей). Можно вызывать статистику любого дня и всего периода. Скрипты могут генерировать HTML-страницу (см. пример) со статистикой либо выводить результаты в текстовый файл. Кроме этого, возможно выводить в отчёт список больших (например >700K) файлов и запросов, содержащих указанную подстроку (для контроля нежелательного трафика).

В скриптах присутствуют комментарии, облегчающие процесс модификации/адаптации.

Примечание: Информация данного документа предназначена для системных администраторов. Предполагается, что Вы знакомы с основами управления операционной системой Unix и принципами работы прокси-сервера.

2. Технические характеристики и требования:
Язык: Perl
OC: RedHat Linux (5.2, 6.2, 7.0)
Дополнительные требования: Squid/2.3.STABLE4

3. Состав набора:

  • npstat.pl – файл скрипта;
  • npmstat.pl – файл скрипта (модификация для расчётов за месяц);
  • proxystat.css – стили для отображения формируемой HTML-страницы.

4. Возможности:

  • Расчёт производится по каждому хосту и суммарно по всем хостам.
  • Расчёт производится за указанный день или по всем событиям лога.
  • Для каждого хоста указывается число запросов, размер входящего трафика, количество запросов и байт, помещённых в кэш прокси-сервера.
  • Формирует список файлов размером больше 700К с указанием когда, откуда и каким хостом был скачан каждый из файлов.
  • Возможен поиск и выведение в отчёт запросов URL по ключевым словам.
  • Выводит разультаты в текстовый файл или в HTML-документ. Вид HTML-документа можно изменять путём редактирования CSS-файла (прилагается).
  • Кроме IP-адреса указывается (там, где это возможно) имя хоста.

5. Использование скрипта из командной строки (отчёт идёт в стандартный поток вывода):
Возможны следующие опции при вызове скрипта:

  • Нет опций: обрабатывается ВЕСЬ лог-файл. Вычисляется общий входящий трафик, трафик по каждому хосту и формируется список скачанных файлов, размер которых превысил 700К. Отчёт в виде текстового файла направляется на стандартный вывод.
  • –today – обрабатывать только события текущего дня.
  • –yesterday – обрабатывать только события предыдущего дня.
  • –ago=n – обрабатывать события за n-ный день назад.
    (например: npstat.pl –ago=1 равен npstat.pl –tomorrow).
  • –filter=s – включить в отчет список запрошенных файлов, в URL которых присутствует подстрока s
    (например: npstat.pl –ago=1 –filter=sex).
  • –html – оформить результаты в виде HTML-документа и направить на стандартный вывод


npstat.pl –today –html > todaytraffic.html


#Посчитать статистику за текущий день, оформить в виде HTML-документа и поместить в файл todaytraffic.html

6. Использование скрипта npstat.pl для автоматического формирования страниц статистики:

  • 4.0. Установка скрипта. Для установки надо скопировать файлы npstat.pl и npmstat.pl в /root/bin/ (или по желанию в другое место) и пометить их как исполняемые (chmod 700 npstat.pl ; chmod 700 npmstat.pl) 
    В тексте скриптов, если надо, скорректировать имя и путь к лог-файлу, указать, если надо, какие запросы не должны учитываться в статистике. 
    Эти участки кода помечены комментариями ‘###’. 
    Если планируется использовать HTML-вывод, то надо выбрать каталог, в который будут создаваться страницы (например, /var/www/html/proxystat), скопировать туда файл стилей proxystat.css и разрешить его чтение (chmod +r proxystat.css) 
    Примечание: 
    Скрипт обрабатывает лог-файлы большого объёма, что занимает достаточно много времени (27 секунд на файле размером 10М и до 300 секунд на файле размером 69М ), поэтому нецелесообразно запускать его «на лету» по запросу каждого пользователя, лучше запускать централизованно «по таймеру», например каждые 10 минут и публиковать результаты. 
  • 4.1. В конфигурационном файле squid.conf выставлен формат лог-файла. ################################################################# 
    # TAG: emulate_httpd_log on|off 
    # The Cache can emulate the log file format which many ‘httpd’ 
    # programs use. To disable/enable this emulation, set 
    # emulate_httpd_log to ‘off’ or ‘on’. The default 
    # is to use the native log format since it includes useful 
    # information that Squid-specific log analyzers use. 

    emulate_httpd_log on 
    ################################################################# 
  • 4.2. В /etc/logrotate.d/squid такие настройки (еженедельная ротация логов со сжатием): ################################################################# 
    /var/log/squid/access.log { 
    weekly 
    rotate 5 
    copytruncate 
    compress 
    notifempty 
    missingok 
    } /var/log/squid/cache.log { 
    weekly 
    rotate 5 
    copytruncate 
    compress 
    notifempty 
    missingok 
    }   

    /var/log/squid/store.log { 
    weekly 
    rotate 5 
    copytruncate 
    compress 
    notifempty 
    missingok 
    # This script asks squid to rotate its logs on its own. 
    # Restarting squid is a long process and it is not worth 
    # doing it just to rotate logs 
    postrotate 
    /usr/sbin/squid -k rotate 
    endscript 

    ################################################################# 

  • 4.3. Для расчёта дневной и недельной статистики составлен запускающий скрипт: ################################################################# 
    cd /var/www/html/proxystat #путь к нужному каталогу 
    /root/bin/npstat.pl –today –html >temp.html 
    /root/bin/npstat.pl –html >tempweek.html    

    mv temp.html day.html 
    mv tempweek.html week.html 
    ################################################################# 

    Запускается шедулером (Cron) каждые 10 минут и заменяет страницы статистики на Intranet-сайте на новые. 

    ################################################################# 
    */10 * * * * root /root/bin/make_stat #например, в /etc/cron.d/kmod 
    ################################################################# 

  • 4.4. Статистика за текущий месяц: Для расчёта статистики за месяц используется модифицированная версия скрипта npmstat.pl (отличается ТОЛЬКО проверкой месяца, обрабатываемым файлом и подправлен HTML-вывод) Запускающий скрипт хранится в в /etc/cron.dаily/ и включается один раз в сутки. ################################################################# 
    cd /var/log/squid #путь к логам 
    cat access.log > fullaccess.log 
    gzip -cd access.log.1 >> fullaccess.log 
    gzip -cd access.log.2 >> fullaccess.log 
    gzip -cd access.log.3 >> fullaccess.log 
    gzip -cd access.log.4 >> fullaccess.log  

    /root/bin/npmstat.pl -html >> /var/www/html/proxystat/tempmonth.html 

    cd /var/www/html/proxystat 
    mv tempmonth.html month.html 
    #################################################################

Версию скрипта для публикации подготовил Артём Бакуров

см. Файлы » Софт » Биллинги » ProxyStat

Просмотров новости: 452  <, , , >


-->