17.8.2007 04:03
Tahle sada skriptů slouží k monitorování dat klientů sítě na routeru.
Sbírá a odlišuje data: na proxy server (kombinace ip a portu), místní síť (ip/maska), internet (vše ostatní).
Podle toho pak zobrazuje data za posledních 24 hodin a za poslední interval ("aktuální" bitrate).
Generuje barevné grafy podle odlišných dat (RRDtool stack).
Je potřeba: Apache, PHP5, Cron, RRDtool, MySQL.
Část první: instalace
Pokud vám chybí některá z aplikací výše, doinstalovat. Do databáze přidat tabulku podle obsahu přiloženého souboru db.sql. Nastavit a ověřit nastavení v hlavičce ipaccounting.sh. Dovytvářet chybějící adresáře. PHP soubory hodit na www stránky, přidat do ip.php a iplist.php hlavičky a patičky, aby se to hodilo do theme vaší stránky. Do cronu přidat spouštění skriptu ipaccounting.sh každé 3 minuty (*/3 * * * *). Pokud se rozhodnete používat část skriptu proti zacyklení, nezapomeňte si přidat do skriptu spouštěného po restartu serveru spouštění "ipaccounting.sh clean" - tím se mimo jiné vymaže soubor, který by mohl zůstat přítomný po pádu systému při spuštěném ipaccountingu a zabraňovat dalšímu spouštění.
Část druhá: sběr informací
Bash skript IP accounting založený na práci Standuse a Bohdyho
Část třetí: interpretace informací pomocí PHP
iplist.php, __mysql_connect.php, bar.gif
ip.php, make.php, _resolutions.php
Sbírá a odlišuje data: na proxy server (kombinace ip a portu), místní síť (ip/maska), internet (vše ostatní).
Podle toho pak zobrazuje data za posledních 24 hodin a za poslední interval ("aktuální" bitrate).
Generuje barevné grafy podle odlišných dat (RRDtool stack).
Je potřeba: Apache, PHP5, Cron, RRDtool, MySQL.
Část první: instalace
Pokud vám chybí některá z aplikací výše, doinstalovat. Do databáze přidat tabulku podle obsahu přiloženého souboru db.sql. Nastavit a ověřit nastavení v hlavičce ipaccounting.sh. Dovytvářet chybějící adresáře. PHP soubory hodit na www stránky, přidat do ip.php a iplist.php hlavičky a patičky, aby se to hodilo do theme vaší stránky. Do cronu přidat spouštění skriptu ipaccounting.sh každé 3 minuty (*/3 * * * *). Pokud se rozhodnete používat část skriptu proti zacyklení, nezapomeňte si přidat do skriptu spouštěného po restartu serveru spouštění "ipaccounting.sh clean" - tím se mimo jiné vymaže soubor, který by mohl zůstat přítomný po pádu systému při spuštěném ipaccountingu a zabraňovat dalšímu spouštění.
Část druhá: sběr informací
Bash skript IP accounting založený na práci Standuse a Bohdyho
- automaticky označí pakety pomocí iptables v tabulce mangle
- data z bufferů každé tři minuty vybírá a nuluje čítače
- sesbíraná data ukládá pro grafy do rrd databází
- do txt souborů ukládá data přenesená v posledním intervalu (aktuální aktivita klientů)
- vše průběžně ukládá do mysql databáze
Část třetí: interpretace informací pomocí PHP
iplist.php, __mysql_connect.php, bar.gif
- vypíše seznam klientů z aktivních (txt) a živých (sql)
- přepočítá aktivitu za poslední interval na lidské jednotky kB(MB)/s
- z databáze vyčte data za posledních 24 hodin pro každou IP adresu zvlášť (a přepočítá)
- tento výčet je jakž takž optimalizován, síť okolo 60 PC trvá na Athlonu 1300MHz, 560MB RAM do 1s, podruhé stejné data (ve stejném intervalu) mysql optimalizuje na ~200ms
- provede DNS resolve jednotlivých adres na názvy
- je k dispozici filtr aktivity: aktivní (nenulové data v intervalu), neaktivní (nenulové data za 24h), všechny
- data lze seřadit
- parametr pro veřejnost skrytý: last=week, month, year (náročné na sql, month mi trvalo 25s)
- u každého klienta je odkaz na skript ip.php
ip.php, make.php, _resolutions.php
- vygeneruje graf datových toků pomocí RRDtool
- barevně odlišuje tři síťové pásma (proxy, czf-lan, net)
- zapamatuje si pomocí cookies poslední zobrazené časové měřítko (1h, 6h, 12h, 1d, 3d, týden, měsíc, rok)
- šetří CPU - pokud není poslední požadovaný generovaný obrázek starší, než minuta, nebude generovat nový, ale jen vyhodí img src