Phân tích các interface trên Linux với iftop

Chia sẻ

Đã bao giờ bạn ở trong tình trạng muốn tìm hiểu về ai đã sử dụng băng thông mạng của bạn và họ đang sử dụng nó vào mục đích cụ thể gì. Hôm nay tôi sẽ giới thiệu bạn một công cụ có thể giúp bạn trả lời câu hỏi trên. Trong khi tôi làm quản tị hệ thống, tôi đã thấy một tình trạng là hệ thống của tôi có khả năng chịu đựng tới 10GB, nhưng tôi chỉ thấy 3GB trong đó. Như vậy một câu hỏi đặt ra là ai đang sử dụng băng thông nhiều như vậy hoặc có bất ổn gì trong hệ thống không
Và iftop là một công cụ đắc lực giúp tôi giải quyết vấn đề này

Công cụ này giúp chúng ta làm những việc gì?

Giống như tophtop, công cụ iftop sử dụng để xem các tài nguyên được sử dụng trong hệ thống. Đặc biệt là nó giám sát về băng thông của các ethernet interfaces, đối với trường hợp mà tôi vừa trình bày ở trên, bạn có thể chạy iftop để xem những chương trình nào đang sử dụng băng thông trên các interface của bạn. Công cụ này mang lại một tốc độ và hiệu quả bất ngờ so với việc bạn phải tự mày mò và tìm ra nguyên nhân.

Cài đặt

Trước khi cài đặt iftop, bạn cần cài đặt libpcap (Dùng để capture data theo thời gian thực) và libncurses (Một API dùng để xây dựng giao diện text độc lập với terminal). Tôi sử dụng máy Fedora 32 cho bài viết này, với các hệ điều hành khác nó có thể hơi khác đi một chút

[cloudzone@client ~]$ sudo yum -y install libpcap-devel ncurses ncurses-devel
[sudo] password for cloudzone:
Fedora 32 openh264 (From Cisco) - x86_64 4.8 kB/s | 989 B 00:00
Fedora 32 openh264 (From Cisco) - x86_64 3.3 kB/s | 2.5 kB 00:00
Fedora Modular 32 - x86_64 28 kB/s | 15 kB 00:00
Fedora Modular 32 - x86_64 - Updates 38 kB/s | 7.6 kB 00:00
Fedora Modular 32 - x86_64 - Updates 189 kB/s | 1.0 MB 00:05
Fedora 32 - x86_64 - Updates 46 kB/s | 10 kB 00:00
Fedora 32 - x86_64 - Updates 221 kB/s | 12 MB 00:54
Fedora 32 - x86_64 40 kB/s | 15 kB 00:00
Package ncurses-6.1-15.20191109.fc32.x86_64 is already installed.
Dependencies resolved.
==============================================================================================
Package Architecture Version Repository Size
==============================================================================================
Installing:
libpcap-devel x86_64 14:1.9.1-3.fc32 fedora 136 k
ncurses-devel x86_64 6.1-15.20191109.fc32 fedora 503 k
Installing dependencies:
ncurses-c++-libs x86_64 6.1-15.20191109.fc32 fedora 39 k
Transaction Summary
==============================================================================================
Install 3 Packages
Total download size: 678 k
Installed size: 1.2 M
Downloading Packages:
(1/3): ncurses-c++-libs-6.1-15.20191109.fc32.x86_64.rpm 55 kB/s | 39 kB 00:00
(2/3): libpcap-devel-1.9.1-3.fc32.x86_64.rpm 159 kB/s | 136 kB 00:00
(3/3): ncurses-devel-6.1-15.20191109.fc32.x86_64.rpm 174 kB/s | 503 kB 00:02
----------------------------------------------------------------------------------------------
Total 181 kB/s | 678 kB 00:03
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : ncurses-c++-libs-6.1-15.20191109.fc32.x86_64 1/3
Installing : ncurses-devel-6.1-15.20191109.fc32.x86_64 2/3
Installing : libpcap-devel-14:1.9.1-3.fc32.x86_64 3/3
Running scriptlet: libpcap-devel-14:1.9.1-3.fc32.x86_64 3/3
Verifying : libpcap-devel-14:1.9.1-3.fc32.x86_64 1/3
Verifying : ncurses-c++-libs-6.1-15.20191109.fc32.x86_64 2/3
Verifying : ncurses-devel-6.1-15.20191109.fc32.x86_64 3/3
Installed:
libpcap-devel-14:1.9.1-3.fc32.x86_64 ncurses-c++-libs-6.1-15.20191109.fc32.x86_64
ncurses-devel-6.1-15.20191109.fc32.x86_64
Complete!

Sau khi các package trên được cài đặt xong, bạn có thể cài iftop

[root@client ~]# dnf install iftop
Last metadata expiration check: 0:01:45 ago on Thu 08 Oct 2020 06:22:52 PM EDT.
Package iftop-1.0-0.23.pre4.fc32.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!

Hướng dẫn sử dụng cơ bản

Sau khi chúng ta cài đặt xong, bạn có thể khởi chạy iftop để sử dụng ngay bây giờ, nếu không có tham số gì thì iftop sẽ chạy ở interface mặc định (Thường là eth0)

[root@client ~]# iftop


Từ trái sang phải bạn cần ghi lại các thông tin sau

  • Resolved hostnames (Trang nguồn hoặc trang đích, kí hiệu bởi dấu mũi tên)
  • Tốc độ truyền dữ liệu trung bình (2,10, 40 giây)

Bạn sẽ thấy TX (Dữ liệu truyền đi), RX (Dữ liệu nhận) cũng như dữ liệu tổng cộng ở phía dưới cùng của kết quả. Cũng như các số liệu tổng cộng và trung bình, đi kèm số liệu lớn nhất

Đi vào chi tiết hơn

Để chỉ định chương trình chạy trên một interface cụ thể nào đó, bạn sử dụng tham số -i

[cloudzone@client ~] $ sudo iftop -i enp0s3


 
Bạn có thể thấy thông tin được xuất ra khá giống ở trên. Nhưng nó chỉ thu thập dữ liệu của interface enp0s3.
Nếu bạn muốn xem thông tin về IP, sử dụng tham số -n để tắt quá trình phân giải thành hostname

[cloudzone@client ~] $ sudo iftop -n


Bạn có thể thấy trong hình trên các địa chỉ IP giờ đã xuất hiện, điều này giúp việc gỡ rối trở nên dễ dàng hơn trong môi trường lớn hostnames có thể trở nên rối
Nếu bạn cần tìm hiểu thêm về iftop, bạn gõ lệnh sau để xem toàn bộ hướng dẫn cũng như tham số của câu lệnh iftop

man iftop


 

Chia sẻ