MRTG
(→PERL) |
(→PERL) |
||
Linia 21: | Linia 21: | ||
Notka: Właśicwie, to całość mozna wykonać bez [[PERL]]a - wykorzystując odpowiednio zmodyfikowany skrypt w [[bash]]u. | Notka: Właśicwie, to całość mozna wykonać bez [[PERL]]a - wykorzystując odpowiednio zmodyfikowany skrypt w [[bash]]u. | ||
− | Tworzymy katalogu /var/www/html/mrtg/serwer/ | + | Tworzymy katalogu /var/www/html/mrtg/serwer/bin/ plik np ''s1.pl'' i wpisujemy w nim poniższy kod: |
+ | <perl> | ||
+ | #!/usr/bin/perl | ||
+ | |||
+ | $myserver = "156.17.41.139:27015"; | ||
+ | |||
+ | $ENV{'REQUEST_METHOD'} =~ tr/a-z/A-Z/; | ||
+ | |||
+ | if ($ENV{'REQUEST_METHOD'} eq "POST") { | ||
+ | read(STDIN, $in, $ENV{'CONTENT_LENGTH'}); | ||
+ | print "URL Input: $in <br><br> \n"; | ||
+ | } else { | ||
+ | $in = $ENV{'QUERY_STRING'}; | ||
+ | # print "URL Input: $in <br><br> \n"; | ||
+ | } | ||
+ | |||
+ | |||
+ | (my $setting, my $value) = split(/=/, $in); | ||
+ | $setting =~ tr/+/ /; | ||
+ | $setting =~ s/%(..)/pack("C", hex($1))/eg; | ||
+ | $value =~ tr/+/ /; | ||
+ | $value =~ s/%(..)/pack("C", hex($1))/eg; | ||
+ | |||
+ | if ($setting eq "server") { | ||
+ | $myserver = $value; | ||
+ | } | ||
+ | |||
+ | |||
+ | open (QSTAT, "/var/www/html/mrtg/serwer/bin/qstat -raw '*' -a2s $myserver |"); | ||
+ | |||
+ | print ; | ||
+ | while (<QSTAT>) { | ||
+ | ($type,$ip,$servername,$map,$maxplayers,$curplayers,$ping,$timeout) = split(/\*/); | ||
+ | if($ip) { | ||
+ | print "$curplayers \n"; | ||
+ | print "$curplayers \n"; | ||
+ | } | ||
+ | } | ||
+ | </per> | ||
+ | |||
+ | *w linii | ||
+ | $myserver = "156.17.41.139:27015"; | ||
+ | trzbea podac numer ip serwera oraz port, jaki chcemy sprawdzać. | ||
+ | * w linii | ||
+ | open (QSTAT, "/var/www/html/mrtg/serwer/bin/qstat -raw '*' -a2s $myserver |"); | ||
+ | trzeba wpisac ścieżke do pliku qstat. Oznaczenie -a2s oznacza, że qstat ma sprawdzać status serwera Half-Life Steam (''czyli wszystkie abzujące na Half-Life 1 po 1 czerwca 2006 roku oraz serwerów Source''). | ||
== Tekst nagłówka == | == Tekst nagłówka == |
Wersja z 11:19, 6 wrz 2006
Spis treści |
Opis
Poniżej podany jest przykład konfiguracji MRTG tak aby tworzył wykresy z ilości graczy na serwerze albo serwerach. Dzięki temu możemy zobaczyć ile jest graczy na serwerze, nie musimy statystyk tworzyć na serwerze na którym działa serwer. Prawdę mówiąc, dzieki temu możemy sprawdzać status dowolnego serwera.
Ten artykuł jest niepełny i wymaga uzupełnienia. Jeżeli jesteś w stanie - postaraj się go uzupełnić.. Pamiętaj, że nawet najmniejsza zmiana jest cenna i pomocna :) |
Wymagania
- MRTG - powinen być dostępny na wiekszości serwerów Linux a pod Windows trzeba doinstalowac.
- PERL i możliwośc wykonywania skryptów perl
- QStat - wyagana bdzie możliwość kompilacji ze żródeł, ale można sobie załatwić juz skompilowane wersje.
- WWW na kórej będa obrazki - przeważnie ten sam serwer na którym wszstko się dzieje - czyli mrtg, perl, qstat.
Instalacja
Katalogi
Zakładamy takie oto katalogi
- /var/www/html/mrtg/serwer/ - tu będą trzymane logi MRTG oraz obrazki i strona WWW
- /var/www/html/mrtg/serwer/bin/ - to jest katalog gdzie mieści się QStat oraz pliki perl
Oczywiście wartodostosować katalogi do własnych potrzeb - wszstko zalezy od dystrybucji, oraz jak chcemy ustawic sobie skrypty.
PERL
Notka: Właśicwie, to całość mozna wykonać bez PERLa - wykorzystując odpowiednio zmodyfikowany skrypt w bashu.
Tworzymy katalogu /var/www/html/mrtg/serwer/bin/ plik np s1.pl i wpisujemy w nim poniższy kod:
#!/usr/bin/perl $myserver = "156.17.41.139:27015"; $ENV{'REQUEST_METHOD'} =~ tr/a-z/A-Z/; if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $in, $ENV{'CONTENT_LENGTH'}); print "URL Input: $in <br><br> \n"; } else { $in = $ENV{'QUERY_STRING'}; # print "URL Input: $in <br><br> \n"; } (my $setting, my $value) = split(/=/, $in); $setting =~ tr/+/ /; $setting =~ s/%(..)/pack("C", hex($1))/eg; $value =~ tr/+/ /; $value =~ s/%(..)/pack("C", hex($1))/eg; if ($setting eq "server") { $myserver = $value; } open (QSTAT, "/var/www/html/mrtg/serwer/bin/qstat -raw '*' -a2s $myserver |"); print ; while (<QSTAT>) { ($type,$ip,$servername,$map,$maxplayers,$curplayers,$ping,$timeout) = split(/\*/); if($ip) { print "$curplayers \n"; print "$curplayers \n"; } } </per> *w linii $myserver = "156.17.41.139:27015"; trzbea podac numer ip serwera oraz port, jaki chcemy sprawdzać. * w linii open (QSTAT, "/var/www/html/mrtg/serwer/bin/qstat -raw '*' -a2s $myserver |"); trzeba wpisac ścieżke do pliku qstat. Oznaczenie -a2s oznacza, że qstat ma sprawdzać status serwera Half-Life Steam (''czyli wszystkie abzujące na Half-Life 1 po 1 czerwca 2006 roku oraz serwerów Source''). == Tekst nagłówka ==