Как вести сетевой учет с помощью cgroups

Как вести сетевой учет с помощью cgroups

Я пытаюсь получить сетевую статистику для групп процессов. Насколько мне известно, сложный сетевой учет на Linux обычно выполняется с использованием инфраструктуры учета netfilter/iptables.

Так как я хотел бы иметь наследство для таких групп, cgroupsэто было бы хорошим совпадением.

Лучшей идеей было бы позволить iptables соответствовать параметрам, classidкоторые можно задать с помощью net_cls-controller.

Но, похоже, iptables может тольконаборэто значение через --set--class.

Итак: есть ли хороший способ получения (сложного и гибкого) сетевого учета и ведения журнала для групп процессов в Linux?

решение1

Очень хороший вопрос! Спасибо. Старый, но поможет людям здесь


A. Вы можете использовать cgroups с tc. Я никогда об этом не слышал, но после того, как погуглил, нашел следующее:

net_cls — эта подсистема помечает сетевые пакеты идентификатором класса (classid), который позволяет контроллеру трафика Linux (tc) идентифицировать пакеты, исходящие из определенной задачи cgroup.

По этому вам следует работать с tc и получать статистику оттуда (доступно много инструментов).

http://patchwork.ozlabs.org/patch/194809/

Свяжитесь с Алексеем, возможно он сможет вам в этом помочь :)


B. Вы можете использовать SELinux и iptables для статистики, но ограничьте пропускную способность с помощью cgroups — мне этот подход нравится больше — tc в некоторых случаях выглядит уродливо и неоптимально для интеграции.

SELinux имеет хуки для сети и может назначать дополнительные данные в качестве метки каждому пакету в соответствии с метками процесса, даже может передавать данные в другую систему и фильтровать/регистрировать/получать статистику, делать все, что вы можете с iptables, используя SECMARK.

http://selinuxproject.org/page/NB_Networking

Если вы еще не знакомы с SELinux, я рекомендую вам прочитать руководства RedHat/Fedora «Security-Enhanced Linux» и «SELinux FAQ», кроме того, там есть очень хорошие объяснения и руководства, записи в блоге Дэниела Дж. Уолша (Dan Walsh) — поищите в Google.

Также очень хорошей (и лучшей) отправной точкой для новичков являются следующие видеоролики на YouTube, я уверен, что вы справитесь примерно за три часа, чтобы понять все, что вам нужно:

  • SELinux для всех - Пол Уэйпер
  • SELinux для системных администраторов — Пол Уэйпер

SELINUX — ЭТО ПРОСТО, НЕ БОЙТЕСЬ

решение2

В последних версиях ядер вы можете напрямую сопоставлять cgroups в iptables, см.:http://lwn.net/Articles/569678/

Он был включен в основную версию ядра.

Связанный контент