Страница 3 из 4

Re: Подсчет трафика

Добавлено: 03 дек 2013, 14:25
bersek
скрипт частично допилил, надо еще доделывать) еще раз спасибо) вот теперь вопрос встал, после ребута или аварийного отключения не сохраняет трафик, может есть какое нибудь решение что б сохранял? кинуть в свою память ее или еще какие костыли?

Re: Подсчет трафика

Добавлено: 03 дек 2013, 14:27
vqd
так вы же в файл писать собираетесь, а там даже после полного сброса данные сохраняются

Re: Подсчет трафика

Добавлено: 03 дек 2013, 14:36
bersek
ну это по своему как то не то. мне получается надо каждую минуту например писать в файл и скидывать, а потом считать(руками или же скриптом), просто думал может есть где то в недрах микроштыка галочка, или же команда, что б сохранял в свою "энергонезависимую" память :men:

Re: Подсчет трафика

Добавлено: 03 дек 2013, 14:46
vqd
Чего считывать? Зачем считывать? Пожалуй только один раз когда счетчики обнулятся )))
Опять же это и есть энергонезависимая память ))

Re: Подсчет трафика

Добавлено: 03 дек 2013, 15:17
podarok66
bersek писал(а):ну это по своему как то не то. мне получается надо каждую минуту например писать в файл и скидывать, а потом считать(руками или же скриптом), просто думал может есть где то в недрах микроштыка галочка, или же команда, что б сохранял в свою "энергонезависимую" память :men:

Конечно, после перезагрузки счетчики скинутся. Но для того и пишем в текстовый файл, чтобы потом оттуда брать данные для отчета.
Запускать скрипт каждую минуту - это по меньшей мере странно. Достаточно запуска один раз в сутки, чтобы снималась статистика за эти самые сутки. Даже если произойдет сброс, потеряете Вы статистику лишь максимум за одни сутки. Не так страшно, как кажется.
Если же Вам критична такая дельта, то Вам прямая дорога к отдельно стоящему серверу, ведущему подсчет в реальном времени. Дорого и качественно :-)
Я тоже делал наброски скрипта, хотел посмотреть алгоритм. В принципе, комментарии в первом приближении уже набросал. Теперь дело за обвязкой кодом. Если охота не пропадет (делаю всё из чистого любопытства), со временем возможно допишу...

Re: Подсчет трафика

Добавлено: 04 дек 2013, 09:21
podarok66
Вот интересная фича выползает у меня при написании скрипта подсчета. Или баг, если угодно. Например, я хочу снять результаты с интерфейса ether2:

Код: Выделить всё

:put [/interface get [find name=ether2] rx-byte ]   
5715823

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

Код: Выделить всё

interface ethernet reset-counters [find name=ether2

Нет проблем, всё сбрасываю, в Winbox видно, что счетчик на интерфейсе ether2 обнулился.
Но если я возьму результаты интерфейса опять командой:

Код: Выделить всё

:put [/interface get [find name=ether2] rx-byte ]
5982564

я получаю не сброшенный результат, счетчик продолжает считать с момента перезагрузки роутера.
Изображение
ЧЯДНТ?
Прямо заинтересовала меня этот косячок :-)

Re: Подсчет трафика

Добавлено: 04 дек 2013, 09:47
vqd
а зачем счетчики обнулять каждый раз?

Re: Подсчет трафика

Добавлено: 04 дек 2013, 10:48
podarok66
Ну а как? Смотри код:

Код: Выделить всё

:if ([/file get [/file find name=rx.txt] content]!="nil") do={/file set [/file find name=rx.txt] content=([/interface get [find name=ether2] rx-byte ] + [/file get [find name=rx.txt] content]);
:delay 2;
/interface ethernet reset-counters [find name=ether2];}   else={/file print file=rx.txt;
:delay 5;
/file set [/file find name=rx.txt] content=[/interface get [find name=ether2] rx-byte ];
:delay 2;
/interface ethernet reset-counters [find name=ether2];}
# То же tx
:if ([/file get [/file find name=tx.txt] content]!="nil") do={/file set [/file find name=tx.txt] content=([/interface get [find name=ether2] tx-byte ] + [/file get [find name=tx.txt] content]):
:delay 2;
/interface ethernet reset-counters [find name=ether2];}   else={/file print file=tx.txt;
:delay 5;
/file set [/file find name=tx.txt] content=[/interface get [find name=ether2] tx-byte ];
:delay 2;
/interface ethernet reset-counters [find name=ether2];}

Алгоритм такой, через заданный период времени снимаю показания со счетчика, суммирую их с теми, что у меня записаны, переписываю их в файле и сбрасываю счетчик. Мне же надо прибавить только трафик между измерениями, а не всё, что прошло через интерфейс с момента перезагрузки роутера.

Re: Подсчет трафика

Добавлено: 04 дек 2013, 10:52
vqd
Ну а кто мешает вычислять разницу между текущими показаниями и предыдущими и разницу прибавлять к значению в файле?

Re: Подсчет трафика

Добавлено: 04 дек 2013, 11:28
podarok66
Мешает гипотетическая ситуация, когда роутер будет перезагружен. Тогда разница между предыдущими показаниями 45464654445 и получившимися после перезагрузки 87561 не будет отражать реальную картину...