Onlinekosten und Zeiten der einzelnen Surfer in 'ISDN dial on demand Netzen' ermitteln und darstellen
Home Peitsch
:
http://home.pages.at/bhg_online/midfli4l.html
aktuelle
Bug Diskussion
:
http://212.84.254.161/0814/html/cgi-bin/cms/gb/gb.cgi?id=3629
mehl den
Autor :
mailto:alexanderrichter@gmx.net
Ich übernehme keinerlei Verantwortung für
eventuelle Schäden, die durch dieses Skript verursacht werden
könnten. Die Benutzung erfolgt ausdrücklich auf eigene
Verantwortung.
Current ist opt_user-count_0.8a, dies heist
immer noch alpha und nicht zum bedenkenlosen Einsatz geeignet !
Das ISDN Package muss installiert und aktiviert sein, die eingetragenen Kosten pro Circuit werden als Berechnungsgrundlage genommen,
wer hier unachtsamerweise falsche Kosten pro Minute einträgt, hat in der Auswertung leider auch falsche Summen :-(
die Kosten der letzten Online Session werden durch Imonc bei sehr kurzen Verbindungen auf volle Cent gerundet, hier können also Abweichungen zur Telefonrechnung entstehen ( wenns mal einen dial on demand Anbieter geben sollte, der nur Bruchteile eines Cent pro Minute verlangt, wirds ganz ungenau. ps: diesen Anbieter SOFORT an den Autor melden.... )
installiert und in der base.txt/isdn.txt müssen aktiviert sein:
der mini-httpd für Web Interface Ausgabe, die Logs können auch mittels Editor der Wahl betrachtet und weiter ausgewertet werden
das opt_extratools (enthält den benötigten script prozessor awk, tcpdump, grep, wc, uniq, tail sowie sort) muss installiert sein
mindestens ein Isdn Circuit muss aktiviert sein ( im Isdn Package )
das Logging von Imond muss aktiviert sein ( in base.txt > IMOND_LOG='yes' )
Das Logverzeichnis sollte ausreichend Platz für die Logfiles während EINER Online Session haben, sicher sind hier nach derzeitigen Erkenntnissen > 5 Mbyte freier Platz, basierend auf den Erfahrungen des Autors (~ 400 kbyte bei 60 Minuten Online und Hangup Time von 45 sec)
Vorhergehende Installationen von opt_user-count sind nicht
kompatibel mit 0.8 ( betrifft nicht die vorhanden Logfiles ! )
wenn
aeltere Versionen vor 0.8 installiert sind, bitte vor Auspacken des
Paketes :
- /opt/etc/ppp/ip-up.user.uc und
/opt/etc/ppp/ip-up.user.uc per Hand entfernen !!!
Das Script funktioniert derzeit nur mit Isdn Verbindungen, Modem
ist noch nicht getestet ( wenn Bedarf Mehl an den Autor ) , dsl dial
on demand ist noch nicht implementiert ( hab leider kein dsl :-(
)
Eine vorhande HD-installation ist Voraussetzung, um die
Logdateien nach einem Reboot zu erhalten.
Man entpacke das
Archiv und kopiere alles in das Fli4L-Basisverzeichnis
-Editieren der uc.txt in /config
- OPT_USERCOUNT='no' ( 'yes oder 'no' ) Package aktivieren
-
OPT_USERCOUNT_DEBUG='no' ( 'yes oder 'no' ) Debug Modus aktivieren,
nur im Testfall auf yes, die aufgelaufenen Logfiles werden nicht
gelöscht, das kann den Router zum Absturz bringen , (ramdisk
full)
- OPT_USERCOUNT_LOGDIR='/var/log/' hier ein Directory
angeben, in dem die Log-Files abgelegt werden, muss beschreibar
sein,
sinnvollerweise in einer HD-Partition, um die Logs nach
einem Reboot zu erhalten und sollte ausreichend Platz für die
Logfiles während EINER Online Session haben, sicher sind hier
nach derzeitigen Erkenntnissen > 5 Mbyte freier Platz, basierend
auf den Erfahrungen des Autors ( ~ 400 kbyte bei 60 Minuten Online
und Hangup Time von 45 sec )
- OPT_USERCOUNT_ETH='eth0' die
Ethernet Card die ans Intranet angeschlossen ist ist hier anzugeben,
normalerweise meist 'eth0', Ethernet Karten die z.B. nur die
Verbindung zum dsl-Modem herstellen, sind nicht interessant.
Sollten
mehrere Intranets über demzufolge auch mehrere Ethernet Cards
zum Einsatz kommen, wird nur das Erste hier Angegebe zum Auswerten
benützt. Sollte der Fall mehrerer Intranets öfter
auftreten, muss der Autor hier noch nachbessern ( was nicht ohne
grösseren Aufwand geht ), derzeit besteht der Bedarf noch nicht.
Nun noch eine neues opt.tgz erstellen oder den Router per Imonc updaten, und schon kann man loslegen.
Wenn man die Dateien per ftp hochgeladen hat muss man noch darauf achten, dass das CGI ausführbar ist. Am einfachsten führt man dazu ein
chmod 777 /usr/local/htdocs/*.cgi
an der Router-Konsole oder per telnet/ssh aus.
On boot werden aus der /boot/rc.cfg Hostdaten, ob ein Proxy läuft,
das Log-dir vom Imond und isdn relevante Daten in
/var/run/uc_host.cfg eingelesen,
die später als Variablen in
die Scripts eingelesen werden.
Es wird eine gültige
/etc/ethers angelegt, die die Mac Adresse und den Hostnamen des
Routers enthält, wird gebraucht für tcpdump.
On ip-up, also beim Aufbau einer Verbindung, lauscht ein tcpdump basierendes Script auf dem Intranet Netzwerk device auf tcp/udp Pakete, die nicht fürs Intranet bestimmt sind, in Zeitschleifen, basierend auf Hang-up Time plus 15 secunden Reserve.
Pro Minuten-log wird das Vorkommen der User einmalig prozentual
erfasst.
On ip-down wird das Log Script beendet, die
enstandenen 'Minutenlogs' werden nach prozentualen Anteilen
ausgewertet,
wenn in einem 'Minutenlog' kein tcp/udp Traffic
auftauchte, wird der gesamte icmp Verkehr am Ethernet Interface in
diesem Logfile analysiert.
Es erfolgt eine Umsetzung aller
Prozentwerte der User im Verhältnis zur Anzahl der Minutenlogs
und den entstanden Kosten, die aus dem Log von Imonc gewonnen
werden.
Ausgeben werden die Anteile und Kosten, sowie die Online
Zeit für die letzte Session und für den aktuellen Monat.
So
noch kein Monatslog vorhanden ist (z.B weil neuer Monat angebrochen
ist) wird ein Neues erstellt.
Alles was dann an temporären
Dateien nach Abbau der Online Verbindung nicht mehr gebraucht wird,
wird geproppert.
Das main_User-Count.cgi liest bei Anforderung die last-session und monats-session Logs aus und stellt sie grafisch via Httpd dar.
- Wo finde ich die Auswertungen, wenn
ich keinen Httpd einsetze ?
Im unter
OPT_USERCOUNT_LOGDIR='/var/log/' eingetragenen Verzeichnis existiert
nach einer oder mehrerer Online Sessions
eine uc_main.log, diese
beinhaltet die Daten der letzten Session und Log Dateien nach dem
Muster Monat-Jahr_uc.log, welche die Daten der jeweiligen Monate
enthalten.
- Der Router zeigt nach dem Auflegen für
kurze Zeit ( via Imond ) bedrohlich hohe CPU Auslastung an, wieso
denn das ?
Nach dem Auflegen werden alle während der
letzten online Session gesammelten Informationen in einem Durchgang
analysiert und die Anteile der User gebildet, dies ist ein ziemlich
aufwendiger Vorgang, der einiges an CPU Leistung für sich
veransprucht.
Der Router sollte sich aber auch nicht aufhängen,
wenn viele andere Dienste gleichzeitig laufen, dann dauert das
Auswerten nur halt länger.
- Was fange ich mit den
Online Zeiten der User an, muss ich da noch irgendwas umrechnen ?
Die
Logzeiten der User sind nur zur Information gedacht, massgeblich sind
nur die entstanden Kosten ( wie im richtigen Leben halt )
-
In der Auswertung taucht ein User 'unknown' auf, der auch noch Kosten
verursacht hat, schönen Dank, an wen soll ich nun die Rechnung
schicken ?
Das Script kann bei der Auswertung nicht immer 100
%ig genau arbeiten, sorry, der 'uknown' User taucht auf, wenn zwar
eine Einwahl erfolgte, aber kein User definitiv festgestellt werden
konnte, das kann passieren bei :
° sehr kurzen
einwahlerzeugenden Ereignissen durch einen User , z.B extrem kurzes
ping ( einmalig ) ins Internet
° Serverdiensten die auf dem
Router laufen und selbst Internetverbindungen aufbauen
° durch
von Filesharing 'verseuchten' vom ISP zugewiesenen IP-Adressen, meint
neu zugewiesenene IP-Adressen können noch in den diversen
Filesharing Diensten eingetragen sein und werden durch andere User,
die am Filesharing teilnehmen, abgefragt.
Dies kann auch
passieren, wenn niemand im eigenen Netz Filesharing betrieben
hat.
Die Verbindung bleibt länger offen, weil ein paar Bytes
externer User an den Router tröpfeln, um zu erfahren ob ein
Filesharing Dienst läuft.
- Soweit so gut, aber die
Kosten stimmen nicht mit denen meiner Telefonrechnung überein
?
° Das Script bezieht die Einzelkosten aus den Angaben
der ISDN Circuits, manchmal hat der Anbieter diese Einzelkosten
zwischenzeitlich geändert...
° Es kann natürlich
sein, das die Kostenerfassung des Anbieters leicht abweichend zur
Kostenerfassung des Imond von fli4l funktioniert, das kann man
schlecht vom Router aus abgleichen.
° Das Logging der Kosten
umfasst nicht den ganzen Abrechnungszeitraum der Rechnung, weils z.B.
erst später gestartet wurde.
- Kann ich die Kosten
für einzelne User begrenzen ?
nicht automagisch, nur
durch Abgleichenen der aktuellen Kosten und User sperren über
externe Opts, die selektives User sperren ermöglichen.
0.1a Dezember 2002
erstes local lauffähiges Opt
0.2a Januar 2003
cgi Interface hinzugefügt
0.3a 10.02.2003
komplettes Rewrite nach anderem Inhaltlichen Ansatz
Umstellung von Erfassung der Traffic Anteile auf Traffic in sogenannten 'Minuten Fenstern'
Auswerten der Minuten Logs bis auf das Letzte während der Online Zeit
0.4a Februar 2003
geteilter Entwicklerzweig, einmal pur und einmal mit eingebautem gegen libc5 gelinktem awk
0.5a 25.02 2003
log Auswertung komplett nach Abbau der Verbindung verlagert, dadurch Segmentation faults durch zuviele externe Befehle im Log Script 'während online' verhindert ( hoffentlich :-) bitte Bug Reports, wenn Probleme ... )
0.6a 27.02 2003
eine Online Zeit Erfassung der User anteilig an der Online Session wurde eingebaut, kleine Bugfixes
0.7a 01.03 2003
das aktuelle Isdn Circiuit wird nun zur Laufzeit ausgewertet
Rundungsfehler bei Zeiterfassung behoben
Fehlerausgabe ins cgi integriert, wenn Startbedingungen nicht erfüllt
0.8a 02.03 2003
Überarbeitung nach fli4l Komformität, Abhängigkeiten werden beim Kompilieren geprüft
nur noch Variante mit eingebauten awk gegen libc5 compiled wird weiterentwickelt, bis opt-extratools ein awk gegen libc5 enthält
Fehlerausgabe aus cgi entfernt, nicht mehr notwendig
config Datei auf dos Zeilenumbrüche umgestellt
absolute Pfade bei Befehlsaufrufen in Relative gewandelt
ip.up und up.down Scripte in fli4l conforme namen umbenannt
... der Autor wird sich Mühe geben, die Gross- und Kleinschreibung auf seiner Tastaur einzuführen ( faule Sau, Ich... )
Einmalige Ereignisse durch user ( ping wlan ), die eine
Einwahl erzeugen sicher erfassen ( derzeit ab ping -c 5 sicher )
(
ab 0.5a durch Entlastung des 'während online' laufendem Scripts
erheblich verbessert, ab ping -c 2 sicher )
dsl Fähigkeit nachrüsten
Tages Logs erstellen, die via Web
Interface zu Zeiträumen zusammengefasst eine Auswertung
ausserhalb von festen Monatsgrenzen ermöglichen,
um
Rechnungen, die nicht am 1. des Monats beginnen und enden ( Telekom
) nachvollziehen zu können.
Viele bug error mehls von euch
Bug-Reports und Verbesserungsvorschläge bitte an u.a. eMail-Adresse richten, dafür bin ich jederzeit offen und dankbar. Denkt daran, verbessert werden kann nur etwas durch gemeinsames Zusammenarbeiten. Ich hoffe, Euch mit diesen Skripts die Router-Abrechnung ein wenig bequemer zu machen.
MfG,
Alexander Richter
mailto:alexanderrichter@gmx.net
vorlage.html doku erstellt von
Daniel H. Reichelt