Como monitorar o uso da rede por usuário no Linux? [duplicado]

1

Sou administrador de um servidor linux do openSUSE que é usado por muitas pessoas em nossa empresa.

Hoje descobrimos que, ontem, um dos usuários usa muita largura de banda e é importante que o departamento de gerenciamento perceba qual usuário fez isso.

Eu pesquisei em diferentes sites e fóruns, etc., tudo que eu encontrei foi ifconfig ou ifstat , que são apenas mostrar todo o uso da rede. e também eu instalei uma ferramenta vnstat para iniciar o monitoramento de rede e o registro para qualquer outro problema pode acontecer no futuro.

Por fim, gostaria de saber se existe alguma solução para descobrir o uso da rede em um horário específico no passado por usuário. ou existe um arquivo de log no linux responsável por rastrear o uso da rede pelos usuários.

    
por amir19 05.08.2014 / 16:40

3 respostas

4

Não, não existe tal arquivo de log.

Você tem que configurar especificamente o log para fazer isso, e não estou ciente de uma maneira padrão de fazer isso. Pode não ser fácil fazer isso com precisão: um usuário pode causar um processo que não pertence a esse usuário para gerar tráfego de rede e pode não ser trivial atribuir esse tráfego a esse usuário.

Ver, por exemplo, esta questão quase duplicada ou este .

    
por 13.04.2017 / 14:14
4

É muito simples: com iptables , você também pode acompanhar os usuários. Teoricamente, você poderia bloquear / deletar / redirecionar seus pacotes, mas agora você só quer medi-los. É muito simples, porque o iptables, por padrão, rastreia todos os dados que passam por suas regras. Um exemplo de código está aqui:

iptables -A OUTPUT -o eth0 -m owner --uid-owner 1001

Após um iptables -L -v -n , você poderá ver quantos dados foram enviados pelo usuário com o uid 1001.

Claro que não é uma solução completa - talvez uma alternativa muito melhor fosse, se você

  • criou o rastreador uid em uma cadeia diferente em um script
  • e registrou o contador disso com uma ferramenta.

Provavelmente existem ferramentas prontas para isso, embora não seja tão complexo implementá-lo manualmente também.

    
por 05.08.2014 / 18:04
2

O problema é que você precisa estabelecer um link entre uma conexão de rede e um usuário enquanto ele está em execução. Uma vez feito isso, este link é perdido (pelo menos até o meu conhecimento).

Uma maneira de manter essas informações pode ser seguir o que é explicado nesta pergunta:

How to monitor network bandwidth per user on Ubuntu server?. (askUbuntu)

    
por 05.08.2014 / 16:47