Ponúkané riešenie sa nám naskýta v spolupráci s príkazom ping. S použitím jednoduchých parsovacích skriptov si v nasledujúcich dvoch príkladoch vytvoríme dva prehľady. Prvý sa bude venovať priemernej dobe odozvy, druhý minimálnej a maximálnej hodnote jednotlivých časov odozvy.
1. Priemerná doba odozvy.
Základom bude použitie príkazu ping pre tri ICMP_ECHO packety, takže výsledok môže vyzerať nasledovne. Je možné stanoviť si veľkosť paketov a ostatné parametre ako počet paketov, TTL a iné, pre jednoduchosť pri príklade však vystačíme s paketom o veľkosti 64 bytov.
#ping 111.111.111.111 -c 3 PING domena.sk (111.111.111.111) from 111.111.111.112 : 56(84) bytes of data. 64 bytes from domena.sk (111.111.111.111): icmp_seq=0 ttl=255 time=1.465 sec 64 bytes from domena.sk (111.111.111.111): icmp_seq=1 ttl=255 time=1.989 sec 64 bytes from domena.sk (111.111.111.111): icmp_seq=1 ttl=255 time=1.736 sec --- domena.sk ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max/mdev = 1465.547/1727.713/1989.879/262.166 ms
Súhrnnú informáciu priemernej doby odozvy nájdeme na poslednom riadku ako druhú hodnotu. Z toho budeme vychádzať a urobíme si jednoduchý skript, ktorý vyparsuje žiadanú hodnotu a poskytne ju MRTG. Skript môže vyzerať nasledovne. Pomenujeme si ho _ping.
#!/bin/bash ping 111.111.111.111 -c3 | grep round-trip|awk'{$t=split($4,i,"/");print i[2]}'
Na STDOUT teda po spustení dostaneme priemernú dobu ozozvy.
Pre MRTG si pripravíme konfiguračný súbor:
WorkDir: /home/httpd/mrtg.domena.sk-443/html/ping/ Options[_]: growright, gauge Colours[_]:LIGHT_BLU#7aafff,BLU#1000ff,DARK BLU#000066,VIOLET#ff00ff, GREEN#00ff00 Ylegend[_]: ms response Target[ping]: `/mrtg/bin/_ping` SetEnv[ping]: MRTG_INT_IP="111.111.111.111" MRTG_INT_DESCR="Ethernet0" MaxBytes[ping]:5000 Title[ping]: Doba odozvy PageTop[ping]: <H1>Doba odozvy</H1> <TABLE> <TR><TD>System:</TD> <TD>Test odozva </TD></TR> </TABLE>
Výsledok môže vyzerať nasledovne:
2. Minimálne a maximálne hodnoty odozvy.
Podľa predchádzajúceho príkladu si z výsledku pingu vyparsujeme hodnoty maximálne a minimálne. To dosiahneme skriptom _pingrange, ktorý môže vyzerať nasledovne:
#!/bin/bash ping 62.168.111.197 -c3 | grep round-trip|awk '{$t=split($4,i,"/");print i[1] "\ n" i[3]}'
Pre mrtg si pripravíme príslušný konfiguračný súbor. Ako v predchádzajúcom prípade, je nutné pužiť voľbu gauge, ktorá udáva, že hodnota je aktuálny stav a nie kumulovaná hodnota v časovom rade.
WorkDir: /home/httpd/mrtg.domena.sk-443/html/pingrange/ Options[_]: growright, gauge Colours[_]:LIGHT_BLU#7aafff,BLU#1000ff,DARK BLU#000066,VIOLET#ff00ff, GREEN#00ff00 Ylegend[_]: ms response Target[ping]: `/mrtg/bin/_pingrange` SetEnv[ping]: MRTG_INT_IP="111.111.111.111" MRTG_INT_DESCR="Ethernet0" MaxBytes[ping]:5000 Title[ping]: Doba odozvy PageTop[ping]: <H1>Doba odozvy</H1> <TABLE> <TR><TD>System:</TD> <TD>Test odozva - rozsahy</TD></TR> </TABLE>
A dosiahneme nasledovný výsledok:
Treba si však uvedomiť, že je viac ako etické používať takýto spôsob monitoringu iba vo svojej lokálnej sieti. Pri monitoringu prepoja do internetu, napríklad pingovaním routera svojho ISP je vhodné vopred sa dohodnúť. Iste by sa ani vám nepáčilo, ak by sa zrazu 100 ľudí rozhodlo v päťminútových intervaloch pingovať vaše servery. Nabudúce si ukážeme ďalšie praktické príklady použitia MRTG.