Efendy
|
|
« Ответ #15 : 18 Мая 2017, 10:12:39 » |
|
создавать и заполнять x-таблицу с округлением времени, иначе трафик будет на каждую секунду. Думаю, округлять лучше минут до 5, если на каждую минуту - все таки будет перекос из-за что 40 секунд могут попасть или в одну и другую минуту
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #16 : 08 Февраля 2018, 21:31:38 » |
|
Переделал процедуру так, чтобы велся график трафика. Внимание! Необходимо в конфиге collectors.cfg закомментировать все коллекторы (list => [],) и запустить модуль collectors - это нужно только для того, чтобы он создавал на каждый день X-таблицу типа X2018_2_8. Срезы кратны минуте (в процедуре число 60) DROP PROCEDURE IF EXISTS `radupdate`; DELIMITER $$ CREATE PROCEDURE `radupdate`(IN login VARCHAR(64), IN ip VARCHAR(16), IN properties VARCHAR(255), IN ses VARCHAR(32), IN trafin BIGINT(20)) BEGIN DECLARE usr_id INT; DECLARE usr_ip VARCHAR(15) DEFAULT NULL; DECLARE t_in BIGINT; SELECT id INTO usr_id FROM users WHERE name=login LIMIT 1; SELECT get_ip(usr_id) INTO usr_ip; CALL set_auth(usr_ip, CONCAT('mod=pppoe;',REPLACE(properties,':',''))); SELECT trafin - IFNULL((SELECT traf_in FROM ses_traf WHERE ses_id=ses LIMIT 1),0) INTO t_in; UPDATE users_trf SET in1=in1 + t_in WHERE uid=usr_id; INSERT INTO ses_traf SET ses_id=ses, traf_in=trafin, time=UNIX_TIMESTAMP() ON DUPLICATE KEY UPDATE traf_in=trafin, time=UNIX_TIMESTAMP(); SET @s = CONCAT('INSERT INTO X', YEAR(NOW()), '_', MONTH(NOW()), '_', DAY(NOW()), ' VALUES(?,?,?,?,?,?)'); PREPARE stmt1 FROM @s; SET @iface = 0; SET @cls = 1; SET @ts = CEIL(UNIX_TIMESTAMP() / 60) * 60; SET @usr_id = usr_id; SET @t_in = t_in; SET @t_out = 0; EXECUTE stmt1 USING @usr_id, @iface, @ts, @cls, @t_in, @t_out; DEALLOCATE PREPARE stmt1; END$$ DELIMITER ;
|
|
|
Записан
|
|
|
|
k291
|
|
« Ответ #17 : 10 Февраля 2018, 15:21:24 » |
|
Будет работать в связке NoDeny+Radius+Mikrotik+DHCP ?
|
|
|
Записан
|
|
|
|
Cell
NoDeny
Спец
Карма: 52
Offline
Сообщений: 1407
|
|
« Ответ #18 : 10 Февраля 2018, 18:57:49 » |
|
Насчет DHCP большие сомнения. В связке Hotspot - работает однозначно.
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #19 : 10 Февраля 2018, 20:39:44 » |
|
Даю общий ответ: если устройство посылает на радиус трафик - будет работать. Возможно придется поменять название атрибута для трафика (со стандартизацией у нас проблемы). И, естественно, необходимо не тупо копировать процедуру, а взять вашу и вставить в нее код, который сохраняет трафик
|
|
|
Записан
|
|
|
|
Cell
NoDeny
Спец
Карма: 52
Offline
Сообщений: 1407
|
|
« Ответ #20 : 10 Февраля 2018, 22:20:56 » |
|
Учитывается трафик только в одну сторону?
Начал разбираться и тоже удивился. А какой смысл в том чтобы только траф_ин учитывать? Я конечно все понимаю, но не на живых же абонентах экспериментировать с этим делом?
|
|
|
Записан
|
|
|
|
Roman
|
|
« Ответ #21 : 10 Февраля 2018, 22:44:58 » |
|
Учитывается трафик только в одну сторону?
Начал разбираться и тоже удивился. А какой смысл в том чтобы только траф_ин учитывать? Я конечно все понимаю, но не на живых же абонентах экспериментировать с этим делом? Реально готов тоже упереться в аккаунтинг через радиус, завтра еще раз перечитаю посты, продумаю логику сквозь промежуточные таблици... Я не силен в перле, но можно было бы в модули коллекторов добавить модуль Radius. Модуль создает таблицу типа HEAP (в памяти) в которую через радиус аккаунтинг запросы добавляются записи. Далее раз в таймут конфига происходит парсинг временной таблицы и заполнение X_date таблиц, с очисткой временной таблицы. Я могу это все реализовать, временную таблицу заполнять из радиуса, не проблема. Скриптом по крону раз в минуту парсить и складывать в X_date таблицы, но у меня о они игнорятся биллингом, мне нужен точный формат X_date таблиц. Готов принять участие в создании и тестировании модуля.
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #22 : 11 Февраля 2018, 08:48:54 » |
|
Зачем тебе парсить и укладывать данные в X-таблицы, если я уже сделал проще и привел пример?
Насчет исходящего трафика. Его добавить элементарно, неужели сами не догадались? Я вас научил прыгать на правой ноге, думал вы догадаетесь как это делать на левой
|
|
|
Записан
|
|
|
|
elite
Начальник планеты
NoDeny
Спец
Карма: 52
Offline
Сообщений: 1226
In LAN we trust!
|
|
« Ответ #23 : 12 Февраля 2018, 18:30:23 » |
|
Можно ses_traf в memory хранить
|
|
|
Записан
|
|
|
|
elite
Начальник планеты
NoDeny
Спец
Карма: 52
Offline
Сообщений: 1226
In LAN we trust!
|
|
« Ответ #24 : 21 Мая 2018, 07:33:24 » |
|
схема рабочая, но крайний срез трафика обновляется в режиме реального времени, не очень удобно
|
|
|
Записан
|
|
|
|
skreep
Пользователь
Карма: 2
Offline
Сообщений: 76
|
|
« Ответ #25 : 16 Сентября 2018, 19:08:30 » |
|
настроил у себя сбор трафика по Radius и получил вот такую ошибку
Sun Sep 16 00:00:00 2018 : Error: [sql] Couldn't update SQL accounting ALIVE record - Table 'nodeny.X2018_9_16' doesn't exist Sun Sep 16 00:00:00 2018 : Error: rlm_sql_mysql: Cannot store result Sun Sep 16 00:00:00 2018 : Error: rlm_sql_mysql: MySQL error 'Table 'nodeny.X2018_9_16' doesn't exist' . . . Sun Sep 16 00:00:49 2018 : Error: [sql] Couldn't update SQL accounting ALIVE record - Table 'nodeny.X2018_9_16' doesn't exist Sun Sep 16 00:00:49 2018 : Error: rlm_sql_mysql: Cannot store result Sun Sep 16 00:00:49 2018 : Error: rlm_sql_mysql: MySQL error 'Table 'nodeny.X2018_9_16' doesn't exist' Так понимаю что не успевает создатся таблица, как исправить, потому что из-за ошибки у клиенттов пропадает авторизация и блокируется доступ такая ошибка повторяется каждую ночь
У меня база реплицируется из-за чего имеется еще одна ошибка Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. INSERT... ON DUPLICATE KEY UPDATE on a table with more than one UNIQUE KEY is uns afe Statement: call radupdate('14:cc:20:73:75:99','10.100.2.108', 'vlan=bond0.126;int=ipoe305', '58e72eb2e3d70de0', (0 * POWER(2, 32)) + 15809915, (0 * POWER(2, 32)) + 61 05836)
Подскажите как исправить запрос что б без ошибок все работало mysql 5.5.6
|
|
« Последнее редактирование: 16 Сентября 2018, 19:52:02 от skreep »
|
Записан
|
|
|
|
skreep
Пользователь
Карма: 2
Offline
Сообщений: 76
|
|
« Ответ #26 : 18 Сентября 2018, 10:31:51 » |
|
настроил у себя сбор трафика по Radius и получил вот такую ошибку
Sun Sep 16 00:00:00 2018 : Error: [sql] Couldn't update SQL accounting ALIVE record - Table 'nodeny.X2018_9_16' doesn't exist Sun Sep 16 00:00:00 2018 : Error: rlm_sql_mysql: Cannot store result Sun Sep 16 00:00:00 2018 : Error: rlm_sql_mysql: MySQL error 'Table 'nodeny.X2018_9_16' doesn't exist' . . . Sun Sep 16 00:00:49 2018 : Error: [sql] Couldn't update SQL accounting ALIVE record - Table 'nodeny.X2018_9_16' doesn't exist Sun Sep 16 00:00:49 2018 : Error: rlm_sql_mysql: Cannot store result Sun Sep 16 00:00:49 2018 : Error: rlm_sql_mysql: MySQL error 'Table 'nodeny.X2018_9_16' doesn't exist' Так понимаю что не успевает создатся таблица, как исправить, потому что из-за ошибки у клиенттов пропадает авторизация и блокируется доступ такая ошибка повторяется каждую ночь
может таблицу создавать в продцедуре?
тут в таблице X2018_9_16 не хватает данных за первую минуту текущего дня, и лишние данные за первую минуту 17 числа соответсвенно график трафика за сутки поломан.
У меня база реплицируется из-за чего имеется еще одна ошибка Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. INSERT... ON DUPLICATE KEY UPDATE on a table with more than one UNIQUE KEY is uns afe Statement: call radupdate('14:cc:20:73:75:99','10.100.2.108', 'vlan=bond0.126;int=ipoe305', '58e72eb2e3d70de0', (0 * POWER(2, 32)) + 15809915, (0 * POWER(2, 32)) + 61 05836)
Подскажите как исправить запрос что б без ошибок все работало mysql 5.5.6
Тут все исправилось binlog_format=mixed
|
|
« Последнее редактирование: 18 Сентября 2018, 12:47:07 от Efendy »
|
Записан
|
|
|
|
SlavikUA
Пользователь
Карма: 0
Offline
Сообщений: 21
|
|
« Ответ #27 : 24 Марта 2019, 21:17:33 » |
|
Є питання: зміна в /usr/local/etc/raddb/sql.conf Код: postauth_query = "call radupdate('%{User-Name}','%{Framed-IP-Address}',\ 'user=%{Calling-Station-Id};nas=%{NAS-IP-Address}',%{Acct-Session-Id},0)" в Радіус3 ця процедура відрізняється досить кардинально.
|
|
|
Записан
|
|
|
|
Pa4ka
|
|
« Ответ #28 : 25 Марта 2019, 21:03:14 » |
|
Є питання: зміна в /usr/local/etc/raddb/sql.conf Код: postauth_query = "call radupdate('%{User-Name}','%{Framed-IP-Address}',\ 'user=%{Calling-Station-Id};nas=%{NAS-IP-Address}',%{Acct-Session-Id},0)" в Радіус3 ця процедура відрізняється досить кардинально.
пошукайте по форуму було по freeradius3 А процедура яка? radupdate(це процедура бази данних) А тут просто запит до бази з змінними і викликається call radupdate(***);
|
|
|
Записан
|
|
|
|
SlavikUA
Пользователь
Карма: 0
Offline
Сообщений: 21
|
|
« Ответ #29 : 10 Апреля 2019, 19:17:39 » |
|
Підкажіть хто небуть, вже весь мозг зірвало. В мене звязка Nodeny+, Mikrotik, Freeradius3 не працює збір трафіка і графіки, перевірив таблицю ses_traf а вона пуста. Раніше запускав радіус з виводом на екран, то радіус писав що uid немає значення по замовчуванню. Можливо щось треба включити в мікротіку, хоча акаунтінг включено, в конфігурації радіуса виклик вункції параметри правильні згідно документації на мікрот.
|
|
|
Записан
|
|
|
|
|