Те, що Зіфер говорив про rrdtool (і все інше, що використовує його як бекенд - MRTG, кактуси тощо), ймовірно, правильне. RRDTool розроблений як "усереднений" історичний інструмент тренд-аналізу. Він в середньому і зберігає лічильники з все більш нерішучим кроком з подальшою віддачею у часі.
Це, однак, можна налаштувати, встановивши RRA відповідно. Признаюсь, я нічого не знаю про їх налаштування, і ніколи особисто мені не пощастило отримати їх за межі мого стандартного набору (15 хвилин, 8 годин, 1 тиждень, 1 місяць, 1 рік). Я рекомендую розібратися в налаштуванні RRA, щоб очікувати щоденного введення та подавати його на лічильник пропускної здатності від netstat. Ви отримаєте кілька дуже приємних історичних даних та ознайомлення з моделями використання.
Щоб відповісти на вашу поточну проблему, щоб переконатися, що ви не перевищуєте щоденну межу пропускної здатності; Я б рекомендував щодня брати лічильники netstat для відповідного інтерфейсу. Ви можете порівняти вчорашній трафік за час t з сьогоднішніми лічильниками за час t і дізнатися, скільки було переведено. Простий скрипт з плоским зберіганням текстових файлів попереднього значення, ймовірно, буде достатнім. Потім ви можете відключити інтерфейс, якщо виявите перевищену пропускну здатність або стежите за ним протягом дня та сповістите адміністратора, якщо наближаєтесь до обмеження.
Для отримання вхідних байтів в системі OSX ви можете використовувати такий набір команд:
netstat -ib | grep -e "$INTERFACE" -m 1 | awk '{print $7}'
І навпаки, вихід можна отримати за допомогою:
netstat -ib | grep -e "$INTERFACE" -m 1 | awk '{print $10}'
Ви можете спливати відповідні лічильники в плоский файл, який зберігається десь, і порівняти його з:
#!/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
Просто налаштуйте обробку netstat відповідно до вашої системи (оскільки я знаю, що ви не працюєте з OSX).