MRTG

Od HLDS.pl
(Różnice między wersjami)
Skocz do: nawigacji, wyszukiwania
(Crontab)
(standardowo poprawiam literówki)
 
(Nie pokazano 31 wersji utworzonych przez 4 użytkowników)
Linia 1: Linia 1:
 
=Opis=
 
=Opis=
 
Poniżej podany jest przykład konfiguracji MRTG tak aby tworzył wykresy z ilości graczy na serwerze albo serwerach.
 
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.
+
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, dzięki temu możemy sprawdzać status dowolnego serwera.
{{stub}}
+
 
 +
*Artykuł przeznaczony na serwery [[Linux]].
 +
 
 +
 
 +
*Na [[Windows]] tez się da, ale jest to bardziej żmudne:
 +
** ścieżki będą zupełnie inne, bo windowsowskie :)
 +
**zainstalować serwer [[WWW]]
 +
** zmodyfikować skrypty aby działało jako pliki '''.bat''' a nie bash - w sumie kosmetyczna zmiana
 +
** zamiast [[cron]]a użyć harmonogramu [[Windows]] albo komendy '''at'''.
  
 
=Wymagania=
 
=Wymagania=
* [http://oss.oetiker.ch/mrtg/ MRTG] - powinen być dostępny na wiekszości serwerów [[Linux]] a pod [[Windows]] trzeba doinstalowac.
+
* [http://oss.oetiker.ch/mrtg/ MRTG] - powinien być dostępny na większości serwerów [[Linux]]
* [[PERL]] i możliwośc wykonywania skryptów perl
+
* [[QStat]] - wymagana będzie możliwość kompilacji ze źródeł, ale można sobie załatwić już skompilowane wersje.
* [[QStat]] - wyagana bdzie możliwość kompilacji ze żródeł, ale można sobie załatwić juz skompilowane wersje.
+
* [[WWW]] na której będą obrazki - przeważnie ten sam serwer na którym wszystko się dzieje - czyli MRTG, [[Perl]], [[QStat]].
* [[WWW]] na kórej będa obrazki - przeważnie ten sam serwer na którym wszstko się dzieje - czyli mrtg, perl, qstat.
+
* [[cron]] - do wykonywania co pewien czas skryptów.
  
 
=Instalacja=
 
=Instalacja=
Linia 16: Linia 24:
 
* /var/www/html/mrtg/serwer/bin/ -  to jest katalog gdzie mieści się [[QStat]] oraz pliki perl
 
* /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.
+
Oczywiście wartodostosować katalogi do własnych potrzeb - wszystko zależy od dystrybucji, oraz jak chcemy ustawić sobie skrypty.
  
  
 
==QStat==
 
==QStat==
Nie będę się tutał rozpisywał na temat [[QStat]]a - przeczytajcie po prostu [[QStat|tutaj]] jak go zainstalować.
+
Nie będę się tutaj rozpisywał na temat [[QStat|Qstat'a]] - przeczytajcie po prostu [[QStat|tutaj]] jak go zainstalować.
  
==PERL==
+
==Template==
Notka: Właśicwie, to całość mozna wykonać bez [[PERL]]a - wykorzystując odpowiednio zmodyfikowany skrypt w [[bash]]u.
+
Tworzymy plik template w katalogu '''/var/www/html/mrtg/serwer/bin/''' o nazwie '''mrtg.qstat''' który będzie przetwarzany przez [[QStat]] podczas wywołania. Jest to zwykły plik tekstowy.
  
Tworzymy katalogu /var/www/html/mrtg/serwer/bin/ plik np ''s1.pl'' i wpisujemy w nim poniższy kod:
+
'''Uwaga''' - wszelkie znaki mają znaczenie, nie powinno być żadnych zbytecznych spacji, i znaków nowej linii (najwięcej więc jest wklepać z palca.
<perl>
+
#!/usr/bin/perl
+
  
$myserver = "156.17.41.139:27015";
+
<pre>
 +
$(IF:DOWN)0
 +
0
 +
$(ENDIF)$(IF:UP)$PLAYERS
 +
$PLAYERS
 +
$(ENDIF)</pre>
  
$ENV{'REQUEST_METHOD'} =~ tr/a-z/A-Z/;
+
==Skrypt Statusu==
 +
Tworzymy katalogu '''/var/www/html/mrtg/serwer/bin/''' plik np '''s1.sh''' i wpisujemy w nim poniższy kod:
 +
<bash>
 +
#!/bin/bash
 +
SERWER="156.17.41.139:27015" # adres i port serwera
 +
TYP_GRY="-a2s" # typ gry, zobacz w qstat jakie sa rodzaje
 +
QSTAT="/var/www/html/mrtg/serwer/bin/qstat" # sciezka do programu qstat
 +
TPL="/var/www/html/mrtg/serwer/bin/mrtg.qstat" # template do wyswietlania statusu, w nim mamy tylko info o graczach
  
if ($ENV{'REQUEST_METHOD'} eq "POST") {
+
# nie zmieniac
  read(STDIN, $in, $ENV{'CONTENT_LENGTH'});
+
$QSTAT -Ts $TPL $TYP_GRY $SERWER
  print "URL Input: $in <br><br> \n";
+
</bash>
  } else {
+
  $in = $ENV{'QUERY_STRING'};
+
#  print "URL Input: $in <br><br> \n";
+
}
+
  
  
  (my $setting, my $value) = split(/=/, $in);
+
'''Pamiętajmy''' aby nadać prawa do wykonywana dla tego pliku ( ''chmod +x s1.sh'' ).
  $setting =~ tr/+/ /;
+
  $setting =~ s/%(..)/pack("C", hex($1))/eg;
+
  $value =~ tr/+/ /;
+
  $value =~ s/%(..)/pack("C", hex($1))/eg;
+
  
  if ($setting eq "server") {
+
Warto przetestować plik s1.sh, poprzez wpisanie poniższej komendy w konsoli w katalogu gdzie jest ten plik :)
    $myserver = $value;
+
<pre>
  }
+
kaszpir@bagno bin$ ./s1.sh
 +
16
 +
16
 +
kaszpir@bagno bin$
 +
</pre>
 +
''Bardzo ważne'' aby dane wyjściowe były 2 liczbai, każda w osobnej linii, tak jak w przykładzie powyżej.
  
 
+
==MRTG konfig==
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";
+
  }
+
}
+
</perl>
+
 
+
*w linii
+
<perl>$myserver = "156.17.41.139:27015";</perl>
+
trzbea podac numer ip serwera oraz port, jaki chcemy sprawdzać.
+
* w linii
+
<perl>open (QSTAT, "/var/www/html/mrtg/serwer/bin/qstat -raw '*' -a2s $myserver |");</perl>
+
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'').
+
 
+
Warto przetestować skrypt - w tym celu w [[konsoli]] wpisujemy
+
perl s1.pl
+
W efekcie powinniśmy uzyskać 2 linie zawierające ilość graczy na serwerze.
+
[kaszpir@bagno mrtg]$ perl s1.pl
+
12
+
12
+
[kaszpir@bagno mrtg]$
+
 
+
Jak nie ma na serwerze nikogo to oczywiście będą zera.
+
 
+
=MRTG konfig=
+
 
Teraz czas zrobić plik konfiguracyjny dla MRTG aby po wczytaniu go wykonywał.
 
Teraz czas zrobić plik konfiguracyjny dla MRTG aby po wczytaniu go wykonywał.
  
W tym celu tworzymy plik w katalogu ''/var/www/html/mrtg/serwer/'' o nazwie ''serwer_gry.cfg'' i wpisujemy do niego poniższe dane:
+
W tym celu tworzymy plik w katalogu '''/var/www/html/mrtg/serwer/''' o nazwie '''serwer_gry.cfg''' i wpisujemy do niego poniższe dane:
 
<pre>
 
<pre>
 
WorkDir: /var/www/html/mrtg/serwer/
 
WorkDir: /var/www/html/mrtg/serwer/
Linia 92: Linia 77:
 
MaxBytes[_]: 32
 
MaxBytes[_]: 32
  
Target[dod13]: `/var/www/html/mrtg/serwer/bin/s1.pl`
+
Target[dod13]: `/var/www/html/mrtg/serwer/bin/s1.sh`
 
#MaxBytes[dod13]: 32
 
#MaxBytes[dod13]: 32
 
#Options[dod13]: gauge, nopercent, growright
 
#Options[dod13]: gauge, nopercent, growright
Linia 107: Linia 92:
  
 
  WorkDir: /var/www/html/mrtg/serwer/
 
  WorkDir: /var/www/html/mrtg/serwer/
Definuje w jakim katalogu maja się znajdowac logi i wyniki pracy MRTG
+
Definuje w jakim katalogu mają się znajdować logi i wyniki pracy MRTG
 
  Target[dod13]: `/var/www/html/mrtg/serwer/bin/s1.pl`
 
  Target[dod13]: `/var/www/html/mrtg/serwer/bin/s1.pl`
Oznacza jaki skrypt chcemy wykonac do zliczania danych, tutaj jest nasz perlowy skrypt na stats serwera.
+
Oznacza jaki skrypt chcemy wykonać do zliczania danych, tutaj jest nasz perlowy skrypt na stats serwera.
Linii Options oraz MaxBytes radze nie zmieniać - albo zajrzyjcie do instruckji MRTG. Reszte mozna spolszczyć.
+
Linii Options oraz MaxBytes radze nie zmieniać - albo zajrzyjcie do instrukcji MRTG. Resztę można spolszczyć.
  
'''Pamiętajcie''' aby zmienić prawa do pliku serwer_gry.sh na wyonywalne ( ''chmod +x serwer_gry.sh'' ).
+
'''Pamiętajcie''' aby zmienić prawa do pliku serwer_gry.sh na wykonywalne ( ''chmod +x serwer_gry.sh'' ).
  
=Bash=
+
==Bash==
Skrypt będzie potrzebny do uruchamiania w [crontab]]ie. Najlepiej umieścić go w katalogu ''/var/www/html/mrtg/serwer/'' i nazwać ''serwer_gry.sh''
+
Skrypt będzie potrzebny do uruchamiania w [[cron]]ie. Najlepiej umieścić go w katalogu ''/var/www/html/mrtg/serwer/'' i nazwać ''serwer_gry.sh''
 
<bash>
 
<bash>
 
#!/bin/bash
 
#!/bin/bash
Linia 124: Linia 109:
 
</bash>
 
</bash>
 
Skrypt wykonuje dwie rzeczy:
 
Skrypt wykonuje dwie rzeczy:
*wywołanie mrtg aby wczytał plik konfiguracyjny i przetworzenia go (w tym wywołanie skryptu perl, który z kolei odpala qstat'a) do obrazka ze statusu serwera.
+
*wywołanie MRTG aby wczytał plik konfiguracyjny i przetworzenia go (w tym wywołanie skryptu perl, który z kolei odpala [[QStat|qstat'a]]) do obrazka ze statusu serwera.
*wykonanie programu indexmaker, który przetwarzając plik konfiguracyjny wygeneruje plik index.html dla serwera [[WWW]]
+
*wykonanie programu ''indexmaker'', który przetwarzając plik konfiguracyjny wygeneruje plik index.html dla serwera [[WWW]]
  
=Testowanie=
+
==Testowanie==
Aby srpawdzić czy działa to poprawnie warto uruchomić go wpisując (''będą c w katalogu /var/www/html/mrtg/serwer/'')
+
Aby sprawdzić czy działa to poprawnie warto uruchomić go wpisując (''będą c w katalogu /var/www/html/mrtg/serwer/'')
 
  ./serwer_gry.sh
 
  ./serwer_gry.sh
i popatrzec na pojawiające się komunikaty (szczególnie w /var/www/html/mrtg/serwer/serwer_gry.log). Za pierwszymi 3 wywołaniami MRTG powinen zwrócić informacje że brakuje kilku plików log, ale juz za czwartym wywołaniem powinen nie zgłaszać błędów  -tak więc jest to normalne. Jeśli za dziesiątym wywołaniem masz błędy to zanczy ze coś zwaliłeś.
+
i popatrzeć na pojawiające się komunikaty (szczególnie w /var/www/html/mrtg/serwer/serwer_gry.log). Za pierwszymi 3 wywołaniami MRTG powinien zwrócić informacje że brakuje kilku plików log, ale już za czwartym wywołaniem powinien nie zgłaszać błędów  -tak więc jest to normalne. Jeśli za dziesiątym wywołaniem masz błędy to znaczy ze coś zwaliłeś.
  
Patrz także na plik /var/www/html/mrtg/serwer/'''index.html''' oraz czy w katalogu /var/www/html/mrtg/serwer/ sa obrazki '''png'''.
+
Patrz także na plik /var/www/html/mrtg/serwer/'''index.html''' oraz czy w katalogu /var/www/html/mrtg/serwer/ obrazki '''png'''.
Warto więc nakierowac naszą przeglądarkę na ten ''serwer/index.html'' i zobaczyc czy sa obrazki (konfiguracja katalogów zależy od serwera WWW)
+
Warto więc nakierować naszą przeglądarkę na ten ''serwer/index.html'' i zobaczyć czy obrazki (konfiguracja katalogów zależy od serwera WWW)
  
=Crontab=
+
==Crontab==
No to jak skrypt działa to należy go dodać do [[cron]]taba aby się wykonywał raz na pięc minut.
+
No to jak skrypt działa to należy go dodać do [[cron|crontaba]] aby się wykonywał raz na pięć minut.
 
W tym celu wpisujemy w konsoli  
 
W tym celu wpisujemy w konsoli  
 
  crontab -e
 
  crontab -e
Linia 145: Linia 130:
  
 
=Rozszerzenie na kilka serwerów=
 
=Rozszerzenie na kilka serwerów=
Cały pic polega na tym, że tworzymy oddzielne pliki PERL dla każdego serwera - np poprzez skopiowanie pliku s1.pl na s2.cfg i ustawienie tam innego numeru ip oraz portu i rodzaju serwera (zmiana -a2s na inny, zobacz [[QStat]])
+
Cały pic polega na tym, że tworzymy oddzielne pliki '''.sh''' dla każdego serwera - np poprzez skopiowanie pliku s1.sh na s2.sh i ustawienie tam innego numeru [[IP]] oraz portu i rodzaju serwera (zmiana -a2s na inny, zobacz [[QStat]])
  
Nastepnie poszerzamy plik '''serwer.cfg''' jaki przetwarza mrtg i indexmaker.
+
Następnie poszerzamy plik '''serwer.cfg''' jaki przetwarza MRTG i ''indexmaker''.
 
Przykład dla kilku serwerów:
 
Przykład dla kilku serwerów:
 
<pre>
 
<pre>
Linia 154: Linia 139:
 
Options[_]: growright, gauge, nopercent, integer, avgpeak, noborder, pngdate
 
Options[_]: growright, gauge, nopercent, integer, avgpeak, noborder, pngdate
 
MaxBytes[_]: 32
 
MaxBytes[_]: 32
 +
ShortLegend[_]: Graczy
 +
YLegend[_]: Graczy
 +
LegendI[_]: Graczy:
 +
LegendO[_]:
 +
Legend1[_]: Graczy
 +
Legend2[_]:
  
Target[fbro]: `/var/www/html/mrtg/serwer/bin/s1.pl`
+
Target[fbro]: `/var/www/html/mrtg/serwer/bin/s1.sh`
#MaxBytes[fbro]: 32
+
#Options[fbro]: gauge, nopercent, growright
+
#Options[fbro]: growright, gauge, nopercent, integer, avgpeak, noborder, pngdate
+
ShortLegend[fbro]: users
+
YLegend[fbro]: users connected
+
LegendI[fbro]: Users Connected:
+
LegendO[fbro]:
+
Legend1[fbro]: Users Connected
+
Legend2[fbro]:
+
 
Title[fbro]: Ilosc graczy na Festung-Breslau.pl & Red.Orchestra.pl & Aster.pl
 
Title[fbro]: Ilosc graczy na Festung-Breslau.pl & Red.Orchestra.pl & Aster.pl
 
PageTop[fbro]: <H1>Ilosc graczy na Festung-Breslau.pl & Red.Orchestra.pl & Aster.pl</H1>
 
PageTop[fbro]: <H1>Ilosc graczy na Festung-Breslau.pl & Red.Orchestra.pl & Aster.pl</H1>
  
  
Target[dod13]: `/var/www/html/mrtg/serwer/bin/s2.pl`
+
Target[dod13]: `/var/www/html/mrtg/serwer/bin/s2.sh`
#MaxBytes[dod13]: 32
+
#Options[dod13]: gauge, nopercent, growright
+
ShortLegend[dod13]: users
+
YLegend[dod13]: users connected
+
LegendI[dod13]: Users Connected:
+
LegendO[dod13]:
+
Legend1[dod13]: Users Connected
+
Legend2[dod13]:
+
 
Title[dod13]: Ilosc graczy na Festung-Breslau.pl DOD 1.3
 
Title[dod13]: Ilosc graczy na Festung-Breslau.pl DOD 1.3
 
PageTop[dod13]: <H1>Ilosc graczy na Festung-Breslau.pl DOD 1.3</H1>
 
PageTop[dod13]: <H1>Ilosc graczy na Festung-Breslau.pl DOD 1.3</H1>
  
  
Target[dods]: `/var/www/html/mrtg/serwer/bin/s3.pl`
+
Target[dods]: `/var/www/html/mrtg/serwer/bin/s3.sh`
#MaxBytes[dods]: 32
+
#Options[dods]: gauge, nopercent, growright
+
ShortLegend[dods]: users
+
YLegend[dods]: users connected
+
LegendI[dods]: Users Connected:
+
LegendO[dods]:
+
Legend1[dods]: Users Connected
+
Legend2[dods]:
+
 
Title[dods]: Ilosc graczy na  Festung-Breslau.pl DOD:S  
 
Title[dods]: Ilosc graczy na  Festung-Breslau.pl DOD:S  
 
PageTop[dods]: <H1>Ilosc graczy na Festung-Breslau.pl DOD:S</H1>
 
PageTop[dods]: <H1>Ilosc graczy na Festung-Breslau.pl DOD:S</H1>
  
  
Target[dodsa]: `/var/www/html/mrtg/serwer/bin/s4.pl`
+
Target[dodsa]: `/var/www/html/mrtg/serwer/bin/s4.sh`
#MaxBytes[dodsa]: 32
+
#Options[dodsa]: gauge, nopercent, growright
+
ShortLegend[dodsa]: users
+
YLegend[dodsa]: users connected
+
LegendI[dodsa]: Users Connected:
+
LegendO[dodsa]:
+
Legend1[dodsa]: Users Connected
+
Legend2[dodsa]:
+
 
Title[dodsa]: Ilosc graczy na Festung-Breslau.pl & Aster.pl DOD:S
 
Title[dodsa]: Ilosc graczy na Festung-Breslau.pl & Aster.pl DOD:S
 
PageTop[dodsa]: <H1>Ilosc graczy na Festung-Breslau.pl & Aster.pl DOD:S</H1>
 
PageTop[dodsa]: <H1>Ilosc graczy na Festung-Breslau.pl & Aster.pl DOD:S</H1>
  
  
Target[cs]: `/var/www/html/mrtg/serwer/bin/s5.pl`
+
Target[cs]: `/var/www/html/mrtg/serwer/bin/s5.sh`
#MaxBytes[cs]: 32
+
#Options[cs]: gauge, nopercent, growright
+
ShortLegend[cs]: users
+
YLegend[cs]: users connected
+
LegendI[cs]: Users Connected:
+
LegendO[cs]:
+
Legend1[cs]: Users Connected
+
Legend2[cs]:
+
 
Title[cs]: Ilosc graczy na CS War3 @ Akron.Net.Pl
 
Title[cs]: Ilosc graczy na CS War3 @ Akron.Net.Pl
 
PageTop[cs]: <H1>Ilosc graczy na CS War3 @ Akron.Net.Pl</H1>
 
PageTop[cs]: <H1>Ilosc graczy na CS War3 @ Akron.Net.Pl</H1>
Linia 222: Linia 172:
 
</pre>
 
</pre>
  
Po zapisaniu zmian, crontab zrobi swoje  poprzez wykonanie skryptu shella i sam wygeneruje stronę z obrazakmi dla każdego serwera.
+
Po zapisaniu zmian, [[cron|crontab]] zrobi swoje  poprzez wykonanie skryptu [[Shell|shella]] i sam wygeneruje stronę z obrazkami dla każdego serwera.
 +
 
 
=Przykład=
 
=Przykład=
Dla kilku serwerów [http://Festung-Breslau.pl Festung-Breslau.PL] oraz [http://redorchestra.pl Red Orchestra PL]
+
Dla kilku serwerów [http://www.Festung-Breslau.pl Festung-Breslau.PL] oraz [http://www.red.orchestra.pl Red Orchestra PL]
  
 
http://217.153.187.245:81/linux/games/ro/ro/
 
http://217.153.187.245:81/linux/games/ro/ro/
 +
 +
 +
[[kategoria:statystyki]]

Aktualna wersja na dzień 18:13, 17 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, dzięki temu możemy sprawdzać status dowolnego serwera.

  • Artykuł przeznaczony na serwery Linux.


  • Na Windows tez się da, ale jest to bardziej żmudne:
    • ścieżki będą zupełnie inne, bo windowsowskie :)
    • zainstalować serwer WWW
    • zmodyfikować skrypty aby działało jako pliki .bat a nie bash - w sumie kosmetyczna zmiana
    • zamiast crona użyć harmonogramu Windows albo komendy at.

Wymagania

  • MRTG - powinien być dostępny na większości serwerów Linux
  • QStat - wymagana będzie możliwość kompilacji ze źródeł, ale można sobie załatwić już skompilowane wersje.
  • WWW na której będą obrazki - przeważnie ten sam serwer na którym wszystko się dzieje - czyli MRTG, Perl, QStat.
  • cron - do wykonywania co pewien czas skryptów.

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 - wszystko zależy od dystrybucji, oraz jak chcemy ustawić sobie skrypty.


QStat

Nie będę się tutaj rozpisywał na temat Qstat'a - przeczytajcie po prostu tutaj jak go zainstalować.

Template

Tworzymy plik template w katalogu /var/www/html/mrtg/serwer/bin/ o nazwie mrtg.qstat który będzie przetwarzany przez QStat podczas wywołania. Jest to zwykły plik tekstowy.

Uwaga - wszelkie znaki mają znaczenie, nie powinno być żadnych zbytecznych spacji, i znaków nowej linii (najwięcej więc jest wklepać z palca.

$(IF:DOWN)0
0
$(ENDIF)$(IF:UP)$PLAYERS
$PLAYERS
$(ENDIF)

Skrypt Statusu

Tworzymy katalogu /var/www/html/mrtg/serwer/bin/ plik np s1.sh i wpisujemy w nim poniższy kod:

#!/bin/bash
SERWER="156.17.41.139:27015" # adres i port serwera
TYP_GRY="-a2s" # typ gry, zobacz w qstat jakie sa rodzaje
QSTAT="/var/www/html/mrtg/serwer/bin/qstat" # sciezka do programu qstat
TPL="/var/www/html/mrtg/serwer/bin/mrtg.qstat" # template do wyswietlania statusu, w nim mamy tylko info o graczach
 
# nie zmieniac
$QSTAT -Ts $TPL $TYP_GRY $SERWER


Pamiętajmy aby nadać prawa do wykonywana dla tego pliku ( chmod +x s1.sh ).

Warto przetestować plik s1.sh, poprzez wpisanie poniższej komendy w konsoli w katalogu gdzie jest ten plik :)

kaszpir@bagno bin$ ./s1.sh
16
16
kaszpir@bagno bin$

Bardzo ważne aby dane wyjściowe były 2 liczbai, każda w osobnej linii, tak jak w przykładzie powyżej.

MRTG konfig

Teraz czas zrobić plik konfiguracyjny dla MRTG aby po wczytaniu go wykonywał.

W tym celu tworzymy plik w katalogu /var/www/html/mrtg/serwer/ o nazwie serwer_gry.cfg i wpisujemy do niego poniższe dane:

WorkDir: /var/www/html/mrtg/serwer/

Options[_]: growright, gauge, nopercent, integer, avgpeak, noborder, pngdate
MaxBytes[_]: 32

Target[dod13]: `/var/www/html/mrtg/serwer/bin/s1.sh`
#MaxBytes[dod13]: 32
#Options[dod13]: gauge, nopercent, growright
ShortLegend[dod13]: users
YLegend[dod13]: users connected
LegendI[dod13]: Users Connected:
LegendO[dod13]:
Legend1[dod13]: Users Connected
Legend2[dod13]:
Title[dod13]: Ilosc graczy na Festung-Breslau.pl DOD 1.3
PageTop[dod13]: <H1>Ilosc graczy na Festung-Breslau.pl DOD 1.3</H1>

WorkDir: /var/www/html/mrtg/serwer/

Definuje w jakim katalogu mają się znajdować logi i wyniki pracy MRTG

Target[dod13]: `/var/www/html/mrtg/serwer/bin/s1.pl`

Oznacza jaki skrypt chcemy wykonać do zliczania danych, tutaj jest nasz perlowy skrypt na stats serwera. Linii Options oraz MaxBytes radze nie zmieniać - albo zajrzyjcie do instrukcji MRTG. Resztę można spolszczyć.

Pamiętajcie aby zmienić prawa do pliku serwer_gry.sh na wykonywalne ( chmod +x serwer_gry.sh ).

Bash

Skrypt będzie potrzebny do uruchamiania w cronie. Najlepiej umieścić go w katalogu /var/www/html/mrtg/serwer/ i nazwać serwer_gry.sh

#!/bin/bash
LANG=C
mrtg /var/www/html/mrtg/serwer/serwer_gry.cfg --logging /var/www/html/mrtg/serwer/serwer_gry.log --debug="cfg,dir,base,tarp,snpo,fork,time,log"
 
indexmaker /var/www/html/mrtg/serwer/serwer_gry.cfg --output=/var/www/html/mrtg/serwer/index.html

Skrypt wykonuje dwie rzeczy:

  • wywołanie MRTG aby wczytał plik konfiguracyjny i przetworzenia go (w tym wywołanie skryptu perl, który z kolei odpala qstat'a) do obrazka ze statusu serwera.
  • wykonanie programu indexmaker, który przetwarzając plik konfiguracyjny wygeneruje plik index.html dla serwera WWW

Testowanie

Aby sprawdzić czy działa to poprawnie warto uruchomić go wpisując (będą c w katalogu /var/www/html/mrtg/serwer/)

./serwer_gry.sh

i popatrzeć na pojawiające się komunikaty (szczególnie w /var/www/html/mrtg/serwer/serwer_gry.log). Za pierwszymi 3 wywołaniami MRTG powinien zwrócić informacje że brakuje kilku plików log, ale już za czwartym wywołaniem powinien nie zgłaszać błędów -tak więc jest to normalne. Jeśli za dziesiątym wywołaniem masz błędy to znaczy ze coś zwaliłeś.

Patrz także na plik /var/www/html/mrtg/serwer/index.html oraz czy w katalogu /var/www/html/mrtg/serwer/ są obrazki png. Warto więc nakierować naszą przeglądarkę na ten serwer/index.html i zobaczyć czy są obrazki (konfiguracja katalogów zależy od serwera WWW)

Crontab

No to jak skrypt działa to należy go dodać do crontaba aby się wykonywał raz na pięć minut. W tym celu wpisujemy w konsoli

crontab -e

i dopisujemy poniższą linię:

*/5 * * * * /var/www/html/mrtg/serwer/serwer_gry.sh > /var/www/html/mrtg/serwer/serwer_gry_cron.log 2>&1

Zapisujemy konfigurację i powinno generować obrazki - dla jednego serwera.

Rozszerzenie na kilka serwerów

Cały pic polega na tym, że tworzymy oddzielne pliki .sh dla każdego serwera - np poprzez skopiowanie pliku s1.sh na s2.sh i ustawienie tam innego numeru IP oraz portu i rodzaju serwera (zmiana -a2s na inny, zobacz QStat)

Następnie poszerzamy plik serwer.cfg jaki przetwarza MRTG i indexmaker. Przykład dla kilku serwerów:

WorkDir: /var/www/html/mrtg/serwer/

Options[_]: growright, gauge, nopercent, integer, avgpeak, noborder, pngdate
MaxBytes[_]: 32
ShortLegend[_]: Graczy
YLegend[_]: Graczy
LegendI[_]: Graczy:
LegendO[_]:
Legend1[_]: Graczy
Legend2[_]:

Target[fbro]: `/var/www/html/mrtg/serwer/bin/s1.sh`
Title[fbro]: Ilosc graczy na Festung-Breslau.pl & Red.Orchestra.pl & Aster.pl
PageTop[fbro]: <H1>Ilosc graczy na Festung-Breslau.pl & Red.Orchestra.pl & Aster.pl</H1>


Target[dod13]: `/var/www/html/mrtg/serwer/bin/s2.sh`
Title[dod13]: Ilosc graczy na Festung-Breslau.pl DOD 1.3
PageTop[dod13]: <H1>Ilosc graczy na Festung-Breslau.pl DOD 1.3</H1>


Target[dods]: `/var/www/html/mrtg/serwer/bin/s3.sh`
Title[dods]: Ilosc graczy na  Festung-Breslau.pl DOD:S 
PageTop[dods]: <H1>Ilosc graczy na Festung-Breslau.pl DOD:S</H1>


Target[dodsa]: `/var/www/html/mrtg/serwer/bin/s4.sh`
Title[dodsa]: Ilosc graczy na Festung-Breslau.pl & Aster.pl DOD:S
PageTop[dodsa]: <H1>Ilosc graczy na Festung-Breslau.pl & Aster.pl DOD:S</H1>


Target[cs]: `/var/www/html/mrtg/serwer/bin/s5.sh`
Title[cs]: Ilosc graczy na CS War3 @ Akron.Net.Pl
PageTop[cs]: <H1>Ilosc graczy na CS War3 @ Akron.Net.Pl</H1>

Po zapisaniu zmian, crontab zrobi swoje poprzez wykonanie skryptu shella i sam wygeneruje stronę z obrazkami dla każdego serwera.

Przykład

Dla kilku serwerów Festung-Breslau.PL oraz Red Orchestra PL

http://217.153.187.245:81/linux/games/ro/ro/

Osobiste
Przestrzenie nazw
Warianty
Działania
HLDS.pl - Menu:
Inne
IRC
Inne sekcje:
Znajomi:
Narzędzia