Przy piątku udało mi się wdrożyć nową opcję do monitoringu tj pingowanie każdego z serwerów.
Sam kod nie jest jakoś mocno rozbudowany:
Jeśli jesteś już zapisany - Kliknij "Zaloguj się" i podaj swojego maila - treść zostanie odblokowana:
Następnie pętla for wykonuje dla każdego adresu ip badanie ping , sprawdza % utraconych pakietów i jeśli jest równy/wyższy niż 80 ( 4/5 utraconych pakietów) wtedy wykonuje akcję.
W moim przypadku akcja to nic innego jak wysłanie sms/maila oraz stosownej aktualizacji do monitoringu.
Poza oczywistą zaletą jaką jest powiadomienie w momencie jak serwer nie działa ( odpukać w niemalowane by ich było jak najmniej ) udało mi się zlokalizować kilka pobocznych problemów jak chociażby ” nf_conntrack: table full, dropping packet”
Wady? Jest ich kilka:
- W przypadku wyłączenia odpowiedzi icmp trzeba uwzględnić to przy robieniu listy ip do pingowania
- weryfikacja jest co minutę , więc może się zdarzyć że nie wykryje kilku-kilkunasto sekundowego “offline”
- nie nadaje się do serwerów gier/głosowych, gdyż wynik nie jest zbyt szczegółowy (20,40,60,80,100 % strat) – do takich usług lepiej zwiększyć ilość pakietów do >10
- Wskazany kod uruchomiony z 1 serwera może podawać błędne dane – np w przypadku problemów na poziomie połączenia sieciowego z danej lokalizacji
- Wynikiem badania jest % utraconych pakietów, bez szczegółów w którym miejscu jest problem
Wszystkie z powyższych wad można wyelminować rozbudowywując kod – u mnie został tylko 3 i 5 podpunkt który nie będzie na obecną chwilę wdrażany z braku potrzeby tak dokładnego monitorowania usługi. ale zachęcam każdego do samodzielnego napisania takiego narzędzia.
P.s. piąty podpunkt miałem napisany 3 lata temu jako kompletną aplikację gdzie badałem utratę pakietów z kilku lokalizacji za pomocą mtr, zapisywałem całość do bazy danych i robiłem z tego wykresy oraz powiadomienia.
W wolej chwili poszukam jej i postaram się opublikować osobny wpis z kodem po stronie serwera (bash) i aplikacji odbierającej i przetwarzającej ( php/mysql)