DataLife Engine / Установка и настройка SARG для анализа логов Squid на Ubuntu 22.04

Установка и настройка SARG для анализа логов Squid на Ubuntu 22.04


SARG — это анализатор логов прокси-сервера Squid, который позволяет формировать подробные HTML-отчёты об активности пользователей, посещаемых ресурсах и объёме переданных данных. В данной инструкции мы установим и настроим SARG, а также веб-сервер NGINX для публикации отчётов.

Предполагается, что у вас уже установлен и настроен Squid для работы в качестве прокси-сервера.

Установка SARG


Поскольку пакет sarg входит в состав стандартных репозиториев Debian и Ubuntu, то для его установки достаточно выполнить следующую команду:
apt install sarg -y

Настройка и запуск


Откроем конфигурационный файл SARG и приведём его к следующему виду:
vi /etc/sarg/sarg.conf
access_log /var/log/squid/access.log
title "Squid User Access Reports"
font_face Tahoma,Verdana,Arial
header_color darkblue
header_bgcolor blanchedalmond
font_size 9px
background_color white
text_color #000000
text_bgcolor lavender
title_color green
temporary_dir /tmp
output_dir /var/lib/sarg
resolve_ip
user_ip no
topuser_sort_field BYTES reverse
user_sort_field BYTES reverse
exclude_users /etc/sarg/exclude_users
exclude_hosts /etc/sarg/exclude_hosts
date_format u
lastlog 0
remove_temp_files yes
index yes
index_tree file
overwrite_report yes
records_without_userid ip
use_comma yes
mail_utility mailx
topsites_num 100
topsites_sort_order CONNECT D
index_sort_order D
exclude_codes /etc/sarg/exclude_codes
max_elapsed 28800000
report_type topusers topsites sites_users users_sites date_time denied auth_failures site_user_time_date downloads
usertab /etc/sarg/usertab
long_url no
date_time_by bytes
charset Latin1
show_successful_message no
show_read_statistics no
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
external_css_file /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"

Так как стандартное оформление отчётов SARG выглядит устаревшим, создадим собственный файл стилей sarg.css с более современным оформлением.

vi /var/lib/sarg/sarg.css
.logo {font-family:-apple-system,"Segoe UI",Roboto,sans-serif;font-size:14px;color:#0f172a;text-align:center;vertical-align:middle;border:none;padding:0px;margin-bottom:5px;}
.logo th {padding:0px;}
.logo img {vertical-align:middle;padding:0px;border:0px none;}
.body {font-family:-apple-system,"Segoe UI",Roboto,sans-serif;font-size:13px;color:#1e293b;background-color:#f8fafc;background-image:url();}
.info {font-family:-apple-system,"Segoe UI",Roboto,sans-serif;font-size:11px;text-align:center;margin-top:2em;margin-bottom:1em;padding-top:1em;color:#64748b;border-top:1px solid #e2e8f0;}
.info a:link,a:visited {font-family:-apple-system,"Segoe UI",Roboto,sans-serif;color:#475569;font-size:11px;text-decoration:none;}
.title {width:100%;text-align:center;margin-bottom:1em;}
div.title > table {margin:auto;}
.title_c {font-family:-apple-system,"Segoe UI",Roboto,sans-serif;font-size:14px;color:#0f172a;background-color:transparent;text-align:center;font-weight:600;}
.title_l {font-family:-apple-system,"Segoe UI",Roboto,sans-serif;font-size:14px;color:#0f172a;background-color:transparent;text-align:left;font-weight:600;}
.title_r {font-family:-apple-system,"Segoe UI",Roboto,sans-serif;font-size:14px;color:#0f172a;background-color:transparent;text-align:right;font-weight:600;}
.index {width:100%;text-align:center;}
div.index > table {margin:auto;}
.report {width:100%;text-align:center;}
div.report > table {margin:auto;}
.header_l {font-family:-apple-system,"Segoe UI",Roboto,sans-serif;font-size:12px;color:#475569;background-color:#f1f5f9;text-align:left;border-right:1px solid #e2e8f0;border-bottom:1px solid #e2e8f0;font-weight:600;padding:9px 12px;position:sticky;top:0;z-index:10;}
.header_r {font-family:-apple-system,"Segoe UI",Roboto,sans-serif;font-size:12px;color:#475569;background-color:#f1f5f9;text-align:right;border-right:1px solid #e2e8f0;border-bottom:1px solid #e2e8f0;font-weight:600;padding:9px 12px;position:sticky;top:0;z-index:10;}
.header_c {font-family:-apple-system,"Segoe UI",Roboto,sans-serif;font-size:12px;color:#475569;background-color:#f1f5f9;text-align:center;border-right:1px solid #e2e8f0;border-bottom:1px solid #e2e8f0;font-weight:600;padding:9px 12px;position:sticky;top:0;z-index:10;}
.data {font-family:-apple-system,"Segoe UI",Roboto,sans-serif;color:#1e293b;font-size:12px;background-color:#ffffff;text-align:right;border-right:1px solid #f1f5f9;border-bottom:1px solid #f1f5f9;padding:7px 12px;font-variant-numeric:tabular-nums;}
.data a:link,a:visited {font-family:-apple-system,"Segoe UI",Roboto,sans-serif;color:#1e40af;font-size:12px;background-color:#ffffff;text-align:right;text-decoration:none;}
.data2 {font-family:-apple-system,"Segoe UI",Roboto,sans-serif;color:#1e293b;font-size:12px;background-color:#ffffff;text-align:left;border-right:1px solid #f1f5f9;border-bottom:1px solid #f1f5f9;padding:7px 12px;}
.data2 a:link,a:visited {font-family:-apple-system,"Segoe UI",Roboto,sans-serif;color:#1e40af;font-size:12px;text-align:left;background-color:#ffffff;text-decoration:none;}
.data3 {font-family:-apple-system,"Segoe UI",Roboto,sans-serif;color:#1e293b;font-size:12px;background-color:#ffffff;text-align:center;border-right:1px solid #f1f5f9;border-bottom:1px solid #f1f5f9;padding:7px 12px;font-variant-numeric:tabular-nums;}
.data3 a:link,a:visited {font-family:-apple-system,"Segoe UI",Roboto,sans-serif;color:#1e40af;font-size:12px;text-align:center;background-color:#ffffff;text-decoration:none;}
.text {font-family:-apple-system,"Segoe UI",Roboto,sans-serif;color:#1e293b;font-size:12px;background-color:#ffffff;text-align:right;}
.link {font-family:-apple-system,"Segoe UI",Roboto,sans-serif;font-size:12px;color:#1e40af;}
.link a:link,a:visited {font-family:-apple-system,"Segoe UI",Roboto,sans-serif;font-size:12px;color:#1e40af;text-decoration:none;display:inline-block;padding:6px 14px;margin:2px;background-color:#eff6ff;border:1px solid #dbeafe;border-radius:6px;font-weight:500;}
a > img {border:none;}
.data a:hover,.data2 a:hover,.data3 a:hover {text-decoration:underline;}
.link a:hover {background-color:#1e40af;color:#ffffff;border-color:#1e40af;}
tbody tr:nth-child(even) .data,tbody tr:nth-child(even) .data2,tbody tr:nth-child(even) .data3 {background-color:#fafbfc;}
tbody tr:nth-child(even) .data a,tbody tr:nth-child(even) .data2 a,tbody tr:nth-child(even) .data3 a {background-color:#fafbfc;}
tbody tr:hover .data,tbody tr:hover .data2,tbody tr:hover .data3 {background-color:#eff6ff;}
tbody tr:hover .data a,tbody tr:hover .data2 a,tbody tr:hover .data3 a {background-color:#eff6ff;}

Запускаем формирование отчета:
sarg -x

После успешного выполнения команды в каталоге /var/lib/sarg будут созданы HTML-отчёты.

Установка NGINX


Для просмотра сформированных отчётов нам потребуется веб-сервер NGINX:
apt install nginx -y

Отредактируем конфиг виртуального хоста по умолчанию и укажем нужный нам root:
vi /etc/nginx/sites-available/default
server {
        ...
        root /var/lib/sarg;
        ...
}

Проверяем и применяем изменения:
nginx -t
nginx -s reload

Проверить результат можно, открыв в браузере:

http://IP-адрес-сервера/

Автоматизируем процесс формирования новых отчетов, добавив задание в запланировщик задач cron.
crontab -e

Добавляем следующее:
*/5 * * * * /usr/bin/sarg -x

Запускаем формирование отчетов каждые 5 минут.
Вчера, 18:49
Вернуться назад