MRTG
(→Crontab) |
(standardowo poprawiam literówki) |
||
(Nie pokazano 3 wersji utworzonych przez jednego użytkownika) | |||
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, | + | 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]]. | *Artykuł przeznaczony na serwery [[Linux]]. | ||
− | *Na [[Windows]] tez się da, ale | + | *Na [[Windows]] tez się da, ale jest to bardziej żmudne: |
− | ** | + | ** ścieżki będą zupełnie inne, bo windowsowskie :) |
**zainstalować serwer [[WWW]] | **zainstalować serwer [[WWW]] | ||
− | ** | + | ** zmodyfikować skrypty aby działało jako pliki '''.bat''' a nie bash - w sumie kosmetyczna zmiana |
− | ** zamiast [[cron]]a | + | ** zamiast [[cron]]a użyć harmonogramu [[Windows]] albo komendy '''at'''. |
− | + | ||
=Wymagania= | =Wymagania= | ||
− | * [http://oss.oetiker.ch/mrtg/ MRTG] - | + | * [http://oss.oetiker.ch/mrtg/ MRTG] - powinien być dostępny na większości serwerów [[Linux]] |
− | * [[QStat]] - | + | * [[QStat]] - wymagana będzie możliwość kompilacji ze źródeł, ale można sobie załatwić już skompilowane wersje. |
− | * [[WWW]] na | + | * [[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. | * [[cron]] - do wykonywania co pewien czas skryptów. | ||
Linia 25: | 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 - | + | 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ę | + | Nie będę się tutaj rozpisywał na temat [[QStat|Qstat'a]] - przeczytajcie po prostu [[QStat|tutaj]] jak go zainstalować. |
==Template== | ==Template== | ||
− | Tworzymy plik template w katalogu '''/var/www/html/mrtg/serwer/bin/''' o | + | 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. | '''Uwaga''' - wszelkie znaki mają znaczenie, nie powinno być żadnych zbytecznych spacji, i znaków nowej linii (najwięcej więc jest wklepać z palca. | ||
Linia 57: | Linia 56: | ||
− | '''Pamiętajmy''' aby | + | '''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 :) | Warto przetestować plik s1.sh, poprzez wpisanie poniższej komendy w konsoli w katalogu gdzie jest ten plik :) | ||
Linia 66: | Linia 65: | ||
kaszpir@bagno bin$ | kaszpir@bagno bin$ | ||
</pre> | </pre> | ||
− | ''Bardzo ważne'' aby dane | + | ''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== | ==MRTG konfig== | ||
Linia 93: | Linia 92: | ||
WorkDir: /var/www/html/mrtg/serwer/ | WorkDir: /var/www/html/mrtg/serwer/ | ||
− | Definuje w jakim katalogu | + | 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 | + | 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 | + | 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 | + | '''Pamiętajcie''' aby zmienić prawa do pliku serwer_gry.sh na wykonywalne ( ''chmod +x serwer_gry.sh'' ). |
==Bash== | ==Bash== | ||
Linia 110: | Linia 109: | ||
</bash> | </bash> | ||
Skrypt wykonuje dwie rzeczy: | Skrypt wykonuje dwie rzeczy: | ||
− | *wywołanie | + | *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 | + | 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 | + | 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/ | + | 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 | + | 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== | ==Crontab== | ||
− | No to jak skrypt działa to należy go dodać do [[cron]] | + | 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 131: | Linia 130: | ||
=Rozszerzenie na kilka serwerów= | =Rozszerzenie na kilka serwerów= | ||
− | Cały pic polega na tym, że tworzymy oddzielne pliki | + | 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: | Przykład dla kilku serwerów: | ||
<pre> | <pre> | ||
Linia 147: | Linia 146: | ||
Legend2[_]: | Legend2[_]: | ||
− | Target[fbro]: `/var/www/html/mrtg/serwer/bin/s1. | + | Target[fbro]: `/var/www/html/mrtg/serwer/bin/s1.sh` |
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. | + | Target[dod13]: `/var/www/html/mrtg/serwer/bin/s2.sh` |
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. | + | Target[dods]: `/var/www/html/mrtg/serwer/bin/s3.sh` |
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. | + | Target[dodsa]: `/var/www/html/mrtg/serwer/bin/s4.sh` |
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. | + | Target[cs]: `/var/www/html/mrtg/serwer/bin/s5.sh` |
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 173: | Linia 172: | ||
</pre> | </pre> | ||
− | Po zapisaniu zmian, crontab zrobi swoje poprzez wykonanie skryptu shella i sam wygeneruje stronę z | + | 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= | ||
Linia 179: | Linia 178: | ||
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:
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