Linux에서 bmon을 사용하여 네트워크 대역폭을 모니터링하는 방법

게시 됨: 2022-01-29
Linux 시스템의 양식화된 터미널 프롬프트.
Fatmawati Achmad Zaenuri/Shutterstock

bmon Linux 애플리케이션을 사용하면 네트워크 연결에서 대역폭 사용량을 볼 수 있습니다. 그러나 세부 사항을 이해하려면 약간의 탐정 작업이 필요하므로 이를 수행했습니다!

bmon 작동 방식

다양한 네트워크 인터페이스의 활동을 보여주는 동적 그래프와 실시간 통계는 네트워크의 성능과 대역폭 소비에 대한 유용한 정보를 제공할 수 있습니다. 이것이 바로 bmon 이 터미널 창에서 제공하는 것입니다.

자동차의 속도계를 보는 것처럼 이따금 그래프를 볼 수 있습니다. 마찬가지로, 차량의 무언가를 조사해야 하는 경우 정비사가 진단 시스템에 연결하여 판독값을 확인할 수 있습니다. bmon 은 상세한 판독값과 유사합니다.

그러나 bmon 명령의 통계는 처음에는 당혹스러울 수 있습니다. 예를 들어 "Ip6 Reasm/Frag"라는 세 가지가 있습니다. 무슨 일이야?

그럼에도 불구하고 일단 코드를 해독하고 나면 네트워크 트래픽을 더 자세히 이해하려는 경우 명령의 판독 값이 매우 중요합니다.

광고

우리는 당신을 위해 작업을 넣었고, 심지어 이들 중 일부의 맨 아래에 도달하기 위해 소스 코드를 확인했습니다. 고맙게도 bmon 에 대한 다른 모든 것은 상당히 간단합니다.

bmon 설치

Ubuntu에 bmon 을 설치하려면 다음 명령을 사용하십시오.

 sudo apt-get install bmon 

Fedora에 설치하려면 다음을 입력하십시오.

 sudo dnf 설치 bmon 

Manjaro의 경우 명령은 다음과 같습니다.

 sudo pacman - sy bmon 

더 비몬 디스플레이

bmon 을 입력하고 Enter 키를 눌러 프로그램을 시작합니다. bmon 디스플레이는 여러 창으로 분할됩니다. 상위 3개는 "인터페이스", "RX" 및 "TX"로 표시됩니다. 중앙 창에는 자세한 통계와 그래프가 표시됩니다.

"인터페이스" 창은 컴퓨터에 장착된 네트워크 인터페이스를 보여줍니다. 또한 각 네트워크 인터페이스가 사용하는 대기열 규칙(qdisc)을 보여줍니다(자세한 내용은 나중에).

"RX" 창은 각 인터페이스와 해당 대기열에 대해 초당 수신된 비트 수와 초당 패킷 수를 표시합니다. "TX" 창은 각 인터페이스와 해당 대기열에 대해 초당 전송된 비트와 패킷을 보여줍니다.

우리 컴퓨터에는 루프백 인터페이스(루프백 어댑터라고도 함)와 유선 이더넷 어댑터의 두 가지 인터페이스만 설치되어 있습니다. 루프백 인터페이스는 "lo"라고 하고 이더넷 인터페이스는 "enp0s3"이라고 합니다.

컴퓨터의 이더넷 어댑터는 다른 이름을 가질 수 있습니다. 랩톱을 사용하는 경우 무선 어댑터도 표시되며 이름이 "wl"로 시작될 것입니다.

광고

bmon 은 현재 선택된 네트워크 인터페이스에 대한 정보를 표시합니다. 선택한 인터페이스는 옆에 보다 큼 기호( > )가 강조 표시된 인터페이스입니다. 위쪽 및 아래쪽 화살표를 눌러 보다 큼 기호를 이동하고 모니터링할 인터페이스를 선택할 수 있습니다. 우리는 이더넷 어댑터를 선택했습니다.

이제 활성 네트워크 인터페이스에 있으므로 그래프와 판독값에 일부 활동이 표시됩니다. 그래프가 표시되지 않으면 터미널 창을 아래쪽으로 늘립니다.

그래프로 표시되는 통계를 변경하려면 왼쪽 및 오른쪽 화살표 키를 누르십시오. 일부 그래프의 경우 채워지기 전에 H를 눌러야 합니다. 이것을 요구하는 사람들은 당신에게 그렇게 말할 것입니다.

네트워크 인터페이스에 대한 통계를 보려면 터미널 창을 표시할 수 있을 만큼 키가 커질 때까지 늘린 다음 D를 눌러 표시합니다. I(정보용)을 누르면 소량의 추가 정보가 표시됩니다.

터미널 창을 최대화하면 여러 그래프가 표시됩니다. 보다 작음(<) 및 보다 큼(>)을 눌러 그래프 쌍을 추가하거나 제거합니다. G를 누르면 그래프 표시를 모두 켜고 끕니다.

물음표(?)를 누르면 일반적인 키 입력과 함께 "빠른 참조" 도움말 화면이 표시됩니다.

bmon의 "빠른 참조" 화면.

광고

물음표(?)를 다시 눌러 "빠른 참조" 화면을 닫습니다.

상세 통계

터미널 창이 충분히 크고 넓다면(그렇지 않은 경우 확장) "D"를 눌러 상세 보기를 켜고 끌 수 있습니다.

표시되는 열의 수는 터미널 창의 너비에 따라 다릅니다. 표준 80열 터미널 창에는 2개가 표시됩니다. 창이 넓을수록 더 많은 열이 표시됩니다. 그러나 더 넓은 창에서는 더 많은 통계를 얻을 수 없습니다. 당신은 여전히 ​​같은 수치의 집합을 볼 수 있습니다. 그러나 열은 더 짧을 것입니다.

각 열의 맨 위 항목은 왼쪽 항목이 정보를 바이트 단위로 표시하는 반면 오른쪽 항목은 패킷 정보를 표시한다고 생각할 수 있습니다. 그러나 그렇지 않습니다.

각 열에는 통계 집합이 있습니다. 값의 이름, 수신( RX ) 및 전송( TX ) 값은 각 통계에 대해 표시됩니다. 값이 하이픈( - )으로 나타나면 해당 방향에 대한 통계가 기록되지 않았음을 의미합니다.

일부 통계는 내부(수신) 또는 외부(전송) 전용입니다. 예를 들어, 전송된 열의 하이픈( - )은 통계가 나가는 패킷에 대해 유효하지 않으며 들어오는 패킷에만 적용됨을 나타냅니다. 맨 위 줄은 수신 및 전송된 트래픽을 바이트(왼쪽)와 패킷(오른쪽)으로 표시합니다.

광고

다른 모든 통계는 열에서 열로 이동하면서 알파벳 순서로 나열됩니다. 그들 중 몇몇은 같은 이름을 공유합니다. 아래에서 모두 무엇을 의미하는지 설명하겠습니다. 우리는 또한 약어 이름을 철자했습니다. IPv6이 언급되지 않은 경우 해당 통계는 IPv4를 나타냅니다.

왼쪽 열의 통계는 다음과 같습니다.

  • 바이트: 바이트 단위의 트래픽입니다.
  • 중단 오류: 중단 오류 수입니다. 소스와 대상 간의 연결 경로 어딘가에서 소프트웨어가 연결을 중단시켰습니다.
  • 충돌: 충돌 오류 수입니다. 둘 이상의 장치가 동시에 패킷 전송을 시도했습니다. 전이중 네트워크에서는 문제가 되지 않습니다.
  • CRC 오류: 순환 중복 검사 오류 수입니다.
  • 오류: 총 오류 수입니다.
  • 프레임 오류: 프레임 오류 수입니다. 프레임은 패킷의 네트워크 컨테이너입니다. 오류는 잘못된 프레임이 감지되었음을 의미합니다.
  • ICMPv6: Internet Control Message Protocol v6 트래픽 패킷의 수입니다.
  • ICMPv6 오류: ICMP v6 오류 수입니다.
  • IP6 브로드캐스트: 네트워크의 모든 장치에 전송되는 IPv6 브로드캐스트 수입니다.
  • IP6 CE 패킷: CE는 "고객 에지"를 나타냅니다. 이것은 일반적으로 라우터에 적용됩니다. 고객이 구독하는 연결 서비스의 PE(제공자 에지)에 연결합니다.
  • Ip6 Delivers: 들어오는 IPv6 패킷 수입니다.
  • Ip6 ECT(1) 패킷: ECN(명시적 혼잡 알림)을 사용하면 네트워크 연결의 한쪽 끝이 다른 쪽 끝에서 임박한 정체를 알릴 수 있습니다. 패킷은 경고 역할을 하는 플래그로 표시됩니다. 수신단은 혼잡과 가능한 패킷 손실을 피하기 위해 전송 속도를 줄일 수 있습니다. ECN 가능 전송(ECT) 패킷은 ECN 가능 전송을 통해 전달되고 있음을 나타내는 플래그로 표시됩니다. 이를 통해 중간 라우터가 그에 따라 반응할 수 있습니다. 유형 1 ECN 패킷은 수신 측에서 ECN을 활성화하고 발신 전송에 추가하도록 지시합니다.
  • IP6 헤더 오류: IPv6 헤더에 오류가 있는 패킷 수입니다.
  • IP6 멀티캐스트 패킷: IPv6 멀티캐스트(브로드캐스트의 한 형태) 패킷 수입니다.
  • Ip6 Non-ECT Packets: ECT(1)로 플래그가 지정되지 않은 IPv6 패킷 수입니다.
  • Ip6 Reassembly/Fragment OK: 크기로 인해 단편화되어 수신 시 성공적으로 재조립된 IPv6 패킷 수입니다.
  • Ip6 Reassembly Timeouts(IP6 재조립 시간 초과): 크기로 인해 조각화되었지만 시간 초과로 인해 수신 시 재조립에 실패한 IPv6 패킷 수입니다.
  • Ip6 잘린 패킷: 잘린 패킷 수입니다. IPv6 패킷이 전송되면 잘림 후보로 플래그가 지정될 수 있습니다. MTU(최대 전송 단위)를 초과하여 패킷을 처리할 수 없는 중간 라우터가 있는 경우 라우터는 패킷을 잘라내고 표시한 다음 대상으로 전달합니다. 수신되면 상대방은 ICMP 패킷을 소스로 다시 보내 패킷을 줄이기 위해 MTU 추정치를 업데이트하도록 지시할 수 있습니다.
  • Ip6 Discards: 폐기된 IPv6 패킷 수입니다. 소스와 대상 사이의 장치가 올바르게 설정되지 않고 IPv6 설정이 작동하지 않으면 IPv6 트래픽을 처리하지 않습니다. 폐기됩니다.
  • IP6 패킷: 모든 유형의 IPv6 패킷의 총 수입니다.
  • 누락된 오류: 전송에서 누락된 패킷 수입니다. 원본 메시지를 다시 만들 수 있도록 패킷에 번호가 지정됩니다. 누락된 것이 있으면 부재가 눈에 띕니다.
  • 핸들러 없음: 프로토콜 핸들러가 발견되지 않은 패킷 수입니다.
  • 창 오류: 창 오류 수입니다. 패킷의 창은 헤더의 옥텟 수입니다. 비정상적인 숫자가 있으면 헤더를 해석할 수 없습니다.

오른쪽 열의 통계는 다음과 같습니다.

  • 패킷: 패킷 의 트래픽입니다.
  • 운송업체 오류: 운송업체 오류 수입니다. 이는 신호 변조에 문제가 발생할 경우 발생합니다. 이는 네트워킹 장비 간의 이중 불일치 또는 케이블, 소켓 또는 커넥터의 물리적 손상을 나타낼 수 있습니다.
  • 압축됨: 압축된 패킷 수입니다.
  • 삭제됨 : 결과적으로 목적지에 도달하지 못한(혼잡으로 인해) 삭제된 패킷 수입니다.
  • FIFO 오류: FIFO (선입 선출) 버퍼 오류 수입니다. 네트워크 인터페이스 전송 버퍼가 충분히 빨리 비워지지 않아 오버런 중입니다.
  • 하트비트 오류: 하드웨어 또는 소프트웨어는 정상 작동 중임을 나타내거나 동기화를 허용하기 위해 일반 신호를 사용할 수 있습니다. 여기서 숫자는 손실된 "하트비트"의 수입니다.
  • ICMPv6 체크섬 오류: Internet Control Message Protocol v6 메시지 체크섬 오류 수입니다.
  • IP6 주소 오류: 잘못된 IPv6 주소로 인한 오류 수
  • IP6 브로드캐스트 패킷: IPv6 브로드캐스트 패킷 수입니다.
  • IP6 체크섬 오류: IPv6 체크섬 오류 수입니다. IPv6의 ICMP 및 UDP(User Datagram Protocol) 패킷은 체크섬을 사용하지만 일반 IPv6 IP 패킷은 사용하지 않습니다.
  • Ip6 ECT(0) 패킷: ECT(1) 패킷과 동일하게 취급됩니다.
  • Ip6 Forwarded: 전달된 IPv6 패킷 유니캐스트 포워딩의 수입니다. Unicast는 중간 라우터 및 전달자 체인을 통해 소스에서 대상으로 패킷을 호핑합니다.
  • Ip6 Multicasts: 전달된 IPv6 패킷 멀티캐스트 포워딩의 수입니다. 멀티캐스트는 패킷을 동시에 대상 그룹으로 보냅니다(Wi-Fi 작동 방식).
  • IP6 경로 없음: 경로 오류가 없는 횟수입니다. 끝으로 가는 경로를 계산할 수 없기 때문에 목적지에 도달할 수 없음을 의미합니다.
  • Ip6 리어셈블리/프래그먼트 실패: 크기로 인해 프래그먼트화되었으며 수신 시 리어셈블리에 실패한 IPv6 패킷 수입니다.
  • Ip6 리어셈블리/프래그먼트 요청: 크기로 인해 프래그먼트화되어 수신 시 재조립해야 했던 IPv6 패킷 수입니다.
  • Ip6 Too Big Errors(IP6 너무 큰 오류): 수신된 ICMP "너무 큰" 메시지의 수로, 최대 전송 단위보다 큰 IPv6 패킷이 전송되었음을 나타냅니다.
  • IP6 알 수 없는 프로토콜 오류: 알 수 없는 프로토콜 을 사용하여 수신된 패킷 수입니다.
  • Ip6 Octets: 수신 및 전송된 옥텟의 볼륨입니다. IPv6의 헤더는 40옥텟(320비트, 옥텟당 8비트)이고 최소 패킷 크기는 1,280옥텟(10,240비트)입니다.
  • 길이 오류: 헤더에 가능한 최소 패킷 길이보다 짧은 길이 값으로 도착하는 패킷 수입니다.
  • 멀티캐스트: 멀티캐스트 브로드캐스트 수입니다.
  • 초과 오류: 초과 오류 수입니다. 수신 버퍼가 오버플로되었거나 지원되는 것보다 큰 프레임 값으로 패킷이 도착하여 수락할 수 없습니다.

추가 정보

I를 누르면("정보"에서와 같이) 추가 정보 창을 토글합니다. 추가 정보가 표시되지 않으면 창이 충분히 크지 않은 것입니다. D를 눌러 자세한 통계를 끄거나 G를 눌러 그래프를 끄거나 창을 늘릴 수 있습니다.

추가 정보는 다음과 같습니다.

  • MTU: 최대 전송 단위.
  • 작동 상태 : 네트워크 인터페이스의 작동 상태입니다.
  • 주소: 네트워크 인터페이스의 MAC(미디어 액세스 제어) 주소입니다.
  • 모드: 일반적으로 default 으로 설정되지만 tunnel , beet 또는 ro 를 볼 수 있습니다. 처음 세 가지는 IP 보안(IPSec)과 관련이 있습니다. default 설정은 일반적으로 페이로드가 암호화되는 transport 모드입니다. 클라이언트 대 사이트 VPN(가상 사설망)은 일반적으로 이것을 사용합니다. 사이트 간 VPN은 일반적으로 전체 패킷이 암호화되는 tunnel 모드를 사용합니다. Bound End-to-End Tunnel ( beet ) 모드에서는 고정된 숨겨진 IP 주소와 기타 보이는 IP 주소를 사용하여 두 장치 사이에 터널이 생성됩니다. ro 모드는 모바일 IPv6을 위한 라우팅 최적화 방법입니다.
  • 제품군: 사용 중인 네트워크 프로토콜 제품군입니다.
  • Qdisc: 큐잉 규율. red (Random Early Detection), codel (Controlled Delay), fq_codel (Fair Queuing with Controlled Delay)로 설정할 수 있습니다.
  • 플래그: 이 표시기는 네트워크 연결의 기능을 보여줍니다. 우리의 연결은 broadcastmulticast 전송을 사용할 수 있으며 인터페이스는 Up (작동 및 연결됨)입니다.
  • IfIndex: 인터페이스 인덱스는 네트워크 인터페이스와 관련된 고유한 식별 번호입니다.
  • 브로드캐스트: 브로드캐스트 MAC 주소입니다. 이 주소로 전송하면 수신된 패킷이 모든 장치에 브로드캐스트됩니다.
  • TXQlen: 전송 큐 크기(용량).
  • 별칭: IP 별칭은 물리적 네트워크 연결에 여러 IP 주소를 제공합니다. 그런 다음 하나의 네트워크 인터페이스 카드를 통해 다른 서브넷에 액세스할 수 있습니다. 테스트 컴퓨터에서 사용 중인 별칭이 없습니다.

bmon 은 어떤 면에서는 물고기도 새도 아닌 약간 재미있는 생물입니다. 그래프는 원시적인 매력을 가지고 있으며 진행 상황을 잘 보여줍니다.

그러나 ASCII로 렌더링되는 한계를 감안할 때 초정밀성을 기대할 수는 없습니다. 그러나 가끔 보면 연결이 최대인지, 이상하게 트래픽이 없는지 또는 그 사이의 어딘가에 있는지 알 수 있습니다.

반면에 상세한 통계는 상세하고 세분화되어 있습니다. 라벨링의 다소 캐주얼한 접근 방식과 결합되어 해독하기가 훨씬 더 어렵습니다.

바라건대, 위의 설명은 bmon 이 조금 더 접근하기 쉽게 만들 것입니다. 네트워크 트래픽의 상태와 대역폭 소비를 모니터링할 수 있는 유용하고 가벼운 도구입니다.

관련: 개발자 및 열광자를 위한 최고의 Linux 노트북