Na mojom internetovom pripojení som si všimol, že občas nefungujú niektoré internetové služby. Jedna sa výlučne o služby na protokole http/s. Asi najdôležitejšia webová služba, ktorú používa snáď každý je vyhľadavač google, prip. streamovacia služba youtube.
Okrem google a youtube, mi prestal fungovať aj gmail a mnoho ďalších webov. Zaujímavé je ale to, že niektoré weby fungovali úplne normálne. S určitosťou neviem povedať, ktoré weby fungovali a ktoré nie, pretože pri zistení nefunkčnosti niektorých webov som začal náhodne testovať aj ďalšie weby zo záložiek. Vyššie popísaný problém som zaznamenal asi 2x vo večerných hodinách. Výpadok služieb odhadujem radovo na jednotky minút. Ako som už spomínal, množstvo webov fungovalo úplne normálne, takže výpadok linky môžem vylúčiť.
Asi najznámejším nástrojom na kontrolu dostupnosti nejakého zariadenia v sieti je ping, ktorý posiela ICMP správu echo request a očakáva od druhej strany odpoveď. V MS Windows je možné taktiež použiť príkaz ping. Najjednoduchšia implementácia príkazu ping je
ping <ip_address>
ping <url>
Ping v prostredí MS Windows má tiež množstvo prepínačov, ktorými môžme výsledný výstup upravovať. Samozrejme aj v linuxe je množstvo prepínačov. Viac o utilite ping nájdeme v manuálových stránkach man ping, alebo ping –help.
Ak chceme dlhodobo monitorovať dostupnosť nejakého webu, tak najprv je potrebné upovedomiť správcu webu, čí nám to dovolí. Je možné, že ak neupovedomíme správcu a začneme druhú stranu zasypávať ICMP správami, tak je možné, že naša IP adresa bude o nedlho na ich blackliste a to určite nechceme.
Na monitorovanie je ideálne použiť nejaký linuxový server, resp. nejaké zariadenie (router, napr. OpenWRT) v našej LAN sieti, ktoré je trvalo pripojené k internetu. Ja som na monitoring použil linuxový kontajner LXC, kde som spustil príkaz ping na pozadí (nie je nutné spúšťať príkaz na pozadí, ale je dobre to tak urobiť aby sme mali voľný prompt na prípadne zadávanie ďalších príkazov).
ping -D -i 10 google.com | while read row; do awk '{ sub(/[0-9]{10}/, strftime("%Y-%m-%d %H:%M:%S", substr($0,2,10))) }1' <<< "$row" ; done > ~/ping &
Záznam sa bude logovať do súboru ping v domovskom adresári. Výstup v súbore bude vyzerať takto
[2020-11-17 14:06:53.083509] 64 bytes from prg03s05-in-f14.1e100.net (172.217.23.206): icmp_seq=1 ttl=118 time=17.6 ms
[2020-11-17 14:07:03.090440] 64 bytes from prg03s05-in-f14.1e100.net (172.217.23.206): icmp_seq=2 ttl=118 time=17.6 ms
[2020-11-17 14:07:13.098582] 64 bytes from prg03s05-in-f14.1e100.net (172.217.23.206): icmp_seq=3 ttl=118 time=17.8 ms
[2020-11-17 14:07:23.109280] 64 bytes from prg03s05-in-f14.1e100.net (172.217.23.206): icmp_seq=4 ttl=118 time=17.5 ms
[2020-11-17 14:07:33.120046] 64 bytes from prg03s05-in-f14.1e100.net (172.217.23.206): icmp_seq=5 ttl=118 time=17.6 ms
Nastroj ping zašle ICMP správu echo request na url adresu google.com, každých 10 sekúnd. Na začiatku riadku je dátum a čas odoslania správy a na konci je odpoveď v milisekundách. Icmp_seq=x je počet odoslaných správ. Ako som uviedol vyššie, tento príkaz som spustil na pozadí a bude bežať do nekonečna, alebo pokiaľ ho neukončíme. Príkazy ktoré bežia na pozadí si môžeme zobraziť príkazom jobs
jany@jany-lxc:~$ jobs
[1]+ Beží ping -D -i 10 google.com | while read row; do
awk '{ sub(/[0-9]{10}/, strftime("%Y-%m-%d %H:%M:%S", substr($0,2,10))) }1' <<< "$row";
done > ~/ping &
Z nášho výpisu je vidieť, že nám beží jedna úloha „[1]+“. Ak chceme úlohu presunuť do popredia, tak použijeme prikaz fg %1
fg %1
ping -D -i 10 google.com | while read row; do
awk '{ sub(/[0-9]{10}/, strftime("%Y-%m-%d %H:%M:%S", substr($0,2,10))) }1' <<< "$row";
done > ~/ping
Úlohu môžeme následne zhodiť klasickým Ctrl +C. Vtedy sa ping prestane vykonávať a my môžeme skontrolovať súbor ~/ping a zistiť či nastal nejaký výpadok, alebo či bola služba google stále dostupná. Čo sa týka veľkosti súboru do ktorého zaznamenávame ping, tak 24 hodín záznamu bude mať veľkosť ± 1 MB.
Záver
Takýmto jednoduchým spôsobom môžeme monitorovať dostupnosť akéhokoľvek zariadenie v LAN sieti. Samozrejme v sieti internet je možné monitorovať len verejné IP adresy, alebo url rôznych webov. Ak je napr. nejaký web dostupný cez url, ale na ping echo request neodpovedá, tak správca zariadenia ICMP správy blokuje. Takýmto spôsobom, ktorý sme si uviedli, monitorujeme vzdialené služby. Môže však nastať prípad, keď vypadne naše internetové pripojenie. Potom budeme v domnení, že mal výpadok náš monitorovaný web/služba. V takomto prípade by sme mali monitorovať aj naše vlastné pripojenie do siete internet. Možnosti ako to spraviť je veľa. Najjednoduchšie je využiť nejaký free monitoring, napr. UpTimeRobot, alebo HetrixTools. Tieto nástroje robia presne to isté, ale obrátene (oni monitorujúcu našu IP adresu).