Witam, próbuję zrobić sobie statystyki w lms i tak mnie zastanawia pewna kwestia. W dokumentacji mam napisane, że pobieranie statystyk z pliku po przez np.: demon traffic i tworzenie pliku ze statystykami powinny być robione raz na powiedzmy 15 minut. W cronie ustawiam aby statystyki zapisywały się do pliku co 15 minut i co 15 minut ustawiam aby demon traffic pobierał dane z tego pliku. I teraz jaką mam pewność, że najpierw zrobi się plik z danymi a dopiero później zostaną one pobrane? -- Pozdrawiam Łukasz Rostalski
Łukasz Rostalski wrote:
Witam, próbuję zrobić sobie statystyki w lms i tak mnie zastanawia pewna kwestia. W dokumentacji mam napisane, że pobieranie statystyk z pliku po przez np.: demon traffic i tworzenie pliku ze statystykami powinny być robione raz na powiedzmy 15 minut.
W cronie ustawiam aby statystyki zapisywały się do pliku co 15 minut i co 15 minut ustawiam aby demon traffic pobierał dane z tego pliku. I teraz jaką mam pewność, że najpierw zrobi się plik z danymi a dopiero później zostaną one pobrane?
Akurat w module traffic masz opcję begin_command, w niej ustawiasz komendę generującą plik. Do da ci pewnośc, że plik zostanie wygenerowany tuż przed jego wczytaniem. -- Aleksander 'A.L.E.C' Machniak http://alec.pl gg:2275252 LAN Management System Developer http://lms.org.pl Roundcube Webmail Developer http://roundcube.net
W dniu 2010.04.15 11:59, A.L.E.C pisze:
Akurat w module traffic masz opcję begin_command, w niej ustawiasz komendę generującą plik. Do da ci pewnośc, że plik zostanie wygenerowany tuż przed jego wczytaniem.
Faktycznie, zasugerowałem się wpisem: "Więcej informacji (w tym jak utworzyć taki plik) można znaleźć w rozdziale dotyczącym lms-traffic." i od razu tam przeskoczyłem. Dzięki. Zrobiłem taki mały skrypt, który zapisuje do pliku dane dla potrzeb statystyk. Mile widziane sugestie jeżeli da się to zrobić prościej. #### #!/bin/bash #zerujemy plik cp /dev/null traffic.log #pobieramy adresy, ktore nas interesuja for i in `cat /etc/internet/adresyip | cut -d'#' -f1` do IPADDR=`echo $i | cut -d';' -f1` #pobieramy dane z ipt dla konkretnego ip i wrzucamy do pliku cat /proc/net/ipt_account/all | grep -w "$IPADDR" | awk '{printf ("%s %.0f %.0f\n",$3,$6/1024,$12/1024);}' >> traffic.log done #zerujemy liczniki echo "reset" > /proc/net/ipt_account/all #### -- Pozdrawiam Łukasz Rostalski
mam podobne rozwiazanie tyle że nie resetuje liczników bo to ciągnie za sobą minimalną ale jednak utratę pewnej ilości danych mój skryp odejmuje poprzednią wartość licznika od aktualnej wartość licznika i wynik dodaje do bazy... zastanawiam się czemu dzielisz $6/1024 i $20/1024(bo zakładam że nie $12 ale $20) przecież lms przyjmuje dane w bajtach a nie kilobajtach i z tego co widzę chyba ze źle widzę ipt podaje w bajtach... W dniu 2010-04-15 12:58, Łukasz Rostalski pisze:
W dniu 2010.04.15 11:59, A.L.E.C pisze:
Akurat w module traffic masz opcję begin_command, w niej ustawiasz komendę generującą plik. Do da ci pewnośc, że plik zostanie wygenerowany tuż przed jego wczytaniem.
Faktycznie, zasugerowałem się wpisem: "Więcej informacji (w tym jak utworzyć taki plik) można znaleźć w rozdziale dotyczącym lms-traffic." i od razu tam przeskoczyłem. Dzięki.
Zrobiłem taki mały skrypt, który zapisuje do pliku dane dla potrzeb statystyk. Mile widziane sugestie jeżeli da się to zrobić prościej.
#### #!/bin/bash
#zerujemy plik cp /dev/null traffic.log
#pobieramy adresy, ktore nas interesuja for i in `cat /etc/internet/adresyip | cut -d'#' -f1` do IPADDR=`echo $i | cut -d';' -f1`
#pobieramy dane z ipt dla konkretnego ip i wrzucamy do pliku cat /proc/net/ipt_account/all | grep -w "$IPADDR" | awk '{printf ("%s %.0f %.0f\n",$3,$6/1024,$12/1024);}' >> traffic.log
done
#zerujemy liczniki echo "reset" > /proc/net/ipt_account/all ####
W dniu 2010.04.17 15:17, Marcin S. pisze:
mam podobne rozwiazanie tyle że nie resetuje liczników bo to ciągnie za sobą minimalną ale jednak utratę pewnej ilości danych mój skryp odejmuje poprzednią wartość licznika od aktualnej wartość licznika i wynik dodaje do bazy... zastanawiam się czemu dzielisz $6/1024 i $20/1024(bo zakładam że nie $12 ale $20)
przecież lms przyjmuje dane w bajtach a nie kilobajtach i z tego co widzę chyba ze źle widzę ipt podaje w bajtach...
Masz rację u siebie zmieniłem, dlaczego $20? U mnie $6 to bytes_src a $12 to bytes_dst cat all |grep -w "IP" ip = IP bytes_src = 11831 packets_src = 287 bytes_dst = 44327 packets_dst = 281 time = 2 -- Pozdrawiam Łukasz Rostalski
W dniu 2010.04.15 11:59, A.L.E.C pisze: Akurat w module traffic masz opcję begin_command, w niej ustawiasz komendę generującą plik. Do da ci pewnośc, że plik zostanie wygenerowany tuż przed jego wczytaniem.
Faktycznie, zasugerowałem się wpisem: "Więcej informacji (w tym jak utworzyć taki plik) można znaleźć w rozdziale dotyczącym lms-traffic." i od razu tam przeskoczyłem. Dzięki.
Zrobiłem taki mały skrypt, który zapisuje do pliku dane dla potrzeb statystyk. Mile widziane sugestie jeżeli da się to zrobić prościej.
#### #!/bin/bash
#zerujemy plik cp /dev/null traffic.log
#pobieramy adresy, ktore nas interesuja for i in `cat /etc/internet/adresyip | cut -d'#' -f1` do IPADDR=`echo $i | cut -d';' -f1`
#pobieramy dane z ipt dla konkretnego ip i wrzucamy do pliku cat /proc/net/ipt_account/all | grep -w "$IPADDR" | awk '{printf ("%s %.0f %.0f\n",$3,$6/1024,$12/1024);}' >> traffic.log
done
#zerujemy liczniki echo "reset" >> /proc/net/ipt_account/all ####
probuje sobie odpalic statystyki wg powyzszego schematu ale mam problem: iptables -A statistics -m account --aaddr 192.168.0.0/24 --aname ppp6 --ashort iptables: Invalid argument. Run `dmesg' for more information. w sysglogu: kernel: ip_tables: account.0 match: invalid size 88 (kernel) != (user) 84 coz to moze byc?:>
W dniu 28.03.2013 11:55, JOYNET napisał(a):
W dniu 2010.04.15 11:59, A.L.E.C pisze: Akurat w module traffic masz opcję begin_command, w niej ustawiasz komendę generującą plik. Do da ci pewnośc, że plik zostanie wygenerowany tuż przed jego wczytaniem.
Faktycznie, zasugerowałem się wpisem: "Więcej informacji (w tym jak utworzyć taki plik) można znaleźć w rozdziale dotyczącym lms-traffic." i od razu tam przeskoczyłem. Dzięki.
Zrobiłem taki mały skrypt, który zapisuje do pliku dane dla potrzeb statystyk. Mile widziane sugestie jeżeli da się to zrobić prościej.
#### #!/bin/bash
#zerujemy plik cp /dev/null traffic.log
#pobieramy adresy, ktore nas interesuja for i in `cat /etc/internet/adresyip | cut -d'#' -f1` do IPADDR=`echo $i | cut -d';' -f1`
#pobieramy dane z ipt dla konkretnego ip i wrzucamy do pliku cat /proc/net/ipt_account/all | grep -w "$IPADDR" | awk '{printf ("%s %.0f %.0f\n",$3,$6/1024,$12/1024);}' >> traffic.log
done
#zerujemy liczniki echo "reset" >> /proc/net/ipt_account/all ####
probuje sobie odpalic statystyki wg powyzszego schematu ale mam problem:
iptables -A statistics -m account --aaddr 192.168.0.0/24 --aname ppp6 --ashort iptables: Invalid argument. Run `dmesg' for more information.
w sysglogu:
kernel: ip_tables: account.0 match: invalid size 88 (kernel) != (user) 84
coz to moze byc?:>
Niezgodność między wersją ipt_account w jądrze i iptaccount w przestrzeni użytkownika (czyli module iptables). -- Pozdrawiam Tomasz Chiliński, Chilan
uczestnicy (5)
-
A.L.E.C -
JOYNET -
Marcin S. -
Tomasz Chiliński -
Łukasz Rostalski