Was Zypher über rrdtool (und alles andere, das es als Backend verwendet - MRTG, Cacti usw.) sagte, ist wahrscheinlich richtig. RRDTool ist als Tool für die Analyse von gemittelten historischen Trends konzipiert. Es mittelt und speichert die Zähler in immer unauflöslicheren Schritten, je weiter die Zeit zurückliegt.
Dies kann jedoch durch entsprechendes Einrichten der RRAs konfiguriert werden. Ich gebe jedoch zu, absolut nichts über die Konfiguration dieser zu wissen, und hatte persönlich nie Glück, sie über meinen Standardsatz (15 Minuten, 8 Stunden, 1 Woche, 1 Monat, 1 Jahr) hinaus zu bringen. Ich würde empfehlen, die RRAs so zu konfigurieren, dass tägliche Eingaben erwartet werden, und den Bandbreitenzähler von netstat einzugeben. Sie erhalten einige sehr schöne historische Daten und Einblicke in Ihre Nutzungsmuster.
Um Ihr aktuelles Problem zu lösen, müssen Sie sicherstellen, dass Sie ein tägliches Bandbreitenlimit nicht überschreiten. Ich würde empfehlen, die Netstat-Zähler täglich für die betreffende Schnittstelle zu greifen. Sie können den Verkehr von gestern zum Zeitpunkt t mit den heutigen Zählern zum Zeitpunkt t vergleichen und herausfinden, wie viel übertragen wurde. Ein einfaches Skript mit einem flachen Textdateispeicher des vorherigen Werts würde wahrscheinlich ausreichen. Sie können dann die Benutzeroberfläche deaktivieren, wenn Sie eine Bandbreitenüberschreitung feststellen, oder sie den ganzen Tag überwachen und einen Administrator benachrichtigen, wenn Sie sich Ihrem Limit nähern.
Um die Eingabebytes auf einem OSX-System abzurufen, können Sie die folgenden Befehle verwenden:
netstat -ib | grep -e "$INTERFACE" -m 1 | awk '{print $7}'
Umgekehrt kann die Ausgabe erhalten werden mit:
netstat -ib | grep -e "$INTERFACE" -m 1 | awk '{print $10}'
Sie könnten die relevanten Zähler in eine flache Datei einfügen, die irgendwo gespeichert ist, und mit Folgendem vergleichen:
#!/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
Passen Sie einfach die netstat-Verarbeitung an Ihr System an (da ich weiß, dass Sie kein OSX ausführen).