Hlavní navigace

MRTG - grafické prehľady (7)

Milan Gigel

Dnes si ukážeme, ako možno MRTG využiť pre jednoduché monitorovanie dostupnosti a časovej odozvy pri komunikácii s rôznymi hostami v lokálnej sieti. Pri menej spoľahlivých prepojoch, ako napríklad mikrovlnných alebo pri hľadaní chýb nás môže zaujímať dĺžka odozvy v jednotlivých častiach dňa. Takýchto monitorovacích softwarov exituje neúrekom, prečo si však takúto implementáciu nevytvoriť priamo v MRTG, keď majú pre nás iba informatívny charakter a ich cieľom nie je oznamovanie výkyvov.

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:

Graf

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:

Graf

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.

Našli jste v článku chybu?