User-Count v0.8a

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

1. Inhalt

  1. Inhalt

  2. Disclaimer

  3. Installationshinweise für FLi4L ab v2.0.6
    Voraussetzungen

    Installation

  4. Funktionsumfang

  5. FAQ

  6. History

  7. Roadmap

  8. Wishlist

  9. Schlusswort

2. Disclaimer

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 !

3. Installationshinweise für FLi4L ab v2.0.6

3.1 Voraussetzungen

3.2 Installation

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.

4. Funktionsumfang

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.

5. FAQ


- 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.

6. History

7. Roadmap

8. Wishlist

9. Schlusswort

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