Profile picture

[Linux] 네트워크 트래픽 모니터링 도구 (nethog,iftop)

JaehyoJJAng2024년 01월 27일


서버 네트워크 상태를 모니터링하기 위한 도구인 nethogiftop 명령어가 있다.

nethog는 서버에서 구동 중인 데몬이나 프로세스 레벨에서 트래픽을 모니터링 할 수 있는 도구이며,

iftop은 NIC(Network Interface Card) 레벨에서 트래픽을 모니터링 할 수 있는 도구다

이 두 유틸리티를 적절하게 활용하면 서버에서 발생하는 네트워크 장애 상황을 모니터링 할 수 있고, 과도하게 네트워크 리소스를 먹고있는 프로세스를 잡아낼 수 있을 것이다.


◾️ nethogs

nethogs 유틸리티는 리눅스 배포판에 거의 포함되지 않는다고 보면 된다. 그래서 수동으로 설치해주어야 하는데 yum 이나 apt-get 같은 패키지 관리 도구를 이용하여 설치하면 된다


▪️ nethogs 설치

# CentOs
$ sudo yum install nethogs

# Ubuntu
$ sudo apt-get install -y nethogs

▪️ nethogs 사용법

nethogs를 사용하기 위해서는 현재 접속 중인 계정에 sudo 사용 권한이 있어야 한다.

$ sudo nethogs {인터페이스 이름}

sudo를 이용하여 nethogs 명령을 실행하면 된다. 인자로 아무것도 입력하지 않으면 해당 호스트의 첫 번쨰 네트워크 인터페이스에 대한 모니터링을 시작한다. 만약 특정 인터페이스를 모니터링 하고 싶다면 (ex. eth0) 다음처럼 인자로 넘겨주면 된다

$ sudo nethogs eth0

image
nethogs는 선택한 인터페이스를 이용하고 있는 프로세스들의 네트워크 트래픽 정보를 확인할 수 있다. 클러스터에서 네트워크 트래픽을 과도하게 점유하고 있는 데몬을 찾아내는데 유용하게 사용 가능하다


◾️ iftop

nethogs와 마찬가지로 iftop 역시 리눅스 배포판에 거의 포함되지 않는다. 수동으로 설치하자


▪️ iftop 설치

# CentOS
$ sudo yum install -y iftop

# Ubuntu
$ sudo apt-get install -y iftop

▪️ iftop 사용법

$ sudo iftop

별도의 인자를 명시하지 않으면 첫 번쨰 네트워크 인터페이스를 기준으로 모니터링이 수행된다.


image
현재 접속중인 호스트를 기준으로 다른 호스트들과의 통신에 대한 통계 정보 확인 가능

각 라인에서 첫 번째 항목은 현재 접속중인 호스트의 이름 혹은 IP 주소를 의미한다. 위 사진에서 'docker-virtual-machine' 라는 정보로 표시되고 있는 것이 현재 접속 중인 머신의 호스트 정보이다.

그 다음 화살표 옆에 나타나는 정보가 현재 호스트가 통신하고 있는 대상 호스트 정보이다. 현재 접속해있는 호스트가 서버라면 서버와 통신하고 있는 다른 서버 혹은 클라이언트의 정보가 이 곳에 표시된다.

그 다음 항목들은 평균 전송량을 의미한다. 첫 번쨰 항목이 2초, 두 번째 항목이 10초, 세 번쨰 항목이 40초 동안의 평균 전송량을 의미한다.


화면 하단에는 또 다른 정보 통계들이 표시된다. 각각의 의미는 다음과 같다

  • TX : 전송량 (Transmitting)
  • RX : 수신량 (Receiving)
  • TOTAL : 총량

각 항목들은 다음과 같은 서브 항목들로 세분화 되고 있다

  • cum: 누적 전송량
  • peak: 피크 상태일 때의 전송량
  • rates: 각각 2초/4초/10초 간 평균 데이터 흐름

▪️ iftop 옵션

  • iftop -i {interface} : -i 옵션으로 모니터링 할 네트워크 인터페이스 이름 명시
$ sudo iftop -i eth0

  • iftop -f {filter} : pcap-filter 형식의 필터링 문자열을 명시하여 모니터링하고 싶은 항목 제한 가능
    • dst host XXXX
    • src host XXXX
    • dst net XXXX
    • src net XXXX
    • dst port XXXX
    • src port XXXX
    • ip proto protocol
    • gateway XXXX
$ sudo iftop -i eth0 -f "dst host google.com"
$ sudo iftop -i eth0 -f "dst port 22"

Loading script...