Мониторить фактическую скорость, которую предоставляет именно провайдер - крайне сложно. Можно попытаться оценить примерно. Для этого необходимо отключать всю "нагрузку", то есть всех пользователей, и запускать тесты для измерения скорости канала. Ну, например, скачивать большой файл с сервера в сети Интернет, скорость обмена с которым заведомо больше заявленной скорости предоставления доступа вашим провайдером. Ито информация, так сказать, для себя. И неочень точная.
Что касается мониторинга трафика, то есть множество инструментов. Тот же MRTG. Но в маленьких сетях его использовать смысла практически нет, информация по нагрузке вам скорее всего ни о чем не скажет. Разве что поможет выявить флудящие из-за вируса машины. Но это делается гораздо проще, по лампочкам на коммутаторе можно легко определить избыточное широковещание.
Чтобы исключить "захват канала" одним/несколькими из пользователей, настраивается QoS на вышестоящем маршрутизаторе. В вашем случае на линуксе. Можно и Squid с его delay pool-ами, но это непрофессионально. Поскольку канал можно посадить BitTorrent-ом. Что, его запрещать? Не гуманно, особенно если офис на безлимитке сидит.
Самый простой способ - объявить дисциплину обработки очереди SFQ. А лучше создать для каждого юзера класс htb, объявить минимальную (гарантированную) скорость из расчета (скорость канала)/(количество пользователей). А так же указать через ceil максимальную скорость в случае если канал свободен. Пользователей закидывать в класс через u32 фильтр или даже через iptables...
Короче говоря тут не объяснишь всего. Если вас интересует профессиональное решение проблемы, почитайте вот это (предупреждаю, сложно!):
http://www.lartc.org/lartc.htmlОбъем скаченной информации можно тоже собирать через Squid. Снова непрофессиональное решение. Лучше поставить коллектор типа ipcad и собирать с него логи в базу. Там уже суммировать. Ну примерно... Там-то поле для творчества не меньше чем с QoS.