3 кнопки, котоpые потpясли DOS.

Unix Dos Linux Windows Os/2 Qnx Beos Gios Hard Etc Link Форум (тестовый режим) Гостевая Юмор Soft Связь
 
 
 

Etc.: Proxy сервер под Linux. Squid

Содержание

Управление squid (Cache Manager)

Настройка прав доступа в squid.conf:

  • acl all src 0.0.0.0/0.0.0.0
  • acl localhost src 127.0.0.1/255.255.255.255
  • acl manager proto cache_object
  • acl managerhost src 1.2.3.4/255.255.255.255
  • http_access allow manager localhost
  • http_access allow manager managerhost
  • http_access deny manager
  • http_access allow all
  • cachemgr_passwd пароль команда

 

Управление squid с помощью программы client: /usr/local/squid/bin/client cache_object://localhost/команда

Управление squid с помощью cachemgr.cgi (лично я не пробовал и другим не советую):

  • cachemgr.cgi в /usr/local/squid/cgi-bin
  • конфигурация Apache
    • ScriptAlias /Squid/cgi-bin/ /usr/local/squid/cgi-bin/
    • ограничение доступа по адресу хоста
              <Location /Squid/cgi-bin/cachemgr.cgi>
              order deny,allow
              deny from all
              allow 1.2.3.4
              </Location>
      
    • ограничение доступа по паролю
              <Location /Squid/cgi-bin/cachemgr.cgi>
              AuthUserFile /path/to/password/file
              AuthGroupFile /dev/null
              AuthName User/Password Required
              AuthType Basic
              require user cachemanager
              </Location>
      

 

Сколько надо оперативной памяти

Требования к памяти:

  • 72 байта на каждый объект
  • Disk buffers for reading and writing
  • Network I/O buffers
  • IP Cache contents
  • FQDN Cache contents
  • Netdb ICMP measurement database
  • Per-request state information, including full request and reply headers
  • Miscellaneous statistics collection
  • "Hot objects" which are kept entirely in memory

 

Причем большая часть используемой памяти не должна свопироваться (иначе работает безумно медленно). Например, при кеше в 7 ГБ (800 тысяч объектов) требуется 128 МБ оперативной памяти. При восстановлении оглавления кеша (после аварийной перезагрузки) требуется удвоенный объем.

Как уменьшить потребности:

  • попробовать GNU malloc или dlmalloc (./configure --enable-dlmalloc)
  • уменьшить cache_mem (пока не появятся сообщения в cache.log)
  • memory_pools off
  • уменьшить размер кеша (cache_swap) - единственный существенный способ

 

Алгоритмы замещения кеша (LRU, GDSF, LFUDA)

Squid поддерживает размер кеша между low и high, регулярно запуская процедуру удаления объектов (чем ближе мы к high, тем агрессивнее очистка). Вместо удаления можно использовать очистку файлов (truncate) пока хватает inode. Удаление производится асинхронно внешней программой unlinkd. Если объект тянется в данный момент, то он не удаляется. Если объект "отрицательно кеширован", то он удаляется. Если объект частный, то он удаляется. Алгоритмы замешения:

  • LRU. Если время с последнего использования объекта больше некой границы (threshold), то объект удаляется. Граница динамически вычисляется на основе заполненности кеша и low/high маркеров (начальное/максимальное значение задается в squid.conf). При стабилизации размера кеша граница представляет время полного заполнения (замещения) кеша в текущих условиях (типичное значение от 1 до 10 дней; если меньше 3 дней, то рекомендуется увеличить кеш).
  • GDSF. Стремится удержать маленькие полулярные объекты (растет hitrate, падает byterate).
  • LFUDA. hitrate падает, byterate - растет.

 

Сравнение алгоритмов проводится в

 

Какие объекты кешируются

Кешируемость объектов в зависимости от кода возврата HTTP:

Caching  Code
        Successful 2xx
c        200 OK
         201 Created
         202 Accepted
c        203 Non-Authoriative Information *
E        204 No Content
         205 Reset Content *
?        206 Partial Content *
        Redirection 3xx
C        300 Multiple Choices
C        301 Moved Permanently
t        302 Moved Temporarily
-        303 See Other *
-        304 Not Modified
E        305 Use Proxy (proxy redirect) *
        Client Error 4xx
E        400 Bad Request
-        401 Unauthorized
         402 Payment Required *
E        403 Forbidden
E        404 Not Found
E        405 Method Not Allowed *
         406 Not Acceptable *
-        407 Proxy Authentication Required *
         408 Request Timeout *
         409 Confict *
C        410 Gone *
         411 Length Required *
         412 Precondition Failed *
         413 Request Entity To Large *
E        414 Request-URI Too Long *
         415 Unsupported Media Type
        Server Error 5xx
E        500 Internal Server Error
E        501 Not Implemented
E        502 Bad Gateway
E        503 Service Unavailable
E        504 Gateway Timeout *
         505 HTTP Version Not Supported *

Notes:
* HTTP 1.1
c Cached unless a query response without expiry information
C Cached
E Negatively cached if no expiry headers
t Cached only if expiry information
- Not cached
Unless other said, the response code is not cached.

 

Кешируемость в зависимости от заголовков:

  • Responses with Cache-Control: Private are NOT cachable.

  • Responses with Cache-Control: No-Cache are NOT cachable.

  • Responses with Cache-Control: No-Store are NOT cachable.

  • Responses for requests with an Authorization header are cachable ONLY if the reponse includes Cache-Control: Public.

  • Responses with Vary headers are NOT cachable because Squid does not yet support Vary features.

 

Справедливый дележ канала (delay pool)

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

Определены 3 класса пулов:

  1. одно ведро на всех из этого класса

  2. одно общее ведро и 255 отдельных для каждого хоста из C-сетки

  3. 255 ведер для каждой сетки (класс B) и отдельное для каждого хоста

 

Пример конфигурации:

delay_pools 3     # 3 delay pools
delay_class 1 1   # pool 1 is class 1
delay_class 2 1   # pool 2 is class 1
delay_class 3 3   # pool 3 is class 3
delay_access 1 allow staff
delay_access 1 deny all
delay_access 2 allow students
delay_access 2 deny all
delay_access 3 allow college
delay_access 3 deny all
delay_parameters 1 640000/640000
delay_parameters 2 64000/64000
delay_parameters 3 64000/64000 32000/64000 6400/32000
                   # total_rest/total_max net_rest/net_max ind_rest/ind_max
где
  total - на всех
  net - на подсеть
  ind - на отдельный адрес
  rest - скорость заполнения (байт/сек)
  max - объем ведра (байт)

 

Ограничение для модемных клиентов, чтобы squid не подкачивал файл пока клиент еще не считал предыдущую порцию.

acl clients src адреса
delay_pools 1
delay_class 1 2
delay_access 1 allow clients
delay_access 1 deny all
delay_parameters 1 -1/-1 8000/4000

 

Прижать любителей MP3:

acl multimedia urlpath_regex -i \.mp3$ \.mpeg$ \.avi$ \.mov$
delay_pools 1
delay_class 1 1
delay_access 1 allow multimedia
delay_access 1 deny all
delay_parameters 1 16000/64000

 

quick abort д.б. установлен маленьким чтобы объект не качался на полной скорости после отпадения клиента (нет клиента для запроса - нет ограничений).

Squid как transparent proxy (только http)

В процессе участвуют маршрутизатор, Linux и Squid:

  1. http-пакеты, бегущие мимо, должны отлавливаться маршрутизатором и переадресовываться на proxy-сервер. Как понять, что это http-пакет? Будем считать, что все пакеты, направленные на tcp/80, являются запросами на HTTP. Возникал вопрос: а может кешировать и другие порты? После обработки статистики (большой объем - 422MB, в ситуации с добровольным использованием proxy) выяснилось, что всего обращений было 3120260, из них HTTP - 92%. Из них на нестандартные порты - 2.3% (3128 - 0.05%, 8000 - 0.09%, 8001 - 0.13%, 8080 - 1.06%, 8081 - 0.15%, 8100 - 0.11%, 8101 - 0.46%). Я не вижу смысла бороться за 1%, разве что найду готовое решение ;)

    • Proxy-сервер уже стоит на пути этих пакетов (например, squid установлен на маршрутизаторе или firewall).

    • Cisco отлавливает такие пакеты и с помощью route-map перенаправляет их на proxy-сервер.

  2. ОС proxy-сервера должна принимать эти пакеты, как родные, и перенаправлять к squid

    • linux 2.2.

      1. конфигурация ядра:
        CONFIG_EXPERIMENTAL=y # включен и так
        CONFIG_NET=y # само собой
        CONFIG_FIREWALL=y # чтобы иметь возможность тонко управлять маршрутизацией (несовместим с FAST_SWITCHING)
        # CONFIG_IP_ALIAS is not set # у меня включено и вроде работает (при нехватке ОП зависает драйвер eth0, если ALIAS выключить, то прикладная программа)
        CONFIG_INET=y # включен и так
        # CONFIG_IP_MULTICAST is not set # а почему нельзя?
        CONFIG_IP_FIREWALL=y # чтобы иметь возможность тонко управлять IP-маршрутизацией
        CONFIG_IP_MASQUERADE=y # а необходимо ли это для transparent proxy?
        CONFIG_IP_TRANSPARENT_PROXY=y
        CONFIG_IP_ROUTER=y # необязательно, но может ускорить обработку пакетов

      2. при загрузке включать ip_forward, ip_always_defrag (вставить в загрузочные скрипты: /etc/rc.d/init.d/network)
        echo 1 > /proc/sys/net/ipv4/ip_forward # ядро д.б. сконфигурировано поддержкой /proc и sysctl)
        echo 1 > /proc/sys/net/ipv4/ip_always_defrag # в ядре 2.2.12 указывается во время конфигурации

      3. ipchains (ipfwadm в ядре 2.2 работать не будет)

        • ipchains -A input -p TCP -d 127.0.0.1/32 www -j ACCEPT

        • ipchains -A input -p TCP -d адрес-хоста/32 www -j ACCEPT

        • ipchains -A input -p TCP -d 0/0 www -j REDIRECT 3128

        • дополнительные правила для firewall и др.

  3. squid д.б. скомпилирован так, чтобы он принимал эти пакеты, как родные.

    • linux 2.2 и squid 2.2. Происходит само собой.

  4. squid д.б. сконфигурирован так, чтобы обрабатывать эти пакеты соответствующим образом.

    • http_port 3128 # redirect д.б. на этот порт

    • httpd_accel_host virtual # имитирует акселератор http-сервера, но не совсе нормально

    • httpd_accel_port 80 # а если перенаправляли не только 80 порт?

    • httpd_accel_with_proxy on # иначе при работе в режиме акселератора отключается кеширование

    • httpd_accel_uses_host_header on # иначе виртуальные домены будут неправильно кешироваться (см. замечание про безопасность)

 

Проблема. дырка в firewall: запрос приходит на прокси-сервер, который от своего имени (уже изнутри) лезет куда не надо.

Ссылки:

 

Обработка статистики

В комплекте поставки идут access-extract.pl, (увеличено MaxEntries до ...)  получающая на стандартный ввод журнал access.log выдающая на стандартный выво промежуточный результат,  и access-summary.pl (убрал выдачу ICP, которой у меня нет, за счет чего увеличил ширину колонки с именами хостов; в xsort изменил сортировку с COUNT на BYTES), делающая из него красивый отчет. Внутри используется squid-logs.pl. Его надо расширить новыми суффиксами имен файлов (bmp - Image; rm, mid, mp3 - Audio; pl, cgi, shtml, php, php3, phtml, asp, dll - Dynamic; rpm, cab, avc - Bundle; css - HTML; koi - Text; js - Software). За день получается 60МБ в access.log, поэтому у меня не хватает терпения дождаться результатов работы других процедур из комплекта.

Формат access.log (запись делается, когда клиент закрывает socket; для наших 300 тысяч запросов в день получается 60 MB в день!):

  1. timestamp (unix time in ms)

  2. elapsed (ms), если клиент "ушел, не попрощавшись", то здесь будет время потраченное на обнаружение данного факта, а не время реального обслуживания (иногда более получаса на маленький файл)

  3. client IP address

  4. type/HTTP reply code, где type:

    • TCP_HIT (верная копия объекта нашлась в кеше)

    • TCP_MEM_HIT

    • TCP_NEGATIVE_HIT

    • TCP_MISS (запрашиваемый объект не был в кеше)

    • TCP_EXPIRED (объект был в кеше, но старый)

    • TCP_CLIENT_REFRESH (клиент запросил reload - no-cache pragma)

    • TCP_REFRESH_HIT (объект в кеше был старым, был сделан IMS-запрос к источнику и тот вернул "304 Not Modified")

    • TCP_REFRESH_MISS (объект в кеше был старым, был сделан IMS-запрос к источнику и тот вернул обновленное содержание)

    • TCP_IMS_HIT (клиент выдал IMS-запрос, объект оказался в кеше и свежим)

    • TCP_IMS_MISS (клиент выдал IMS-запрос для просроченного объекта)

    • TCP_REF_FAIL_HIT (объект в кеше староват, но запросить новую копию не удалось)

    • TCP_SWAPFAIL (объект д.б. в кеше, но не смогли извлечь)

    • TCP_DENIED

    • UDP_...

    • ERR_CLIENT_ABORT

    • ERR_NO_CLIENTS

    • ERR_READ_ERROR

    • ERR_CONNECT_FAIL

    • ERR_...

  5. size (bytes to client)

  6. method (GET, POST, ...)

  7. URL

  8. ident ("-", если недоступен)

  9. hierarhy data/Hostname

    • DEAD_NEIGHTBOR

    • DEAD_PARENT

    • LOCAL_IP_DIRECT

    • FIRST_PARENT_MISS

    • FIRST_UP_PARENT

    • PARENT_HIT (UDP-запрос к parent вернулся с подтверждением)

    • SINGLE_PARENT

    • PARENT_UDP_HIT_OBJECT (объект оказался у parent и поместился в UDP-ответе)

    • DIRECT (объект был запрошен с оригинального сервера)

    • ...

  10. тип содержимого (MIME тип/подтип)

 

Формат store.log:

  1. time (unix format with ms)

  2. action

    • RELEASE (удален из кеша)

    • SWAPOUT (сохранен на диск)

    • SWAPIN (был на диске, загружен в память)

  3. HTTP reply code

  4. HTTP Date: reply header

  5. HTTP Last-Modified: reply header

  6. HTTP Expires: reply header

  7. HTTP Content-Type: reply header

  8. HTTP Content-Length: reply header

  9. реально полученное число байт (если не совпадает с предыдущим числом, объект не хранится)

  10. HTTP метод (GET, POST, ...)

  11. ключ доступа (обычно URL, частные объекты еще и последовательный номер и метод)

 

Еще можно собирать useragent.log, все HTTP-заголовки и отладочную информацию. Я собираю только access.log и этого очень много.

Время в журналах записывается в Unix-формате (число милисекунд с 1 января 1970 года), что неудобно. Преобразовать в человеческий формат можно, например, с помощью gawk: awk '{print strftime("%Y%m%d%H%M%S",$1), $2, $3, $4, $5, $6, $7, $8, $9, $10, $11}' (printlog.sh) или perl: s/^\d+\.\d+/localtime $&/e;

Частота обращений к объектам извлекается из access.log с помощью (url_freq.sh)
awk '{print $7}' | sort | awk -f /usr/local/bin/count.awk | sort -nr +1
или без учета anchor и query-частей URL (url_freq_noq.sh)
awk '{print $7}' | awk -F'?' '{print $1}' | awk -F';' '{print $1}' | awk -F'#' '{print $1}' | sort | awk -f /usr/local/bin/count.awk | sort -rn +1

Squid не умеет работать с файлами, превышающими 2 ГБ, так что журналы надо регулярно чистить.

SARG (ранее sqmgrlog) - Squid Analysis Report Generator. Отчёты создаются в формате html (по умолчанию - в /var/www/html), для графиков используется библиотека gd. Установка пакета sarg-2.2-1.el4.rf.i386.rpm на CentOS 4.3 (требуется пакет gd, отчёты складываются в /var/www/sarg, настройка доступа для apache в /etc/httpd/conf.d/sarg.conf). Конфигурационный файл /etc/sarg/sarg.conf (символ '#' - начало комментария, каждый параметр на отдельной строке):

  • language Russian_UTF-8 # language Russian_koi8

  • access_log имя-файла (журнал access.log)

  • graphs yes

  • graph_days_bytes_bar_color blue|green|yellow|orange|brown|red

  • прочие настройки оформления графики (шрифт, цвет, размер, текст)

  • #password none

  • temporary_dir /tmp

  • output_dir /var/www/sarg/ONE-SHOT

  • output_email email-адрес (отчёт посылается по e-mail вместо создания графиков)

  • resolve_ip yes (преобразовывать IP адреса в имена)

  • user_ip yes (использовать в отчёте IP адреса вместо идентификаторов пользователей)

  • topuser_sort_field {USER | CONNECT | BYTES | TIME} {reverse | normal} (тип сортировки отчёта TopUser)

  • user_sort_field {USER | CONNECT | BYTES | TIME} {reverse | normal} (тип сортировки отчёта User)

  • exclude_users {имя-файла | none | indexonly} (файл содержит имена пользователей, которых не надо включать в отчёт)

  • exclude_hosts {имя-файла | none | indexonly} (файл содержит адреса хостов и сетей, которые не надо включать в отчёт: например, 192.168.10.0)

  • useragent_log none (отчёт по UserAgent)

  • date_format {e | u } (e - dd/mm/yy, u - mm/dd/yy)

  • per_user_limit имя-файла число-МБ (записывать в файл идентификаторы пользователей, превысивших указанный лимит)

  • lastlog число-сохраняемых-отчётов (0 - без ограничений)

  • remove_temp_files yes

  • index { yes | no | only } (создавать index.html)

  • index_tree { date | file }

  • overwrite_report no (перезаписывать отчёт, если отчёт за указанный день уже существует)

  • records_without_userid {ignore | ip | everybody } (что делать, если в строке журнала нет идентификатора пользователя; ignore - пропускать строку, ip - записывать ip, everybody - вместо userid записывать строку "everybody" )

  • use_comma {no | yes} (использовать запятую вместо десятичной точки)

  • mail_utility mail (какую программу использовать для посылки отчёта по почте)

  • topsites_num 100 (сколько сайтов включить в отчёт о самых популярных сайтах)

  • topsites_sort_order {CONNECT | BYTES} {D | A} (тип сортировки отчёта о самых популярных сайтах)

  • index_sort_order {D | A} (тип сортировки индекса)

  • exclude_codes имя-файла (/etc/sarg/exclude_codes, исключить записи с указанными кодами)

  • report_type перечень-отчётов-через-пробел

    • topusers (для самых "прожорливых" пользователей выводится имя пользователя (IP адрес), имена сайтов, число байт и т.д.)

    • topsites (для самых популярных сайтов выводится имя сайта, число соединений и загруженных байт)

    • sites_users (для каждого сайта перечисляется список заходивших на него пользователей)

    • users_sites (кто и куда ходил)

    • date_time (потребление трафика почасовое и посуточное)

    • denied (denied.log, куда пользователей не пустили: время, userid, IP-адрес, URL)

    • auth_failures (ошибки аутентификации)

    • site_user_time_date (sites, dates, times and bytes report)

    • downloads (download.log: для каждого загруженного файла выводится время, userid, IP-адрес, URL; см. download_suffix)

  • usertab имя-файла (none; файл содержит соответствие между userid/IP и реальным именем)

  • long_url no (вставлять в отчёт полный URL (не советую) или только имя сайта)

  • date_time_by { bytes | elap } (включать в почасовой отчёт байты или потраченное время)

  • charset Koi8-r (а для Russian_UFT-8?)

  • user_invalid_char "&/" (символы, недопустимые в userid)

  • include_users "список:пользователей:через:двоеточие" (включать в отчёт только указанных пользователей)

  • exclude_string "список:строк:через:двоеточие" (не включать в отчёт строки журнала, содержащие указанные строки)

  • show_successful_message {yes | no}

  • show_read_statistics yes (помогает скоротать время в ожидании завершения отчёта)

  • topuser_fields NUM DATE_TIME USERID CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE

  • user_report_fields CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE

  • topuser_num 0 (0 - без ограничений; сколько пользователей включить в отчёт о самых популярных сайтах)

  • site_user_time_date_type { table | list } (отчёт site_user_time_date в виде таблицы или списка)

  • datafile имя-файла (сохранить отчёт в виде файла для дальнейшей обработки)

  • datafile_delimiter ";"

  • datafile_fields user;date;time;url;connect;bytes;in_cache;out_cache;elapsed

  • datafile_url {ip | name}

  • weekdays 0-6 (какие дни недели помещать в отчёт)

  • hours 0-23 (какие часы помещать в отчёт)

  • dansguardian* и squidguard*

  • show_sarg_info yes (выводить сылку на сайт автора в каждом отчёте)

  • show_sarg_logo yes

  • parsed_output_log none (имя каталога для сохранения полуобработанных данных)

  • parsed_output_log_compress /bin/gzip

  • displayed_values { bytes | abbreviation}

  • authfail_report_limit строк (10)

  • denied_report_limit строк (10)

  • siteusers_report_limit строк (0)

  • squidguard_report_limit строк (10)

  • dansguardian_report_limit строк (10)

  • user_report_limit строк (10)

  • www_document_root, block_it - для общения со squidGuard и ACL

  • external_css_file /var/www/sarg/sarg.css

  • download_suffix "zip,arj,bzip,gz,ace,doc,iso,adt,bin,cab,com,dot,drv$,lha,lzh,mdb,mso,ppt,rtf,src,shs,sys,exe,dll,mp3,avi,mpg,mpeg"

  • ulimit максимальное-число-открытых-файлов

  • ntlm_user_format { username | domainname+username }

 

Ключи запуска sarg:

  • -a имя-или-IP-адрес (ограничить отчёт указанным клиентом)

  • -b имя-файла (отчёт по UserAgent)

  • -c имя-файла (список исключений)

  • -d дд/мм/гггг-дд/мм/гггг (ограничить интервалом дат)

  • -e email-адрес (кому послать отчёт)

  • -e stdout (выдать отчёт на стандартный вывод)

  • -f имя-конфигурационного-файла

  • -g формат-даты-в-отчёте (e - dd/mm/yy, u - mm/dd/yy)

  • -i (формировать отчёт по пользователям и IP адресам)

  • -l имя-журнала-squid (можно указывать несколько раз, но в порядке возрастания даты; понимает сжатые файлы, но разжимает их в файл и забывает удалить)

  • -n (преобразовывать IP адреса в имена)

  • -o имя-каталога (куда записывать отчёты)

  • -p (использовать в отчёте IP адреса вместо идентификаторов пользователей)

  • -s имя-сайта (ограничить отчёт указанным сайтом)

  • -t ЧЧ:ММ:СС (ограничить отчёт по времени суток)

  • -u имя-пользователя (ограничить отчёт указанным пользователем)

  • -w имя-католога-для-временных-файлов

  • -x (отладочная печать на stdout; на неё действует language и charset)

  • -z (?)

 

Практика - программа глючная и медленная, точнее очень глючная (sites_users содержит какую-то ерунду; забывает удалять и закрывать файлы - требуется ulimit 60000; не все графики создаются) и очень медленная (полный месячный отчёт - 180 GB трафика - обрабатывается в течение 2 часов). Сбор суммарной информации по использованию трафика пользователями за последний месяц:

time nice -19  sarg -d $(date --date "1 month ago" +%d/%m/%Y)-$(date --date "1 day ago" +%d/%m/%Y) \
  -x -z -l /squid/logs/access.log.5.gz ...

где /etc/sarg/sarg.conf содержит

graphs no
resolve_ip no
user_ip yes
topuser_sort_field BYTES reverse
user_sort_field BYTES reverse
index yes
overwrite_report yes
records_without_userid ip
report_type topusers
usertab /etc/sarg/usertab
privacy no
exclude_string имя-своего-домена
topuser_fields NUM DATE_TIME USERID CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE
user_report_fields CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE
topuser_num 0
displayed_values bytes
user_report_limit 0
ulimit 60000

 

Сбор информацию куда ходил конкретный пользователь (10 самых "прожорливых" пользователей) за последний месяц (15 минут CPU):

time nice -19 sarg -f /etc/sarg/sarg.top10user.conf \
  -d $(date --date "1 month ago" +%d/%m/%Y)-$(date --date "1 day ago" +%d/%m/%Y) \
  [-a IP-адрес] -x -z -l /squid/logs/access.log.5.gz ...

где /etc/sarg/sarg.top10user.conf содержит

graphs no
user_ip yes
topuser_sort_field BYTES reverse
user_sort_field BYTES reverse
records_without_userid ip
report_type topusers users_sites
usertab /etc/sarg/usertab
privacy no
exclude_string имя-своего-домена
topuser_fields NUM DATE_TIME USERID CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE
user_report_fields CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE
topuser_num 10
displayed_values bytes
user_report_limit 10
ulimit 60000

 

LightSquid - набор скриптов на perl для анализа журналов, не требует СУБД.

Ссылки:

Далее >>>

 

© Krio, Xbyte, BooM
2004-2012

id-sign