Những gì Zypher đã nói về rrdtool (và bất cứ điều gì khác sử dụng nó như một phụ trợ - MRTG, Cacti, v.v.) có lẽ là chính xác. RRDTool được thiết kế để trở thành một công cụ phân tích xu hướng lịch sử 'trung bình'. Nó tính trung bình và lưu trữ các bộ đếm theo gia số ngày càng không kiên quyết tăng dần theo thời gian.
Tuy nhiên, đây là cấu hình bằng cách thiết lập RRA một cách khủng khiếp. Tuy nhiên, tôi thú nhận không biết gì về việc định cấu hình những thứ này, và cá nhân tôi chưa bao giờ gặp may mắn khi đặt chúng vượt quá tiêu chuẩn của tôi (15 phút, 8 giờ, 1 tuần, 1 tháng, 1 năm). Tôi khuyên bạn nên xem xét cấu hình RRA để mong đợi đầu vào hàng ngày và cung cấp cho nó bộ đếm băng thông của bạn từ netstat. Bạn sẽ nhận được một số dữ liệu lịch sử rất hay và hiểu biết sâu sắc về cách sử dụng của bạn.
Để trả lời vấn đề hiện tại của bạn, về việc đảm bảo bạn không vượt quá giới hạn băng thông hàng ngày; Tôi sẽ khuyên bạn nên lấy các quầy netstat hàng ngày cho giao diện được đề cập. Bạn có thể so sánh lưu lượng của ngày hôm qua tại thời điểm t với các quầy ngày hôm nay tại thời điểm t và tìm hiểu xem đã chuyển bao nhiêu. Một tập lệnh đơn giản với lưu trữ tệp văn bản phẳng của giá trị trước đó có thể đủ. Sau đó, bạn có thể vô hiệu hóa giao diện nếu bạn phát hiện băng thông vượt quá hoặc theo dõi nó suốt cả ngày và thông báo cho quản trị viên nếu bạn sắp đạt đến giới hạn của mình.
Để nhận các byte đầu vào trên hệ thống OSX, bạn có thể sử dụng bộ lệnh sau:
netstat -ib | grep -e "$INTERFACE" -m 1 | awk '{print $7}'
Ngược lại, đầu ra có thể thu được với:
netstat -ib | grep -e "$INTERFACE" -m 1 | awk '{print $10}'
Bạn có thể đưa các bộ đếm liên quan vào một tệp phẳng được lưu trữ ở đâu đó và so sánh nó với:
#!/bin/bash
set -e # exit if any error occurs
previous_days_bytes_xferred=`cat $flatfile_storage`
todays_bytes_xferred=`netstat -ib | grep -e "$INTERFACE" -m 1 | awk '{print $10}'`
if [ $((todays_bytes_xferred - previous_days_bytes_xferred)) -gt $threshold ]; then
DO SOME STUFF
fi
echo $todays_bytes_xferred > $flatfile_storage
Chỉ cần điều chỉnh xử lý netstat để phù hợp với hệ thống của bạn (vì tôi biết bạn không chạy OSX).