Làm cách nào để giám sát băng thông mạng trên mỗi người dùng trên máy chủ Ubuntu?


12

Tôi có một số người dùng shell trên máy chủ với 300GB truyền dữ liệu hàng tháng. Làm cách nào tôi có thể theo dõi việc sử dụng băng thông trên mỗi người dùng?


điều này thậm chí có thể? Về mặt lý thuyết, có vẻ như nó rắc rối hơn giá trị của nó, vì về mặt kỹ thuật, bạn phải có từng quy trình sử dụng internet để xác định ai đang chạy nó, sau đó tìm ra cách sử dụng băng thông kết hợp. Bất kỳ lý do cụ thể nào bạn đang muốn theo dõi trên cơ sở mỗi người dùng ngoài người dùng shell bạn có? Bởi vì với 300GB dữ liệu vào / ra hàng tháng, có vẻ như bạn sẽ không đạt được số tiền đó: /
Thomas Ward

Nó phải có thể, khác làm thế nào để ISP giới hạn băng thông cho mỗi người dùng?
djeikyb

@EvilPhoenix Tôi muốn theo dõi mức sử dụng trên mỗi người dùng.300GB không phải là nhiều đối với một máy chủ có ít nhất 20 người dùng sử dụng máy chủ này làm máy chủ proxy.
Pedram

1
Có vẻ như bạn có một câu trả lời thực tế tuyệt vời từ Kees Cook, nhưng nếu bạn vẫn đang tìm kiếm các phương pháp, tôi tự hỏi liệu việc đặt câu hỏi khác nhau có thể giúp ích gì không. Tôi tìm thấy hướng dẫn này googling "làm thế nào để giới hạn băng thông sử dụng trên Linux": faqs.org/docs/Linux-HOWTO/Bandwidth-Limiting-HOWTO.html
djeikyb

Câu trả lời:


13

Là root, ít nhất bạn có thể đo lưu lượng đi trên cơ sở mỗi người dùng bằng cách sử dụng mô-đun "chủ sở hữu" của iptables. Nếu tất cả người dùng bạn muốn theo dõi đều ở trong /root/list-of-users.txt, bạn có thể làm:

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

Và sau đó, số lượng gói và byte cho mỗi lưu lượng truy cập đi của người dùng sẽ hiển thị:

iptables -L OUTPUT -n -v | grep out_

Điều này có thể được mở rộng hơn nữa với CONNophone để theo dõi bên trong.


Cảm ơn. Thật tuyệt. Tôi đã làm điều này. Nhưng tại sao tôi không thể sử dụng cùng một phương pháp cho INPUT?
Pedram

1
Chủ sở hữu của gói không được biết đến với các gói đến vì theo quan điểm của kernel, nó đến từ bên ngoài máy. CONNophone có thể được sử dụng để buộc các gói trong luồng TCP với người khởi tạo của họ, v.v., nhưng tôi không có ví dụ hoạt động về điều này.
Kees Cook

7

Tôi vừa bắt gặp NetHogs :

NetHogs là một công cụ 'net top' nhỏ. Thay vì phá vỡ lưu lượng trên mỗi giao thức hoặc trên mỗi mạng con, giống như hầu hết các công cụ khác, nó nhóm băng thông theo quy trình.

nhập mô tả hình ảnh ở đây

Điều này nên cho phép bạn theo dõi băng thông theo tên người dùng. Có thể vẫn cần một vài công cụ khác để ghi lại thông tin và thêm tất cả, nhưng đó là một khởi đầu tốt mà không cần sử dụng trực tiếp iptables.


Nó cũng có thể được bắt đầu trong chế độ để tổng hợp lưu lượng: sudo nethogs -v 3 eth0(hoặc nhấn mliên tục sau khi bắt đầu chuyển qua các chế độ). Kết hợp với tmuxđể chạy liên tục (ngay cả khi sshphiên của bạn gặp sự cố).
tanius

6

Bạn có thể sử dụng Cacti

Cacti là một giao diện hoàn chỉnh cho RRDTool, nó lưu trữ tất cả các thông tin cần thiết để tạo biểu đồ và điền chúng vào dữ liệu trong cơ sở dữ liệu MySQL. Frontend hoàn toàn do PHP điều khiển. Cùng với việc có thể duy trì Đồ thị, Nguồn dữ liệu và Lưu trữ Robin tròn trong cơ sở dữ liệu, xương rồng xử lý việc thu thập dữ liệu. Ngoài ra còn có hỗ trợ SNMP cho những người được sử dụng để tạo biểu đồ lưu lượng truy cập với MRTG.

Hoặc vnStat

vnStat là trình giám sát lưu lượng mạng dựa trên bảng điều khiển dành cho Linux và BSD, giữ nhật ký lưu lượng mạng cho (các) giao diện đã chọn. Nó sử dụng số liệu thống kê giao diện mạng được cung cấp bởi kernel làm nguồn thông tin. Điều này có nghĩa là vnStat sẽ không thực sự đánh hơi bất kỳ lưu lượng truy cập nào và cũng đảm bảo sử dụng nhẹ tài nguyên hệ thống.

Cả hai đều tuyệt vời.


2
Cảm ơn nhưng tôi đã thấy cả hai rồi và dường như không ai trong số họ cung cấp cho mỗi người dùng theo dõi. Tôi muốn theo dõi việc sử dụng trên mỗi người dùng.
Pedram

5

Tôi đã xem xét một chút và tôi đã không tìm thấy một gói gui toàn diện nào làm những gì bạn muốn. Hy vọng rằng một người tồn tại và ai đó sẽ đăng về nó ở đây cuối cùng.

Tôi không thực sự là một người kết nối mạng, nhưng từ những gì tôi đã đọc, trong số nhiều thứ khác netstatiptablesđược cho là làm cho kế toán người dùng dựa trên ip / máy chủ, những gì các acctcông cụ đã làm cho kế toán quy trình hệ thống. Liên kết cyberciti.biz này có thể giúp bạn phát triển một hệ thống với các công cụ sau:

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


Cảm ơn, nhưng như bạn đã nói, chúng được sử dụng cho kế toán người dùng dựa trên ip. Tôi có một số người dùng shell có thể sử dụng máy chủ ở các địa điểm khác nhau, đặc biệt là trong một khoa của trường đại học có cùng địa chỉ IP (phía sau NAT). tìm kiếm một giải pháp kế toán dựa trên người dùng, nếu có thể.
Pedram

netstat -ehiển thị người dùng shell, cho phép bạn liên kết ip / host với tên người dùng.
djeikyb
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.