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:


Aby bezpłatnie odblokować dalszą treść kliknij "Zapisz się" - dostaniesz nielimitowany dostęp do wszystkich treści i wyślę Ci na maila kilka wyjątkowych bonusów !
Jeśli jesteś już zapisany - Kliknij "Zaloguj się" i podaj swojego maila - treść zostanie odblokowana:
Zaloguj się lub Zapisz się
Sprawdź Przejdź do zapisu
Anuluj
Dalsza część artykułu jest dostępna tylko dla zapisanych do newslettera. Aby zapisać się do newslettera Kliknij tutaj , lub wypełnij pola w bocznym panelu.
Jeśli jesteś już zapisany - podaj poniżej swój adres e-mail: Odblokuj
adotpay
Anuluj
Najpierw pobieram listę ip oraz hostname z bazy danych z monitoringu zapytaniem sql i zapisuję ją do pliku /tmp/listaip ( tej części kodu niestety nie mogłem umieścić).
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)