Como fazer contabilidade de rede usando cgroups

Como fazer contabilidade de rede usando cgroups

Estou tentando obter estatísticas de rede para grupos de processos. Até onde eu sei, a contabilidade complexa de redes no Linux normalmente é feita usando a infraestrutura de contabilidade do netfilter/iptables.

Como eu gostaria de ter herança para esses grupos, cgroupsseria uma boa opção.

Minha melhor ideia seria deixar o iptables corresponder ao classidque pode ser definido usando o net_cls-controller.

Mas parece que o iptables só podedefiniresse valor através de --set--class.

Então: Existe uma boa maneira de obter contabilidade e registro de rede (complexa e flexível) para grupos de processos no Linux?

Responder1

Uma pergunta muito legal! Obrigado. Antigo, mas vai ajudar as pessoas aqui


A. Você pode usar cgroups com tc. Nunca ouvi falar sobre isso, mas depois de pesquisar no Google encontrei o seguinte:

net_cls — este subsistema marca pacotes de rede com um identificador de classe (classid) que permite ao controlador de tráfego Linux (tc) identificar pacotes originados de uma tarefa cgroup específica.

De acordo com isso você deve trabalhar com tc e obter estatísticas de lá (muitas ferramentas disponíveis).

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

Contate Alexey, talvez ele possa te ajudar com isso :)


B. Você pode usar SELinux e iptables para estatísticas, mas limitar a largura de banda com cgroups - eu gosto mais dessa abordagem - tc parece feio para mim em alguns casos e não é ideal para integração.

SELinux possui ganchos para rede e pode atribuir dados adicionais como rótulo a cada pacote de acordo com rótulos de processo, podendo até mesmo transmitir para outro sistema e filtrar/registrar/obter estatísticas, fazer tudo o que puder com iptables usando SECMARK.

http://selinuxproject.org/page/NB_Networking

Se você ainda não está familiarizado com o SELinux, recomendo que você leia os guias RedHat/Fedora "Security-Enhanced Linux" e "SELinux FAQ", além disso, há explicações e guias muito bons, postagens de blog de Daniel J. Walsh (Dan Walsh) - pesquise no Google.

Além disso, um ponto de partida muito bom (e melhor) para iniciantes é acompanhar vídeos no YouTube. Tenho certeza que você conseguirá fazer isso em cerca de três horas para entender tudo o que precisa:

  • SELinux para todos - Paul Wayper
  • SELinux para administradores de sistemas - Paul Wayper

SELINUX É FÁCIL, NÃO TENHA MEDO

Responder2

Com os kernels mais recentes, você pode comparar cgroups diretamente no iptables, veja:http://lwn.net/Articles/569678/

Ele foi incluído no kernel da linha principal.

informação relacionada