Wykresy ping oraz bandwidth test

Chyba każdy administrator w swojej pracy analizuje działanie sieci. Jednym z często badanych parametrów jest czas odpowiedzi danego hosta w sieci oraz przepustowość danego łącza. W tym artykule przedstawię swój autorski system (chodź system to za dużo powiedziane) do przestawiania tych danych w formie wykresów.


Wymagania

Do działania systemu potrzebujemy tylko serwera WWW z interpreterem języka PHP. Tak naprawdę 99% firm hostingowych spełni te wymagania w tym oferujących darmowe pakiety będzie odpowiednia.


Plik zip z plikami do pobrania tutaj


Uruchomienie systemu – część serwerowa

W pobranym pliku zip znajduje się folder „Serwer”, pliki w nim zawarte umieszczamy na serwerze. Pliki to:

  • index.php – plik który jest odpalany przez przeglądarkę użytkownika i generuje wykresy. Dla tych którzy nie wiedzą ta nazwa jest ogólnie przyjętą nazwą pliku domyślnego w katalogu więc wchodząc na adres serwera nie trzeba będzie podawać jego nazwy w pasku adresu przeglądarki, zostanie on wybrany domyślnie.
  • api.php – plik do którego odwołuje się skrypt uruchamiany na routerze MikroTik. Jeśli chcemy się zabezpieczyć że zapis może być z określonych adresów IP edytujemy plik i w na samej górze zaraz pod <?php wklejamy:
$allow_ip = ['1.1.1.1', '2.2.2.2'];
if(in_array($_SERVER['REMOTE_ADDR'], $allow_ip) !== true)
{
header('HTTP/1.0 403 Forbidden');
exit;
}

Odpowiednie adresy wpisujemy w $allow_ip

  • network.db – baza danych (jej nie ruszamy).
  • phpliteadmin.php – służy do podglądu/edycji bazy danych przez przeglądarkę. Ustawione hasło to „mikrotikon.pl” – aby je edytować wystarczy edytować plik w zmienić linię:
$password = 'TWOJE TAJNE HASŁO';

Uruchomienie systemu – część na routerze MikroTik

Drugim folderem w pobranym pliku zip jest MikroTik gdzie znajdują się przykłady skryptów do odpalenia na MikroTik’u. Pliki to:

pinger.txt – skrypt wykonujący test ping. Wymaga uprawnień: read, test. W części konfiguracyjnej do uzupełnienia:

  • host – adres IP hosta które chcemy pingować
  • packetsCount – ilość pakietów jaka chcemy użyć w teście (max 1000)
  • packetsSize – rozmiar pakietu w bajtach
  • hostname – nazwa hosta który chcemy pingować (używana w nazwie wykresu)
  • url – adres gdzie jest umieszczony plik api.php (koniecznie poprzedzony http:// lub https://)

Przykład:

# Konfiguracja
:local host "1.1.1.1";
:local packetsCount 500;
:local packetsSize 1500;
:local hostname "Cloudflare Public DNS";
:local url "http://example.com";

 

bandwidth_test.txt – skrypt wykonujący test prędkości do wskazanego hosta. Wymaga uprawnień: read, test. Parametry części konfiguracyjnej uzupełniamy tak jak w poprzednim przykładzie (ograniczając się do host, hostname i url).

W tym skrypcie możemy też edytować dodać parametry do linii zaczynającej się od „/tool bandwidth-test” m. in:

  • remote-tx-speed=500M local-tx-speed=500M – to wartości maksymalnych prędkości jakie chcemy uzyskać w teście. Przydatne gdy nie chcemy zawalić całego CPU testem. Możemy je tez usunąć co spowoduje że test poleci bez ograniczeń.
  • protocol=udp – możemy też alternatywnie wybrać protokół tcp to transmisji podczas testu (większe użycie CPU).
  • user=”nazwa_uzytkownika” password=”haslo” – musimy dodać te wartości jeśli serwer wymaga uwierzytelnienia do testu (można je dodać zaraz przed „do=”).

Przykładowe wykresy