Ubuntu 서버에서 사용자 당 네트워크 대역폭을 모니터링하는 방법은 무엇입니까?


12

300GB의 월간 데이터 전송 서버에 일부 쉘 사용자가 있습니다. 사용자 당 대역폭 사용량을 어떻게 모니터링 할 수 있습니까?


이것이 가능합니까? 이론적으로는 인터넷을 사용하는 각 프로세스에서 누가 프로세스를 실행하고 있는지 파악한 다음 결합 된 대역폭 사용량을 파악해야하기 때문에 이론적으로는 그보다 더 번거로울 것 같습니다. 쉘 사용자를 제외하고 사용자별로 모니터하려는 특정 이유가 있습니까? 매월 300GB의 입 / 출력 데이터를 사용하면 다음과 같은 용량을 초과하지 않을 것 같습니다 ./
Thomas Ward

가능하다면 ISP가 어떻게 사용자 당 대역폭을 제한합니까?
djeikyb

@EvilPhoenix 사용자 당 사용량을 모니터링하고 싶습니다.이 서버를 프록시 서버로 사용하는 사용자가 20 명 이상인 서버의 경우 300GB는 그다지 많지 않습니다.
Pedram

1
Kees Cook의 실질적인 답변이 있지만, 여전히 방법을 찾고 있다면 질문을 다르게 표현하는 것이 도움이 될지 궁금합니다. : 나는 "어떻게 리눅스에서 제한 사용자 대역폭에"인터넷 검색이 가이드 발견 faqs.org/docs/Linux-HOWTO/Bandwidth-Limiting-HOWTO.html을
djeikyb

답변:


13

루트로서 최소한 iptables의 "소유자"모듈을 사용하여 사용자별로 발신 트래픽을 측정 할 수 있습니다. 모니터링하려는 모든 사용자가에있는 /root/list-of-users.txt경우 다음을 수행 할 수 있습니다.

for login in $(cat /root/list-of-users.txt);
do
    iptables -N out_user_$login
    iptables -A OUTPUT -m owner --uid-owner $(id -u $login) -j out_user_$login
done

그런 다음 각 사용자의 아웃 바운드 트래픽에 대한 패킷 및 바이트 수가 표시됩니다.

iptables -L OUTPUT -n -v | grep out_

CONNMARK를 사용하면 인바운드 측도 추적 할 수 있습니다.


고마워요. 좋아요.하지만 INPUT에 같은 방법을 사용할 수없는 이유는 무엇입니까?
Pedram

1
패킷의 소유자는 커널의 관점에서 컴퓨터 외부에서 온 것이기 때문에 들어오는 패킷으로 알려져 있지 않습니다. CONNMARK는 TCP 스트림의 패킷을 발신자 등에 연결하는 데 사용될 수 있지만 이에 대한 실제 예는 없습니다.
Kees Cook

7

방금 NetHogs발견했습니다 .

NetHogs는 작은 'net top'도구입니다. 대부분의 도구와 마찬가지로 프로토콜 또는 서브넷 당 트래픽을 분류하는 대신 프로세스별로 대역폭을 그룹화합니다.

여기에 이미지 설명을 입력하십시오

이를 통해 사용자 이름별로 대역폭을 추적 할 수 있습니다. 정보를 기록하고 모두 추가하려면 여전히 몇 가지 도구가 필요할 수 있지만 iptables를 직접 사용하지 않고 시작하는 것이 좋습니다.


트래픽을 요약하기 위해 모드에서 시작할 수도 있습니다 sudo nethogs -v 3 eth0(또는 m모드를 순환하기 시작한 후을 반복해서 누름 ). 세션이 충돌 tmux하더라도 지속적으로 실행하기 위해 함께 사용하십시오 ssh.
tanius

6

당신은 선인장 을 사용할 수 있습니다

Cacti는 RRDTool의 완벽한 프론트 엔드이며 그래프를 생성하고 MySQL 데이터베이스의 데이터로 채우기 위해 필요한 모든 정보를 저장합니다. 프론트 엔드는 완전히 PHP 중심입니다. cacti는 데이터베이스에서 그래프, 데이터 소스 및 라운드 로빈 아카이브를 유지 관리 할 수있을뿐만 아니라 데이터 수집을 처리합니다. MRTG로 트래픽 그래프를 작성하는 데 사용되는 SNMP에 대한 SNMP 지원도 있습니다.

또는 vnStat

vnStat는 선택된 인터페이스에 대한 네트워크 트래픽 로그를 유지하는 Linux 및 BSD 용 콘솔 기반 네트워크 트래픽 모니터입니다. 커널이 제공하는 네트워크 인터페이스 통계를 정보 소스로 사용합니다. 이는 vnStat가 실제로 트래픽을 스니핑하지 않으며 시스템 리소스를 가볍게 사용함을 의미합니다.

둘 다 훌륭합니다.


2
고맙지 만 둘 다 이미 보았으며 사용자별로 모니터링하지 않는 것 같습니다. 사용자 당 사용량을 모니터링하고 싶습니다.
Pedram

5

나는 조금 보았고 원하는 것을하는 포괄적 인 GUI 패키지를 찾지 못했습니다. 바라건대 하나가 존재하고 누군가가 결국 여기에 게시 할 것입니다.

나는 정말 네트워킹 사람이 아니지만, 나는 많은 다른 것들 중, 읽은에서 netstatiptables뭐라고 회계 IP / 호스트 기반의 사용자에 대해 어떻게해야하는 acct도구가 시스템 프로세스 회계 않았다. 이 cyberciti.biz 링크를 통해 다음 도구를 사용하여 시스템을 개발할 수 있습니다.

http://www.cyberciti.biz/faq/linux-configuring-ip-traffic-accounting/


고마워하지만 IP 기반 사용자 계정에 사용된다고 말했지만 다른 위치, 특히 동일한 IP 주소 (NAT 뒤에있는 대학 부서)에서 서버를 사용할 수있는 쉘 사용자가 있습니다. 가능한 경우 사용자 기반 회계 솔루션을 찾고 있습니다.
Pedram

netstat -e쉘 사용자를 표시하여 ip / host를 username에 링크 할 수 있습니다.
djeikyb 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.