SAMS v. 1.0.5. Что с арифметикой?

Здравствуйте, уважаемое сообщество!

Есть такая проблема:

Считаю свой трафик. "Получено... Из КЭШ... Трафик"
Сегодня в 10:00 3438440 200297 3Mb285kb
При этом в суммарной статистике за месяц 2Mb14kb
Сегодня в 11:30 10980924 423669 10Mb483kb
В суммарной статистике стало 3Mb285kb
В дневной статистике цифры правдоподобные, а сумма что-то очень отстает, и не только внутри одного дня. Ну, и пользователей конечно не отключает.

Что рыть?

По "прописям"
CentOS 5.5
httpd 2.2.3-43.el5.centos
mysql 5.0.77-4.el5_5.3
php 5.1.6-27.el5
squid 7:2.6.STABLE21-6.el5
samba 3.0.33-3.29.el5_5
SAMS v. 1.0.5
Авторизация ncsa.

добрый день
---
sams 1.0.5 (авторизация по IP)
debian 5.0.7
apache 2.2.9
mysql 5.0.51a
php 5.2.6
squid 2.7.STABLE3
---
проблема с подсчетом трафика как в теме http://www.permlug.org/node/3556
если зайти под администратором и кликнуть на пользователя то показывает 130 мб положено на месяц и истрачено 5 мб, если поставить 5.5 мб и полазить под пользователем, он отключается через положенное время парсинга логов сквида (3 минуты), но если зайти в статистику по дням или по сайтам то там трафик измеряется в гигабайтах, это происходит и под администратором и под аудитором
настройки выполнял по оф документации http://sams.nixdev.net/wiki/SamsDebianLennyInstall
пакеты брал с http://nixdev.net/release/sams/debian/lenny/
----
не подскажите где я мог ошибиться в настройках
заранее благодарен

Имею похожую проблему расхождения цифр общего и детального трафика пользователей в 1.0.4. "Пересчет трафика" помогает. Есть предположение, что расхождение может быть связано с активным использованием перенаправления для баннеров и счетчиков.

Подскажите, а можно ли делать этот "пересчет трафика" из командной строки, а не только из web интерфейса? Я бы просто по крону раз день его делал бы.

.

уточнение...
ИП адреса только у некоторых пользователей, у большенства нормально (в статистике о посещаемых сайтах)

Здравствуйте...
сталкнулся с такой же проблемой, трафик у кого то считает у кого н-не у когото частично...
решение приведу цитатой:

"No connect to DNS server. NODNSSERVER=0" и "Ошибка сегментирования"
- пройденный этап. Галочку "Преобразовывать DNS имена" выключил, после этого sams -d отработал без падений.

помогло всё считает, НО теперь в статистику о сайтах попадают одни ИП адреса, а не имена... что значительно затрудняют работу блэклистов...

подскажите как поправить эту ошибочку, чтоб и этой галочкой всё работало...

Debian 5.0.4 SAMS 1.0.5 делал всё по мануалу, раньше на старом серваке стояла версия 1,0,4 , таких ошибок не было (ВРОДЕ) :)
(авторизация по ИП)
давно не писал т.к. 2.5 года работало без нареканий...

Давненько не заглядывал. Про "мертвые души" - понял.
Дай-ка отпишусь про текущее состояние.
Мне позарез нужно было внедрить квоты - и сделал. Пользователи трепещут :-) Версию не менял. Проблемы продолжаются, а работает оно при помощи костылей в виде регулярного надавливания кнопки "пересчитать трафик пользователей". По крайней мере есть время на раздумья и пробы.

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

А про

> 26994+114678488=114705482 откуда взялось 114678488? должно же быть 114651952!

все очень просто. В строках 295-304 demon.c реально увеличивается счетчик, здесь все правильно. А при выводе диагностики в строках 340-341 прибавляется к уже и так увеличенному значению, но никуда не записывается и на подсчет не влияет.

Строки 295-304
if(REALTRAF==1)
{
users[samsuser-1].traffic+=size-hitsize;
if(DEBUG>0)
printf("REALTRAFfic = %15.0lf - %ld\n", size, hitsize);
}
else
{
users[samsuser-1].traffic+=size;
}
============================
Строки 340-341
if(DEBUG!=0)
printf("user %s/%s, ip=%d.%d.%d.%d traffic: %.0f+%.0f=%.0f limit:%.0f\n",users[samsuser-1].domain,users[samsuser-1].user,users[samsuser-1].ip[0],users[samsuser-1].ip[1],users[samsuser-1].ip[2],users[samsuser-1].ip[3],size,users[samsuser-1].traffic,size+users[samsuser-1].traffic,users[samsuser-1].quote);

>И еще прикол: при нажатии кнопки "Статистика всех пользователей домена" - строится диаграмма и таблица по убыванию, а в той таблице несколько (5 из 111) пользователей с трафиком, но без имени.

А вот это известный глюк. Связан с переименованием/удалением пользователей. Мертвые души остаются.

>И еще прикол: при нажатии кнопки "Статистика всех пользователей домена" - строится диаграмма и таблица по убыванию, а в той таблице несколько (5 из 111) пользователей с трафиком, но без имени.

А вот это известный глюк. Связан с переименованием/удалением пользователей. Мертвые души остаются.

Ответил. Готов быть кроликом.

Проблему удалось найти, подробное описание: http://sams.nixdev.net/ticket/507
Не могу точно сказать как это влияет на отчеты, но в принципе причина видна.

Если есть желание эксперементировать дальше - отписал в почту под ником.

Теперь повторить бы
28771+349683259=349712030
317+349683259=349683576
266+349683259=349683525
Но ума не приложу, как.

Ну что ж, вот результаты. Свежая установка на другой машинке, все пакеты те же.
Да! Я прохлопал! Самба тоже той же версии, но... на обеих машинках не стоит. Но поскольку NCSA...
Всю информацию в базе создавал заново, ничего из старой не переносил. Пользователей всего два.
Итак:
---------------------------------------------------

42 SQUID log string:
1282308976.533 325 10.129.0.43 TCP_MISS/200 521 GET http://www.google-analytics.com/__utm.gif? midash DIRECT/74.125.79.101 image/gif
Serch SAMS user: /midash user found
Test local domain: local domain not found
user /midash, ip=0.0.0.0 traffic: 521+1255897=1256418 limit:5242880
update db: 2010-8-20 16:56:16 midash/ 521 http://www.google-analytics.com/__utm.gif?
Save new access.log file size
database appended

43 SQUID log string:
1282308976.698 40 10.129.0.43 TCP_MISS/200 14050 GET http://top.rbc.ru/top_pics/firemap_c.swf midash DIRECT/82.204.218.114 application/x-shockwave-flash
Serch SAMS user: /midash user found
Test local domain: local domain not found
user /midash, ip=0.0.0.0 traffic: 14050+1269947=1283997 limit:5242880
update db: 2010-8-20 16:56:16 midash/ 14050 http://top.rbc.ru/top_pics/firemap_c.swf
Save new access.log file size
database appended

44 SQUID log string:
1282308977.308 160 10.129.0.43 TCP_MISS/200 6895 GET http://pics.rbc.ru/img/autonews/onews/2010/08/13/135901.11201_150.jpg midash DIRECT/80.68.246.110 image/jpeg
Serch SAMS user: /midash user found
Test local domain: local domain not found
user /midash, ip=0.0.0.0 traffic: 6895+1276842=1283737 limit:5242880
update db: 2010-8-20 16:56:17 midash/ 6895 http://pics.rbc.ru/img/autonews/onews/2010/08/13/135901.11201_150.jpg
Save new access.log file size
database appended
------------------------------------------------------------------
521+1255897=1256418
14050+1269947=1283997
6895+1276842=1283737

Повторить удалось!

O'k. А я поставлю-ка все заново на тестовую машинку. Получится ли повторить достигнутое? Может, какие-то тонкости в содержимом базы?

В выходные посмотрю на исходник sams из 1.0.5 - по результатам может напишу что-то интересное.

Я конечно дико извиняюсь, что так надоедаю, но вот свежий, еще более увлекательный кусочек лога:

-------------------------------------------------------------
186 SQUID log string:
1282217325.364 914 10.129.0.174 TCP_MISS/302 458 GET http://www.sunhome.ru/tests/nature/6 medvedev DIRECT/62.152.60.186 text/html
Serch SAMS user: /medvedev user found
Test local domain: local domain not found
user /medvedev, ip=0.0.0.0 traffic: 458+114651494=114651952 limit:300000000
update db: 2010-8-19 15:28:45 medvedev/ 458 http://www.sunhome.ru/tests/nature/6
Save new access.log file size
database appended

187 SQUID log string:
1282217325.438 74 10.129.0.174 TCP_MISS/200 26994 GET http://www.sunhome.ru/tests/nature/7 medvedev DIRECT/62.152.60.186 text/html
Serch SAMS user: /medvedev user found
Test local domain: local domain not found
user /medvedev, ip=0.0.0.0 traffic: 26994+114678488=114705482 limit:300000000
update db: 2010-8-19 15:28:45 medvedev/ 26994 http://www.sunhome.ru/tests/nature/7
Save new access.log file size
database appended

188 SQUID log string:
1282217326.550 99 10.129.0.174 TCP_MISS/200 464 GET http://www.google-analytics.com/__utm.gif? medvedev DIRECT/66.102.13.102 image/gif
Serch SAMS user: /medvedev user found
Test local domain: local domain not found
user /medvedev, ip=0.0.0.0 traffic: 464+114678952=114679416 limit:300000000
update db: 2010-8-19 15:28:46 medvedev/ 464 http://www.google-analytics.com/__utm.gif?
Save new access.log file size
database appended

189 SQUID log string:
1282217326.804 118 10.129.0.174 TCP_MISS/200 637 GET http://www.sunhome.ru/counter.php? medvedev DIRECT/62.152.60.186 image/gif
Serch SAMS user: /medvedev user found
Test local domain: local domain not found
user /medvedev, ip=0.0.0.0 traffic: 637+114679589=114680226 limit:300000000
update db: 2010-8-19 15:28:46 medvedev/ 637 http://www.sunhome.ru/counter.php?
Save new access.log file size
database appended
-----------------------------------------------------
Арифметические выжимки:

458+114651494=114651952
26994+114678488=114705482 откуда взялось 114678488? должно же быть 114651952!
464+114678952=114679416
637+114679589=114680226

А если посмотреть с другой стороны:

114678488-114651494=26994
114678952-114678488=464
114679589-114678952=637

Так и должно быть? Что с чем складывается, когда и куда записывается - не пойму.

Действительно, правильный совет! Спасибо!
Я не обхожу разложенные грабли, я приобретаю опыт!

"No connect to DNS server. NODNSSERVER=0" и "Ошибка сегментирования"
- пройденный этап. Галочку "Преобразовывать DNS имена" выключил, после этого sams -d отработал без падений.
Но вот кусочек его лога:
------------------------------------------------
1 SQUID log string:
1282059912.818 28 10.129.0.2 TCP_MISS/200 28771 GET http://start.stack.net/ midash DIRECT/217.73.196.5 text/html
Serch SAMS user: /midash user found
Test local domain: local domain not found
user /midash, ip=0.0.0.0 traffic: 28771+349683259=349712030 limit:0
update db: 2010-8-17 19:45:12 midash/ 28771 http://start.stack.net/
Save new access.log file size
database appended

2 SQUID log string:
1282059913.006 24 10.129.0.2 TCP_IMS_HIT/304 317 GET http://start.stack.net/start.css midash NONE/- text/css
Serch SAMS user: /midash user found
Test local domain: local domain not found
user /midash, ip=0.0.0.0 traffic: 317+349683259=349683576 limit:0
update db: 2010-8-17 19:45:13 midash/ 317 http://start.stack.net/start.css
Save new access.log file size
database appended

3 SQUID log string:
1282059913.051 43 10.129.0.2 TCP_MISS/304 266 GET http://start.stack.net/images/spacer.gif midash DIRECT/217.73.196.5 -
Serch SAMS user: /midash user found
Test local domain: local domain not found
user /midash, ip=0.0.0.0 traffic: 266+349683259=349683525 limit:0
update db: 2010-8-17 19:45:13 midash/ 266 http://start.stack.net/images/spacer.gif
Save new access.log file size
database appended
-------------------------------------------------------------------------
Прибавляет, но не записывает результат в базу. Прибавляет каждый раз к одной и той же величине.

Как-то я совсем забыл про наш любимый совет:

Останавливаем демон sams
Разгоняем всех пользователей
Тестовым пользователем генерим некий объем трафика
Измеряем сколько трафика у тестового пользователя в БД
Потом запускаем sams -d и внимательно читаем логи, для каждого url в access.log будет приведен его разбор

Какой-то раздрай.

Четыре дня усиленных поисков привели-таки к успеху :-) - я нашел кнопку "Пересчитать трафик пользователей" и стал ею активно пользоваться. После ее нажатия суммарные счетчики приходят в норму, а считать потом все равно продолжают неправильно. Если при пересчете трафик пользователя превысил квоту - у пользователя появляется мигающая красная точка, но он не блокируется. Если у (тестового) пользователя квота превышается без пересчета, то он нормально отключается по превышению. Причем трафик потом, у уже отключенного пользователя увеличился еще на какую-то величину. Возможно, и обычный пользователь будет отключен, если квоту превысит величина трафика "до пересчета".
И еще прикол: при нажатии кнопки "Статистика всех пользователей домена" - строится диаграмма и таблица по убыванию, а в той таблице несколько (5 из 111) пользователей с трафиком, но без имени. В разных строках таблицы, "вразбивку". Лазание по таблицам мускуля никаких зацепок не дало - там безымянных пользователей нет в обеих базах. У всех пользователей логины и пароли набраны цифрами и латинскими буквами.

Ничего не понимаю.

С ротацией я погорячился. Ошибка идет постоянно, даже при просмотре единственной страницы считается не все. Похоже, считаются не все файлы, а не каждый не полностью. Отдельный большой файл считается правильно. Пытаюсь понять закономерность.

По поводу арифметики пока тоже ничего подсказать не могу.

С ротацией log'ов sams уже давно работает корректно, поэтому врядли она стала причиной.
Парсить логи можно и реже, всем только лучше будет.

Проблема пока не разрешилась. Пытаюсь понять, есть ли закономерность в том, что попадает, а что не попадает в сумму.
Вопрос может и глупый, но мне для понимания важен: а ротация логов сюда может быть причастна? Ротация по умолчанию еженедельная, размер лога не больше сотен мегов, опрос логов самсом ежеминутный.

А пореже не нужно сделать опрос логов? Превышение квоты за этот промежуток времени не сильно волнует.

Не нашел ничего, кроме "Upgrade SAMS database". Не помогло, суммарные счетчики так и остались маленькими.
Но ведь счетчики все же считают, но считают неверно.
Даже если предыдущее значение счетчика ложное, все равно, прибавить-то должно правильно. А оно прибавляет по чуть-чуть...

Как мне помнится - в web-интерфейсе должна быть кнопка пересчитать трафик за месяц.
Скорее всего был какой-то сбой и суммарный трафик некорректен.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".