Делюсь скриптом, который я написал для отслеживания ежемесячной статистики WAN-трафика по IP (на самом деле по MAC). Скрипт считывает счётчики трафика из Kid Control, сохраняет их в JSON-файл и генерирует HTML-отчёт. Если вам нужна только общая статистика по WAN, без детализации по IP, загляните в другой мой скрипт:
Ключевые особенности
Всё работает локально на роутере. Не нужны никакие внешние серверы или программы для сбора данных. Для просмотра отчёта нужен только компьютер.
Лучше всего использовать с USB-флешкой, чтобы не беспокоиться о количестве циклов записи.
Если ваше устройство не поддерживает внешнее хранение, можно запускать скрипт реже, но тогда при неожиданных перезагрузках будет больше потерь данных.
Обнаруживает ручной сброс счётчиков трафика, если значения Rx стали меньше ранее сохранённых. Если вы планируете сброс, просто запустите скрипт вручную до и после сброса — так сохранится максимальная точность.
Использует функционал Kid Control в RouterOS, который даёт приятный бонус — учёт трафика по IP.
Ограничения
Требуется RouterOS версии 7.18.2 и выше, это важно, так как используются новые возможности скриптинга.
Kid Control считает весь маршрутизируемый трафик, а не только WAN (например, трафик между VLAN).
Теоретически можно переписать скрипт и использовать что-то вроде viewtopic.php?t=168427 вместо Kid Control.
RouterOS не поддерживает числа с плавающей точкой, поэтому точность отчёта ±1 ГБ. Вычисления и сохранение ведутся в байтах без повторных округлений. Округление (точнее усечение) происходит только в финальном отчёте.
Перезагрузки определяются при помощи файла-маркера в корневой папке, которая на многих устройствах размещена в RAM/tmpfs; если на устройстве нет RAM-диска по умолчанию, создайте свой и укажите путь к файлу. Для максимальной точности запускайте скрипт перед ручной перезагрузкой, чтобы сохранить данные.
Как использовать
Настройте Kid Control для отслеживания трафика. В конфигурации ниже ничего не ограничивается, только включается учёт:
/ip kid-control add name=Monitor mon=0s-1d tue=0s-1d wed=0s-1d thu=0s-1d fri=0s-1d sat=0s-1d sun=0s-1d
Установите и отформатируйте USB-накопитель.
Загрузите предоставленный rsc-скрипт на USB (например, через WinBox — Файлы).
Запланируйте запуск скрипта каждый час (или с нужной вам периодичностью) в 59:59 минуты каждого часа:
/system scheduler
add interval=1h name=traffic on-event="/import usb1-part1/traffic_per_mac.rsc" policy=read,write,sensitive start-date=2025-04-10 start-time=20:59:59
Вот как выглядит отчёт:

Редактирование поста 2025-04-29: переписанный скрипт traffic_per_mac.rsc (5.72 КБ)
Ключевые особенности
Всё работает локально на роутере. Не нужны никакие внешние серверы или программы для сбора данных. Для просмотра отчёта нужен только компьютер.
Лучше всего использовать с USB-флешкой, чтобы не беспокоиться о количестве циклов записи.
Если ваше устройство не поддерживает внешнее хранение, можно запускать скрипт реже, но тогда при неожиданных перезагрузках будет больше потерь данных.
Обнаруживает ручной сброс счётчиков трафика, если значения Rx стали меньше ранее сохранённых. Если вы планируете сброс, просто запустите скрипт вручную до и после сброса — так сохранится максимальная точность.
Использует функционал Kid Control в RouterOS, который даёт приятный бонус — учёт трафика по IP.
Ограничения
Требуется RouterOS версии 7.18.2 и выше, это важно, так как используются новые возможности скриптинга.
Kid Control считает весь маршрутизируемый трафик, а не только WAN (например, трафик между VLAN).
Теоретически можно переписать скрипт и использовать что-то вроде viewtopic.php?t=168427 вместо Kid Control.
RouterOS не поддерживает числа с плавающей точкой, поэтому точность отчёта ±1 ГБ. Вычисления и сохранение ведутся в байтах без повторных округлений. Округление (точнее усечение) происходит только в финальном отчёте.
Перезагрузки определяются при помощи файла-маркера в корневой папке, которая на многих устройствах размещена в RAM/tmpfs; если на устройстве нет RAM-диска по умолчанию, создайте свой и укажите путь к файлу. Для максимальной точности запускайте скрипт перед ручной перезагрузкой, чтобы сохранить данные.
Как использовать
Настройте Kid Control для отслеживания трафика. В конфигурации ниже ничего не ограничивается, только включается учёт:
/ip kid-control add name=Monitor mon=0s-1d tue=0s-1d wed=0s-1d thu=0s-1d fri=0s-1d sat=0s-1d sun=0s-1d
Установите и отформатируйте USB-накопитель.
Загрузите предоставленный rsc-скрипт на USB (например, через WinBox — Файлы).
Запланируйте запуск скрипта каждый час (или с нужной вам периодичностью) в 59:59 минуты каждого часа:
/system scheduler
add interval=1h name=traffic on-event="/import usb1-part1/traffic_per_mac.rsc" policy=read,write,sensitive start-date=2025-04-10 start-time=20:59:59
Вот как выглядит отчёт:

Редактирование поста 2025-04-29: переписанный скрипт traffic_per_mac.rsc (5.72 КБ)
