Kiểm tra băng thông với lệnh vnstat là giải pháp tối ưu giúp bạn quản lý lưu lượng mạng trên Linux theo thời gian thực mà không cần quyền root. vnstat hoạt động như một trình thu thập dữ liệu thông minh, ghi lại chi tiết lưu lượng truyền tải hàng giờ, hàng ngày và hàng tháng một cách trực quan. Trong bài viết này, mình sẽ cùng bạn tìm hiểu chi tiết về cách sử dụng vnstat để kiểm tra băng thông nhanh chóng, chính xác.
Những điểm chính
- Khái niệm lệnh vnstat: Hiểu rõ khái niệm và cơ chế hoạt động không cần quyền root của
vnstatđể giám sát lưu lượng mạng. - Cách cài đặt và cấu hình: Nắm vững quy trình cài đặt, kích hoạt dịch vụ, khởi tạo database và chỉnh sửa file cấu hình để
vnstathoạt động chính xác. - Các lệnh kiểm tra băng thông: Thành thạo các lệnh để xem thống kê tổng quan, chi tiết theo giờ/ngày/tháng, giám sát thời gian thực và trực quan hóa dữ liệu.
- Khi nào nên dùng vnstat: Phân biệt được ưu điểm của
vnstatso với các công cụ khác nhưbmon,iftopvànethogsđể chọn giải pháp phù hợp. - Giải đáp thắc mắc (FAQ): Có được câu trả lời cho các vấn đề thực tế như ảnh hưởng hiệu suất, giám sát nhiều card mạng và cách reset dữ liệu thống kê.
Lệnh vnstat là gì?
vnstat là một công cụ dòng lệnh miễn phí và mã nguồn mở trên Linux/BSD dùng để giám sát và thống kê lưu lượng mạng của server một cách tự động, liên tục và theo từng card mạng. Khi gõ lệnh vnstat trên terminal, bạn sẽ nhận được báo cáo tổng hợp về lượng dữ liệu đã truyền (download/upload) qua card mạng theo các mốc thời gian như hôm nay, hôm qua, tháng này, cùng với ước tính tổng dung lượng của cả tháng.
Khác với các công cụ khác, vnstat sử dụng số liệu thống kê được cung cấp bởi nhân hệ điều hành (kernel) thay vì tự bắt các gói tin. Nhờ đó, công cụ này hoạt động rất nhẹ, tiêu tốn ít tài nguyên hệ thống và có thể lưu trữ lịch sử sử dụng băng thông ngay cả khi máy chủ khởi động lại.

Cách cài đặt và cấu hình vnstat
Bước 1: Cài đặt vnstat
Cách 1: Cài đặt qua trình quản lý gói
vnstat thường không được cài đặt sẵn và cần một bước thiết lập ban đầu để bắt đầu theo dõi.
- Trên Debian/Ubuntu:
sudo apt-get update && sudo apt-get install vnstat- Trên CentOS/RHEL:
sudo yum install vnstatCách 2: Cài đặt từ mã nguồn
Sử dụng phương pháp này khi bạn muốn cài đặt phiên bản vnstat mới nhất mà hệ thống chưa hỗ trợ, hoặc trên các distro không có sẵn gói.
- Cài đặt các công cụ cần thiết:
# Trên Debian/Ubuntu
sudo apt-get install build-essential
# Trên CentOS/RHEL
sudo yum groupinstall "Development Tools"- Tải mã nguồn và giải nén: Bạn truy cập trang chủ vnstat để lấy link phiên bản mới nhất)
wget https://humdi.net/vnstat/vnstat-2.12.tar.gz tar -zxvf vnstat-2.12.tar.gz cd vnstat-2.12- Biên dịch và cài đặt:
./configure --prefix=/usr --sysconfdir=/etc make sudo make installBước 2: Kích hoạt và khởi động dịch vụ
Để vnstat có thể chạy ngầm và tự động thu thập dữ liệu ngay cả sau khi khởi động lại máy chủ, bạn cần kích hoạt dịch vụ hệ thống:
sudo systemctl enable vnstat
sudo systemctl start vnstatBước 3: Khởi tạo Database cho card mạng
vnstat cần tạo một tệp cơ sở dữ liệu riêng để theo dõi từng giao diện mạng (interface) cụ thể. Bạn kiểm tra danh sách card mạng hiện có bằng lệnh:
vnstat --iflistKhởi tạo database cho giao diện mong muốn (Thay eth0 bằng tên card mạng của bạn, ví dụ: ens33 hoặc wlan0)
sudo vnstat -u -i eth0
Lưu ý
Sau khi chạy lệnh trên, bạn cần chờ khoảng 5-10 phút để vnstat thu thập những dữ liệu đầu tiên.
Bước 4: Chỉnh sửa file cấu hình /etc/vnstat.conf
Chỉnh sửa file cấu hình là bước quan trọng để bạn tùy chỉnh vnstat theo nhu cầu. Tiếp theo, bạn cần mở file cấu hình:
sudo nano /etc/vnstat.confCác tùy chỉnh quan trọng:
Interface "eth0": Nếu server của bạn sử dụng card mạng khác (ví dụens18,eno1), bạn hãy thay đổi giá trị mặc định này.UnitMode 0: Bạn thay đổi thành1nếu muốnvnstattự động hiển thị đơn vị (KB, MB, GB) một cách linh hoạt thay vì mặc định là MiB/GiB.

MonthRotate 1: Xác định ngày trong tháng mà bộ đếm sẽ reset (mặc định là ngày 1).

Các lệnh kiểm tra băng thông bằng vnStat
Xem thống kê tổng quan
Để xem báo cáo tổng hợp nhanh, bạn chỉ cần gõ vnstat để xem tóm tắt cho card mạng mặc định:
vnstat
Kết quả sẽ hiển thị tổng dung lượng đã dùng của tháng hiện tại, ước tính cho cả tháng, cùng với dữ liệu của hôm nay và hôm qua với các thông số cụ thể là:
- RX: Lưu lượng tải xuống (Download).
- TX: Lưu lượng tải lên (Upload).
- Total: Tổng lưu lượng đã sử dụng.
- Avg. rate: Tốc độ truyền tải trung bình.
Xem thống kê theo thời gian cụ thể
Người quản trị có thể lọc báo cáo theo các khung thời gian để dễ dàng quản lý:
Xem theo giờ: Giúp phát hiện các khung giờ cao điểm trong ngày.
vnstat -h
Xem theo ngày: Hiển thị lưu lượng sử dụng của từng ngày trong tháng (mặc định 30 ngày gần nhất).
vnstat -d
Xem theo tháng: Tổng hợp lưu lượng của các tháng trong năm.
vnstat -m
Xem Top 10 ngày có lượng traffic cao nhất
vnstat -t
Giám sát theo thời gian thực
Giám sát theo thời gian thực là một tính năng hữu ích để bạn có một cái nhìn nhanh về tình trạng mạng hiện tại mà không cần cài thêm các công cụ phức tạp.
Để tiến hành giám sát, bạn sử dụng cờ -l hoặc --live:
vnstat -l -i eth0Thay eth0 bằng card mạng của bạn. Màn hình sẽ cập nhật liên tục, hiển thị:

rx: Tốc độ nhận dữ liệu (Download).tx: Tốc độ truyền dữ liệu (Upload).rx/s,tx/s: Số lượng gói tin (packets) nhận/truyền mỗi giây.
Khi bạn nhấn Ctrl + C để dừng, vnstat sẽ đưa ra một bản tóm tắt về lượng dữ liệu đã được truyền trong suốt thời gian bạn theo dõi.

Trực quan hóa dữ liệu
Cú pháp cơ bản:
vnstati -s -i eth0 -o /path/to/your/image.pngCác ví dụ thực tế:
- Tạo ảnh tổng hợp (Summary): Kết quả là một file ảnh tóm tắt băng thông theo giờ, ngày, tháng.
vnstati -s -i eth0 -o ~/vnstat_summary.png- Tạo biểu đồ cột theo giờ (Hourly): Tạo biểu đồ sẽ giúp bạn xem giờ cao điểm sử dụng mạng trong ngày một cách trực quan hơn.
vnstati -h -i eth0 -o ~/vnstat_hourly.png- Tạo biểu đồ cột theo ngày (Daily): Tạo biểu đồ cột theo ngày giúp bạn theo dõi xu hướng sử dụng băng thông trong tháng.
vnstati -d -i eth0 -o ~/vnstat_daily.png- Tạo biểu đồ top ngày sử dụng nhiều nhất:
vnstati -t -i eth0 -o ~/vnstat_topdays.png
Các tùy chọn hữu ích khác
| Tùy chọn | Chức năng | Ví dụ sử dụng |
|---|---|---|
-i {interface} | Chọn một card mạng cụ thể để truy vấn. | vnstat -i ens18 |
--json | Xuất kết quả dưới định dạng JSON, hữu ích cho script. | vnstat --json |
-tr {giây} | Tính toán lưu lượng trung bình trong một khoảng thời gian. | vnstat -tr 10 |
--oneline | Hiển thị kết quả tóm tắt trên một dòng duy nhất. | vnstat --oneline |
--rebuild | Xây dựng lại database nếu bị lỗi. | sudo vnstat --rebuild -i eth0 |
Khi nào nên dùng vnstat, bmon/iftop và nethogs?
- Dùng
vnstatkhi: Bạn cần xem thống kê lịch sử (dùng bao nhiêu data tháng này, ngày hôm qua,…) một cách nhanh chóng và hiệu quả. Công cụ này rất phù hợp để kiểm tra lịch sử sử dụng dữ liệu mạng theo từng thời điểm (ngày, tháng, hoặc từng giờ), giúp bạn dễ dàng kiểm soát tổng dung lượng đã sử dụng, phát hiện bất thường trong lưu lượng qua thời gian. - Dùng
bmonhoặciftopkhi: Bạn cần phân tích real-time chi tiết theo từng kết nối (server đang nói chuyện với IP nào?). Các công cụ này hiển thị tức thời tất cả các kết nối đang hoạt động, bao gồm thông tin về các IP server đang giao tiếp, lượng băng thông đang sử dụng cho từng kết nối. - Dùng
nethogskhi: Bạn cần biết process/ứng dụng nào đang chiếm dụng băng thông. nethogs sẽ liệt kê và phân nhóm băng thông theo từng tiến trình cụ thể, giúp bạn dễ dàng kiểm soát, phát hiện các ứng dụng tiêu tốn tài nguyên mạng bất thường, hoặc hỗ trợ việc tối ưu hệ thống.

Câu hỏi thường gặp
vnstat có ảnh hưởng đến hiệu suất tài nguyên hệ thống không?
vnstat sử dụng rất ít tài nguyên vì chỉ theo dõi lưu lượng tại lớp kernel mà không cần xử lý toàn bộ gói tin, cực kỳ phù hợp trên cả những hệ thống cấu hình thấp.
vnstat có hỗ trợ giám sát nhiều card mạng cùng lúc không?
Hoàn toàn có thể. Bạn chỉ cần khởi tạo database và theo dõi từng card mạng riêng biệt bằng tham số -i {interface}, ví dụ: vnstat -i eth0, vnstat -i ens18.
Số liệu vnstat thu thập có được giữ lại sau khi khởi động lại hệ thống không?
Có, vì vnstat lưu dữ liệu vào database trên ổ cứng, nên toàn bộ lịch sử sẽ được giữ nguyên kể cả sau khi server restart.
Có thể tự động xuất báo cáo vnstat hằng ngày bằng script không?
Hoàn toàn có thể. Bạn chỉ cần tạo cron job chạy lệnh xuất báo cáo (ví dụ: vnstat --oneline >> /path/to/log.txt) để lập nhật ký lưu lượng hằng ngày hoặc theo lịch trình tùy ý.
Làm thế nào để reset dữ liệu thống kê nếu chuyển server/chuyển card mạng?
Có thể sử dụng tùy chọn --rebuild hoặc xóa database cũ của giao diện mạng, sau đó khởi tạo database mới với lệnh sudo vnstat -u -i để bắt đầu quá trình thống kê lại từ đầu.
vnstat là công cụ giám sát, kiểm tra băng thông tiện lợi, trực quan trên mọi hệ thống Linux, cung cấp một cái nhìn tổng thể phù hợp cả trên các server cấu hình thấp. Hy vọng qua hướng dẫn này, bạn đã nắm vững cách cài đặt vnstat và đọc các thông số băng thông theo giờ, ngày và tháng. Để tìm hiểu thêm các công cụ giám sát hệ thống và lệnh Linux khác, mời bạn tham khảo các bài viết dưới đây:




