Если logrotate для файла access.log у squid настроен на маленький размер файла и стоит дискретная обработка логов через длительный период времени, то возможна ситуация когда access.log будет ротирован дважды в этот установленный период и часть трафика не будет учтена.
Схожая ситуация Допустим, файл ротируется каждый час, а обработчик логов запускается каждые 40 минут тогда имеем примерно следующее: 00:00 запущена вся система с нуля, файл access.log нулевой обработчик логов обрабатывает информацию за период до 00:00 00:40 обработчик логов обрабатывает информацию за период 00:00-00:40 01:00 файл access.log ротируется 01:20 запускается обработчик логов и должен обрабатывать информацию за период 00:40-01:20, но данные в интервале времени 00:40-01:00 еще не обработаны, но уже в архиве, и не попадают в статистику
частичное решение проблемы: в настройках logrotate для файла access.log вставить строку prerotate /путь/к/файлу/samsparser endscript
при этом остается ситуация, когда, допустим, за секунду до начала ротирования запустился samsparser и в момент ротирования работает, тогда обработчик, запускаемый перед ротацией обнаружит уже запущенную программу, закончит работу немедленно и файл будет ротирован в то время, когда значения считываются из него.
Во избежание этой проблемы можно добавить опцию --wait-myself при которой обработчик не заканчивает работу если обнаружил уже запущенную копию, а ждет ее завершения и, дождавшись, выполняет порученное задание.
sysinfo
(
s_proxy_id
INT NOT NULL ,
s_name
VARCHAR( 50 ) NOT NULL ,
s_version
VARCHAR( 10 ) NOT NULL ,
s_author
VARCHAR( 30 ) NULL DEFAULT 'anonymous',
s_info
VARCHAR( 1024 ) NOT NULL DEFAULT 'not available',
s_date
DATETIME NOT NULL ,
s_status
INT NOT NULL
);
UPDATE websettings SET s_version='2.9.9';
12) Дождаться когда пройдет время анализа access.log, если все прошло без ошибок,
то в таблице sysinfo должна появится запись о подключенном плагине
Этот плагин нужно активировать.
update sysinfo set s_status=1;
13) Если поле s_date в данной записи меняется, значит плагин загружен и активен.
Сам плагин тестовый и на самом деле всегда выдает одну и ту-же информацию.
Его можно деактивировать:
update sysinfo set s_status=0;
14) Выгрузить плагин пока можно только остановив демон, удалив файл плагина и снова запустив демон.
15) При возникающих проблемах рекомендую устанавливать уровень отладки 5
/usr/local/bin/samsdaemon -v -d5 -l file:/var/log/samsdaemon --fork
6й уровень еще выдержать можно, а выше это уже перебор
PS Если не трогать структуру БД и оставить ее версию 1.9.9, но подключить плагин и включить режим
verbose, то в сообщениях можно увидеть какой плагин подключен и что он сообщаетredirect
ADD s_dest
VARCHAR( 128 ) NULL ;
2) Создаем группу перенаправления
INSERT INTO redirect
( s_redirect_id
, s_name
, s_type
, s_dest
)
VALUES ( NULL , 'GroupName', 'replace', 'http://www.ru');
3) Заполняем группу шаблонами
INSERT INTO url
( s_url_id
, s_redirect_id
, s_url
)
VALUES ( NULL , '12', '*.mail.ru\b'),
( NULL , '12', 'http://www.pisem.net/');
12 - это значение s_redirect_id, полученное в п.2
4) Привязываем группу к шаблону
INSERT INTO samsdb
.sconfig
( s_shablon_id
, s_redirect_id
)
VALUES ( '1', '12');
12 - это значение s_redirect_id, полученное в п.2
1 - идентификатор шаблона
5) Перечитываем конфигурацию в редиректоре
squid -k reconfig
6) Теперь при попытке набрать адрес http://www.pisem.net/ или mail.ru, www.mail.ru и т.д.
Редиректор перенаправит на http://www.rushablon
ADD s_shablon_id2
BIGINT( 20 ) UNSIGNED NULL ;
2) В существующем шаблоне в поле s_shablon_id2 прописываем идентификатор СУЩЕСТВУЮЩЕГО шаблона.
3) Пересобираем демонов, останавливаем, обновляем, стартуем.
4) Теперь работать это будет так:
Если у шаблона, которому принадлежит пользователь, вторичный шаблон прописан (т.е. не NULL и не -1)
То вместо блокировки у пользователя меняется статус на "Временно в другом шаблоне", и все параметры берутся
из вторичного шаблона. Если же вдруг пользователь превысил лимиты и вторичного шаблона, то статус становится
"Неактивный". Для того чтобы в таких случаях корректно работали ограничения по трафику, необходимо чтобы
у самого пользователя стояло ограничение -1 (означающее что лимиты брать из шаблона). По окончанию периода
лимита счетчики пользователя очищаются и статус меняется на активный.
5) Какие могут быть проблемы и неувязки:
Q1) Разный тип авторизации основного и вторичного шаблона.
A1) Сам дурак, думай что делаешь.
Q2) Пользователи, временно находящиеся во вторичном шаблоне, так и не вернулись в основной, хотя
период ограничения основного шаблона закончился.
A2) Значит во вторичном шаблоне установлен другой период, они вернутся когда закончится период
вторичного шаблона.
Q3) Пользователя переместили в другой шаблон, а он игнорирует настройки нового шаблона.
A3) Видимо, его переместили когда у него был статус "Временно в другом шаблоне",
и у нового шаблона установлен вторичный. Поменяйте статус пользователя на "Активный".udscripts
(
s_proxy_id
INT NOT NULL ,
s_name
VARCHAR( 50 ) NOT NULL ,
);
Заполняется таблица при старте демона и при получении команды на перечитывание настроек
(или реконфигурировании squid). Так-же возможен вариант заполнения (проверки актуальности) таблицы
при парсинге лог файлов squid.Коды в samslog 10 - служебные сообщения от демонов (samsdaemon, samsparser, sams2redir) 04 - сообщения от администраторов (устарело) 03 - сообщения об изменении базы записей squid 02 - сообщения, связанные с изменением групп адресов 01 - сообщения, связанные с изменением состояния пользователей