Я хочу отслеживать, сколько пропускной способности потребляют разные пользователи на сервере.
По сути, я ищу что-то вроде UserIPacct (http://ramses.smeyers.be/homepage/useripacct/), где я могу получить распечатку вроде:
User Sent Received Flags
root 401364 401421
news 2143 2210
lf 221462 348287
К сожалению, useripacct недоступен для версии ядра 2.6.
Я не знаю каких-либо ранее существовавших решений, но вы можете сделать это с помощью netfilter, используя расширение match 'owner', хотя вам, вероятно, придется немного поиграть с conntrack, чтобы поймать и учесть входящие пакеты (и вы пропустил бы пакеты начальной установки соединения, так как они не управляются процессом пользовательского пространства). Я мог бы предположить, что решение, не использующее netfilter, также возможно (a la ntop и т.п.), но оно почти наверняка станет некрасивым и очень быстро загрузит процессор.
Однако, честно говоря, я очень серьезно сомневаюсь, что вы решаете правильную задачу. Учет трафика для каждого пользователя лучше выполнять путем анализа журналов на уровне сервера (Apache, MTA, POP / IMAP-сервер и т. Д.) И учета / выставления счетов на этой основе (с соответствующими накладными расходами для битов, которые они не делают. ловите, вроде DNS). Попытки связать все с пользователем почти наверняка не принесут ожидаемых результатов.
Для мониторинга в реальном времени вы можете использовать iftop. Если вы ищете решение для журнала и отчета, вы можете использовать pmacct. Работает очень хорошо и может дать вам полчаса, ежедневные, еженедельные, ежемесячные и ежегодные сводки.
Кроме того, мы используем его как произведение вместе с Инструмент RRD для создания хороших графиков в реальном времени.
Возможно, это не совсем то, что вы ищете, но vnstat имеет несколько приятных функций и совершенно бесплатно. Он будет отображать пропускную способность в реальном времени, общее количество дней, неделю, месяц и т. Д.