Назад | Перейти на главную страницу

Как я могу контролировать пропускную способность для каждого пользователя в Linux?

Я хочу отслеживать, сколько пропускной способности потребляют разные пользователи на сервере.

По сути, я ищу что-то вроде 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 имеет несколько приятных функций и совершенно бесплатно. Он будет отображать пропускную способность в реальном времени, общее количество дней, неделю, месяц и т. Д.