Freesco, NND, CDN, EOS http://forum.freesco.pl/ |
|
Statystyki mistrza Zciecha nie dzialaja :D http://forum.freesco.pl/viewtopic.php?f=22&t=11300 |
Strona 1 z 1 |
Autor: | aphex [ sobota, 18 lutego 2006, 20:16 ] |
Tytuł: | Statystyki mistrza Zciecha nie dzialaja :D |
witam wszystkich probowalem zainstalowac te statystyki ze strony http://www.wiki.nnd.freesco.pl/index.php/Statystyki zedytowalem odpowiednie pliki odnosnie opcji z APACHE ale podczas uruchomienia pokazuje mi cos takiego [root@NND stat]# ./rc.stat start [root@NND stat]# /usr/stat/statmat: line 141: /var/www/stats/stat.tmp: Nie ma takiego pliku ani katalogu /usr/stat/statmat: line 221: /var/www/stats/stat.tmp: Nie ma takiego pliku ani katalogu /usr/stat/statmat: line 222: /var/www/stats/stat.tmp: Nie ma takiego pliku ani katalogu /usr/stat/statmat: line 224: /var/www/stats/stat.tmp: Nie ma takiego pliku ani katalogu /usr/stat/statmat: line 226: /var/www/stats/stat.tmp: Nie ma takiego pliku ani katalogu mv: nie można wykonać stat na `/var/www/stats/stat.tmp': Nie ma takiego pliku ani katalogu podam jeszcze dwa pliki ktore zedytowalem i plik statmat prosilbym o jakas pomoc i wyrozumialosc poniewaz nie jestem dobry w linux-sie ![]() plik il_pol !/bin/bash # Obliczanie ilosci polaczen # Zciech VER=0.2a-05.04.18 while :; do echo "<head> <meta HTTP-EQUIV=Refresh CONTENT=30> <meta HTTP-EQUIV=Cache-Control content=no-cache> <meta HTTP-EQUIV=Pragma CONTENT=no-cache> <meta HTTP-EQUIV=Content-Type CONTENT=text/html; charset=iso-8859-2> </head>">/tmp/ilosc_html echo "<center><b><font color=#000080 face=Verdana>Statystyka ilosci polaczen</font></b></p>Godzina: ">>/tmp/ilosc_html echo `date +%H:%M`>>/tmp/ilosc_html echo '<br><br></center><body style="background-color: e0e0e0"><center>'>>/tmp/ilosc_html echo '<table border=1 cellspacing=0 cellpadding=0 style="background-color: FFFFDE">'>>/tmp/ilosc_html >/tmp/il_pol echo "<tr><center><td><b>  IP  <b></td><td><b>  RAZEM  </b></td><td><b>  TCP  </b></td><td><b>  TCP EST. </b></td><td><b>  UDP  </b></td></center><tr>">>/tmp/ilosc_html sed -n /^/P /proc/net/ip_conntrack | while read a1 a2 a3 a4 a5 a6 a7 a8;do if [ $a1 = "tcp" ]; then IP=$a5 echo $a5"-" "tcp"$a4 >>/tmp/il_pol elif [ $a1 = "udp" ]; then echo $a4"-" "udp" >>/tmp/il_pol fi done sed -n /^/P /etc/hosts|while read IP Nazwa;do ile=`cat /tmp/il_pol|sed -n /"src=$IP-"/P|wc -l` iletcp=`cat /tmp/il_pol|sed -n /"src=$IP-"/P|grep tcp |wc -l` ileudp=`cat /tmp/il_pol|sed -n /"src=$IP-"/P|grep udp |wc -l` ileest=`cat /tmp/il_pol|sed -n /"src=$IP-"/P|grep tcpES |wc -l` c=black if [ $ile -gt 200 ];then echo `date`" : "$IP " mial "$ile "polaczen">>/var/log/maskarada c="red" elif [ $ile -gt 100 ];then c=blue fi if [ $ile -gt 0 ];then echo "<tr><td><b>  $IP  </b></td><font color=$c><td>  $ile  </td><td>  $iletcp  </td><td>  $ileest  </td><td>  $ileudp  </td></font><tr>">>/tmp/ilosc_html fi done cat << !EOF >>/tmp/ilosc_html </LEFT></TABLE>Log polaczen ponad 200: /var/log/maskarada <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0><TR VALIGN=top> <TD WIDTH=150 ALIGN=LEFT><FONT FACE="Arial,Helvetica" SIZE=2>version $VER</FONT></TD> <TD WIDTH=200 ALIGN=RIGHT><FONT FACE="Arial,Helvetica" SIZE=2> <A HREF="mailto:zciech@wp.pl"><Zciech></A> <A HREF="http://reliserv.pl/nnd"><http://reliserv.pl/nnd></A></TD> </TR><TABLE></CENTER></BODY> !EOF mv /tmp/ilosc_html /home/httpd/html/stats/ilosc.html rm /tmp/il_pol sleep 30 done plik statmat.conf #konfiguracja statmat - monitor transferu dla duzych dystrybucji #IP twojego serwera ipserwera=192.168.0.1 # Linia od ktorej w /etc/hosts znajduja sie adresy hostow wewnetrznych # 1 - w pierwszej, 2 - w drugiej itd... (licza sie tylko linie z adresami IP) linia=9 #Sciezka gdzie beda zapisywane pliki loga oraz pliki html wwwdir=/home/httpd/html/stats/ #Zadna liczba nie bedziewieksza od tej, jesli jest wieksza zostaje zamieniona na jednostke np. 110000 na 11k podzielnik_stats=10000 #Wyswietlanie tylko hostow ktore maja sciagnieta jakakolwiek ilosc danych w calkowitych, tygodniowych itp statystykach tylko_aktywni_stats=1 #Wyswietlanie tylko hostow ktore maja sciagnieta jakakolwiek ilosc danych w dzisiejszych itp statystykach tylko_aktywni_dzis=1 #Czas zliczania danych czas_cyklu=60 #Co ile cykli Monitor ma wyswietlac statystyki tygodniowe miesieczne itp co_ile_cykli_staty=10 #Nazwy plikow html stat_name=calkowite.html statw_name=tygodniowe.html www_stat=index.html #Nazwy logow - najlepiej nie zmieniac dzienne_plik=sdzisiaj.log dat1_name=scalkowite dat2_name=stygodniowe #Tego tez nie ma sensu zmieniac www_stat_tmp=stat.tmp oraz plik statmat #!/bin/bash #Statystyki transferow na wzor tych z justice by mat1l9s, thx dla v|rusa #=====konfiguracja===== . statmat.conf #path=/var/tmp/ #wwwdir=/usr/local/www/www/ #www_stat=stat.html #dzienne_plik=sdzisiaj.log #tylko_aktywni_dzis=1 #czas_cyklu=30 #co_ile_cykli_staty=10 #ipserwera=192.168.0.1 #podsiec=192.168.0.0/24 #www_stat_tmp=stat.tmp #podzielnik_stats=10000 #=====koniec konfiguracji====== jdn_kb() { if [ $1 -gt 0 ]; then if [ $1 -gt $(expr $podzielnik_stats \* 1024) ]; then echo " $(expr $1 / 1048576) <font color=black face=courier>GB </font>" elif [ $1 -gt $podzielnik_stats ]; then echo " $(expr $1 / 1024) <font color=blue face=courier>MB </font>" else echo " $1 <font color=green face=courier>kB </font>" fi else echo " 0 <font color=green face=courier>kB </font>" fi } jdn() { if [ $1 -gt 0 ]; then if [ $1 -gt $(expr $podzielnik_stats \* 1024) ]; then echo " $(expr $1 / 1048576) <font color=blue face=courier>MB </font>" elif [ $1 -gt $podzielnik_stats ]; then echo " $(expr $1 / 1024) <font color=green face=courier>kB </font>" else echo " $1 <font color=coral face=courier> B </font>" fi else echo " 0 <font color=coral face=courier> B </font>" fi } jdn_bit() { if [ $1 -gt 0 ]; then if [ $1 -gt $(expr $podzielnik_stats \* 1024) ]; then echo " $(expr $1 / 1048576) <font color=blue face=courier>mb/s </font>" elif [ $1 -gt $podzielnik_stats ]; then echo " $(expr $1 / 1024) <font color=green face=courier>kb/s </font>" else echo " $1 <font color=coral face=courier> b/s </font>" fi else echo " 0 <font color=coral face=courier> b/s </font>" fi } #kasowanie na wszelki wypadek. iptables -D FORWARD -j liczenie 2>>/dev/null iptables -X liczenie 2>>/dev/null iptables -F liczenie 2>>/dev/null #for i in `cat /etc/hosts|awk '{print $1}'`; do # iptables -D liczenie -d $i -s ! $ipserwera -j ACCEPT 2>>/dev/null; # iptables -D liczenie -s $i -d ! $ipserwera -j ACCEPT 2>>/dev/null; #done #Inicjacja zliczania i zerowanie licznikow (ew nabijanie licznikow) iptables -N liczenie ipeki[0]="Wszyscy" dl_h[0]=0; ul_h[0]=0 dl_dz[0]=0; ul_dz[0]=0 dl_now[0]=0; ul_now[0]=0 licznik=$(expr 2 - $linia) for i in `cat /etc/hosts| grep -v "^#"|grep [0123456789] |awk '{print $1}'`; do if [ $licznik -ge 1 ];then iptables -A liczenie -d $i -j RETURN 2>>/dev/null iptables -A liczenie -s $i -j RETURN 2>>/dev/null ipeki[$licznik]=$i dl_h[$licznik]=0; ul_h[$licznik]=0 dl_dz[$licznik]=0; ul_dz[$licznik]=0 fi licznik=$(expr $licznik + 1) done iptables -I FORWARD -j liczenie 2>>/dev/null if [ -f $wwwdir$dzienne_plik ]; then #jesli mamy juz jakies dane to wczytajmy je licznik=0 for i in ${ipeki[*]}; do #patrzymy czy dla kezdego IP mamy jakies dane, jesli nie (nowy IP), wtedy ustawiamy 0 linijka=`grep "$i " $wwwdir$dzienne_plik` if [ -n "$linijka" ] then #wczytujemy te linijke do tablic licznik2=0 for j in $linijka; do licznik2=$(expr $licznik2 + 1) case $licznik2 in 2) dl_h[$licznik]=$j ;; 3) ul_h[$licznik]=$j ;; 4) dl_dz[$licznik]=$j ;; 5) ul_dz[$licznik]=$j ;; esac done else dl_h[$licznik]=0; ul_h[$licznik]=0; dl_dz[$licznik]=0; ul_dz[$licznik]=0; fi licznik=$(expr $licznik + 1) done fi #Zliczanie. h_skasowane=0; dz_skasowane=0 licznik_cyklu=1 while :; do C1=`/bin/date +%s` HM=`date +%H:%M`; S=`date +%S` echo "<html> <head> <meta HTTP-EQUIV=Refresh CONTENT=$czas_cyklu> <meta HTTP-EQUIV=Cache-Control content=no-cache> <meta HTTP-EQUIV=Pragma CONTENT=no-cache> <meta HTTP-EQUIV=Content-Type CONTENT=text/html; charset=iso-8859-2> </head> <body bgcolor=e0e0e0> <p align=center><b><font color=#000080 face=verdana>Monitor Transferu</font></b></p> <p>Czas wygenerowania statystyk - <b>$HM</b><font size=2>:$S</font> - srednia transferu z ostatnich $czas_cyklu sek.</p> <p> <a href=../mrtg/index.html> Statystyki MRTG </p> <p> <a href=nsstats.txt> Statystyki NICE </p> <p> <a href=ilosc.html> Ilosci polaczen </p> <center> <table border=1 cellspacing=0 cellpadding=0> <tr align=center><td width=100>IP</td><td width=100>aktualnie downl<br></td><td width=100>aktualnie upl<br></td><td width=100>ostatnia godz.<br>download</td><td width=100>ostatnia godz.<br>upload</td><td width=100>dzienny<br>download</td><td width=100>dzienny<br>upload</td></tr>" > $wwwdir$www_stat_tmp; licznik=-1 flaga=0 dl_now[0]=0; ul_now[0]=0 for i in `iptables -v -n -x -L -Z liczenie|awk '{print $2}'`; do if [ $licznik -ge 1 ]; then if [ $flaga -eq 0 ] then dl_now[$licznik]=$i; flaga=1; licznik=$(expr $licznik - 1) else ul_now[$licznik]=$i; flaga=0; dl_now[0]=$(expr ${dl_now[0]} + ${dl_now[$licznik]}) ul_now[0]=$(expr ${ul_now[0]} + ${ul_now[$licznik]}); fi fi licznik=$(expr $licznik + 1); done unset dl_now[$(expr $licznik)] #ostatnia linijka to napis licznik=0 for i in ${ipeki[*]}; do dl_teraz=${dl_now[$licznik]} ul_teraz=${ul_now[$licznik]} dl_h[$licznik]=$(expr ${dl_h[$licznik]} + $dl_teraz) ul_h[$licznik]=$(expr ${ul_h[$licznik]} + $ul_teraz) view_dl_dz=$(expr ${dl_dz[$licznik]} + ${dl_h[$licznik]} / 1024) view_ul_dz=$(expr ${ul_dz[$licznik]} + ${ul_h[$licznik]} / 1024) if [ $view_dl_dz -gt 0 -o $tylko_aktywni_dzis = 0 ]; then echo "<tr><td align=left>$i</td><td align=right>`jdn_bit $(expr $dl_teraz \* 8 / $czas_cyklu)`</td><td align=right>`jdn_bit $(expr $ul_teraz \* 8 / $czas_cyklu)`</td><td align=right>`jdn ${dl_h[$licznik]}`</td><td align=right>`jdn ${ul_h[$licznik]}`</td><td align=right>`jdn_kb $view_dl_dz`</td><td align=right>`jdn_kb $view_ul_dz`</td></tr>">>$wwwdir$www_stat_tmp; fi licznik=$(expr $licznik + 1) done #Zapis/Kasownie licznikow o polnocy if [ $HM = "00:00" -o $HM = "00:01" ]; then if [ $dz_skasowane = 0 ]; then ./statistics update licznik=0 # rm -f $wwwdir$dzienne_plik for i in ${ipeki[*]}; do dl_dz[$licznik]=0; ul_dz[$licznik]=0 dl_h[$licznik]=0; ul_h[$licznik]=0 # echo "$i ${dl_h[$licznik]} ${ul_h[$licznik]} ${dl_dz[$licznik]} ${ul_dz[$licznik]}" >> $wwwdir$dzienne_plik licznik=$(expr $licznik + 1) done dz_skasowane=1 fi elif [ $HM = "00:02" -o $HM = "00:03" ] then if [ $dz_skasowane = 1 ]; then dz_skasowane=0; fi; fi #Zapis co godzine czas=`date +%M` # echo $h_skasowane czas $czas if [ $czas = "00" -o $czas = "01" ]; then if [ $h_skasowane = 0 ]; then # rm -f $wwwdir$dzienne_plik licznik=0 for i in ${ipeki[*]}; do dl_dz[$licznik]=$(expr ${dl_dz[$licznik]} + ${dl_h[$licznik]} / 1024 ) ul_dz[$licznik]=$(expr ${ul_dz[$licznik]} + ${ul_h[$licznik]} / 1024 ) dl_h[$licznik]=0; ul_h[$licznik]=0 # echo "$i ${dl_h[$licznik]} ${ul_h[$licznik]} ${dl_dz[$licznik]} ${ul_dz[$licznik]}" >> $wwwdir$dzienne_plik licznik=$(expr $licznik + 1) done h_skasowane=1 fi elif [ $czas = "02" -o $czas = "03" ] then if [ $h_skasowane = 1 ]; then h_skasowane=0; fi fi if [ $licznik_cyklu -eq $co_ile_cykli_staty ]; then licznik_cyklu=0 rm -f $wwwdir$dzienne_plik licznik=0 for i in ${ipeki[*]}; do echo "$i ${dl_h[$licznik]} ${ul_h[$licznik]} ${dl_dz[$licznik]} ${ul_dz[$licznik]}" >> $wwwdir$dzienne_plik licznik=$(expr $licznik + 1) done ./statistics view & fi licznik_cyklu=$(expr $licznik_cyklu + 1) echo "</table>">>$wwwdir$www_stat_tmp echo "<p> <a href="$stat_name">Statystyki D/M/R i Razem</a><br><a href="$statw_name">Statystyki tygodniowe</a></p>" >> $wwwdir$www_stat_tmp C2=`/bin/date +%s` echo "<p><font size=2>czas wykonania skryptu: $(expr $C2 - $C1) sek.</font></p>" >> $wwwdir$www_stat_tmp echo "</body></html>">>$wwwdir$www_stat_tmp mv $wwwdir$www_stat_tmp $wwwdir$www_stat sleep $(expr $czas_cyklu + $C1 - $C2) done do tego dodam iz na stronie gdzie powinien co 5 sec. odswiezac aktualne transfery nic sie nie dzieje ![]() a plik stworzylem recznie i tez nic wykasowalem dla testu wszystkie pliki w katalogu stats tam gdzie generuje pliki html pokazaly sie statystyki niceshapera ilosc polaczen ale index.html wogole sie nie wygenerowal |
Autor: | aphex [ sobota, 18 lutego 2006, 21:20 ] |
Tytuł: | |
heh jakos poszlo wszystko pokasowalem i krok po kroku zrobilem to tak samo z tym ze teraz nie pokazuje mi w tabeli nazw uzytkownikow z pliku hosts a w statystykach niceshaper sa |
Autor: | Żik [ sobota, 4 marca 2006, 16:20 ] |
Tytuł: | |
1. W skrypcie liczącym ilość połaczeń jest jakiś błąd. Nie pokazuje liczby połaczeń dla ostatniego wpisu w pliku hosts. Wprawdzie dodałem sobie fikcyjny wpis ale są przez to przekłamania w innych statach wykorzystujących hosts. Czy ktoś wie co należy poprawić ![]() 2. Musiałem wyłączyć zliczanie ilosci danych, gdyż po rebootcie użycie procka 100% (dodatkowo mam mrtg+niceshaper). Czy jest na to jakiś sposób ![]() |
Autor: | Żik [ sobota, 4 marca 2006, 21:07 ] |
Tytuł: | |
Ad 1. W pliku hosts musi być na końcu wolna linia (sam doszedłem) Ad 2. Nie mam pewności ale chyba właśnie dodanie fikcyjnego wpisu w hots spowodowało powstanie pętli sleep w skrypcie liczącym dane i wzrost obciażenia procka do 100%. ![]() ![]() |
Autor: | ernidok [ wtorek, 14 marca 2006, 20:51 ] |
Tytuł: | |
witam, mi działa jak narazie ładnie na wersji nnd nie pamiętam z kiedy ale chyba jeszcze z 2004 roku, albo sie myle i na apache'u. bawił sie ktoś może, żeby razem z adresami wyświetlała się nazwa hosta z pliku hosts? pozdro |
Autor: | Żik [ środa, 15 marca 2006, 12:35 ] |
Tytuł: | |
U mnie działa na nowym NND i na thttpd. Ale nie jestem przekonany do wiarygodności wskazań. Z grubsza jest OK ale np. dzienny całkowity download pokrywa się z tygodniowym podobnie dla niektórych userów a widać gołym okiem, że to nieprawda. W dziennych statach pokazuje dla wszystkich: poniedziałek 0, wtorek 0, a dla poszczególnych userów wskazania są, więc znowu nieprawda.... http://83.18.250.254:82/stats/tygodniowe.html |
Strona 1 z 1 | Strefa czasowa UTC+2godz. |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |