Co to jest MRTG i jak się go instaluje świetnie opisał Artur Kulda w artykule http://www.bsd4u.org/content/view/20/157/, dlatego nie będę tego dublował i przejdę od razu do konkretów. Moim celem jest pokazanie jak w bardzo prosty sposób można zrobić statystyki transferów dla poszczególnych adresów IP w sieci lokalnej korzystających z dowolnego łącza przy pomocy licznika pakietów (count) zaimplementowanego w ipfw.
Do dzieła…
- zakładamy, że mamy:
a) podsieć 172.16.1.0/29 (8 adresów ip)
b) 2 użytkowników w sieci LAN
c) połączenie z Internetem na interfejsie tun0 (Neostrada)
d) prosty NAT włączony poprzez ppp_nat=”YES” w /etc/rc.conf
Tworzymy regułki, które będą zliczały ruch wychodzący i wchodzący z interfejsu zewnętrznego na poszczególne adresy IP w sieci lokalnej.
Dla adresu 172.16.1.2# ipfw add 200 count all from any to 172.16.1.2 via tun0
# ipfw add 201 count all from 172.16.1.2 to any via tun0
Dla adresu 172.16.1.3
# ipfw add 202 count all from any to 172.16.1.3 via tun0
# ipfw add 203 count all from 172.16.1.3 to any via tun0
Następne adresy IP dodajemy analogicznie
Możemy też napisać regułkę dla wszystkich razem w tej podsieci
# ipfw add 300 count all from any to 172.16.1.0/29 via tun0
# ipfw add 301 count all from 172.16.1.0/29 to any via tun0
Do wygenerowania statystyk graficznych przez MRTG dla jednego użytkownika potrzebujemy dwóch danych:
- pierwsza to liczba pakietów wchodzących do danego IP przez tun0
- druga to liczba pakietów wychodzących z danego IP przez tun0
Mamy już napisane regułki, które to zliczają:
200 *** 8178781 count ip from any to 172.16.1.2 via tun0
201 *** 0779973 count ip from 172.16.1.2 to any via tun0
202 *** 320025 count ip from any to 172.16.1.3 via tun0
203 *** 485265 count ip from 172.16.1.3 to any via tun0
300 *** 8498806 count ip from any to 172.16.1.0/29 via tun0
301 *** 1265238 count ip from 172.16.1.0/29 to any via tun0
Potrzebne dane do wygenerowania statystyk są w 3 kolumnie, aby je wydobyć piszemy prosty skrypt w powłoce shell - sh. Może on się nazywać user1 i może wyglądać np. tak:
#!/bin/sh
ipfw show |grep 00200 | awk '{print $3}'
ipfw show |grep 00201 | awk '{print $3}' |
trzeba pamiętać o tym aby nadać mu prawo wykonywalności chmod +x user1
analogicznie robimy dla pozostałych IP i całej podsieci dając kolejne nazwy skryptów: user2, wan
Teraz napiszemy konfigurację dla MRTG aby pobierał dane z przygotowanych wcześniej skryptów i może ona wyglądać tak:
# mrtg_ip.cfg
# lokalizacja, gdzie będą generowane statystyki
WorkDir: /sciezka_do/www/domena.pl/stats
# język w którym chcemy mieć statystykę
Language: polish
# użytkownik 1
Target[user1]: `/ścieżka_do_skryptów/user1`
Title[user1]: Janek
MaxBytes[user1]: 640000
PageTop[user1]: Statystyka Jana
# użytkownik 2
Target[user2]: `/ścieżka_do_skryptów/user2`
Title[user2]: Marysia
MaxBytes[user2]: 640000
PageTop[user2]: Statystyka Marysi
# wszyscy razem
Target[wan]: `/ścieżka_do_skryptów/wan`
Title[wan]: WAN – wszyscy razem
MaxBytes[wan]: 640000
PageTop[wan]: WAN - wszyscy razem |
Teraz generujemy index.html dla naszych statystyk za pomocą polecenia:
indexmaker --output=/sciezka_do/WWW/domena.pl/stats mrtg_IP.cfg
Pozostaje wrzucić nam do /etc/crontab linijki, która będzie co 5 minut odpalała mrtg i generowała aktualne statystyki.
*/5 * * * * root /usr/local/bin/mrtg /etc/mrtg/mrtg_IP.cfg >/dev/null 2>&1 |
przeładować crona poleceniem
# killall -HUP cron
Autor: Krzysztof Różycki Powyższy artykuł został udostępniony na zasadach Licencji BSD |
| Dodane przez mrdadi w dniu - 2006-07-06 12:45:51 | Chciałem tylko dodać jeszcze... że do skryptu: #!/bin/sh ipfw show |grep 00200 | awk '{print $3}' ipfw show |grep 00201 | awk '{print $3}' można dodać dwie linijki... uptime |awk '{print $3}' hostname i będzie super ślicznie... pozdrówka MrDadi | | Dodane przez micard w dniu - 2006-11-04 13:44:07 | może i troszkę upierdliwy jestem.. ale coby było pięknie ładnie to zamiast uptime |awk '{print $3}' proponuję uptime |awk '{print $3" day(s) " $5}' | | Dodane przez micard w dniu - 2006-11-04 13:46:28 | aa i jeszcze jedno.. nie wiem czemu ale ode mnie indexmaker wymagał aby w pliku mrtg.conf w polu PageTop[target] znajdowala się sekcja więc kolejna mała propozycja to: # wszyscy razem Target[wan]: `/ścieżka_do_skryptów/wan` Title[wan]: WAN – wszyscy razem MaxBytes[wan]: 640000 PageTop[wan]: WAN - wszyscy razem Pozdrowionka Micard | | Dodane przez micard w dniu - 2006-11-04 13:49:04 | no mały problem się pojawił nie wyświetliło znaczników html.. mój błąd. powinno być: PageTop[wan]: H1 WAN - wszyscy razem /H1 gdzie oczywiście H1 i /H1 są znacznikami html i powinny być w nawiasach ostrych Micard |
Tylko zarejestrowani użytkownicy mogą pisać komentarze. Prosze zaloguj się i dodaj komentarz. Powered by AkoComment! |