Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne][PHP] Sprawdzanie statusu usług
Forum PHP.pl > Forum > Przedszkole
pitu
Witam

Mam pytanie jak zabrać się do tematu sprawdzania statusu usług takich jak HTTP, MySQL, SSH i inne niestandardowe porty. W założeniu sprawdzanych będzie kilkaset IP. Wszystko byłoby proste, gdyby nie to że ma to odbywać się z różnych lokalizacji. Jak byście to wykonali, myślałem o centralnym serwerze, na którym będzie cała aplikacja (serwer nie będzie służył do sprawdzania statusów) oraz na serwerach, które będą służyły do sprawdzania umieszczać skrypt który będzie wykonywał i zwracał wynik np. serwer.pl/check/google.pl/http,mysql,ssh,ftp,1000

Czy opisany sposób będzie optymalny? Czy może lepiej zabrać się do tematu trochę inaczej?

Pozdrawiam
jaslanin
ja bym to zrobił tak, że każda lokalizacja ma kolejkę IP/adresów do sprawdzania, i wystawione jakieś API do odbioru sprawdzonych danych
dodatkowo każda lokalizacja zależnie od wydajności itp. ma ileś tam workerów które są uruchamiane przez cron, pobierają one zadania z kolejki i je sprawdzają i zapisują wyniki do logu który jest wystawiany przez API. większa ilość workerów jest potrzebna do tego by symulować po stronie PHP współbieżność, czyli wykonywanie iluśtam operacji naraz.

nie podałeś szczegółów projektu, np. dość istotnej sprawy, jaka jest zasada sprawdzania czy jest to sprawdzanie co minute, godzinę. Czy jest to sprawdzanie on demand gdy trzeba. W zależności od tego należy zbudować kolejkę do której można by przekazać wzorzec wymagań kiedy wywoływać sprawdzanie np. co godzinę, w piątek o 15 itd. coś jak crontab, scheduler. Zamiast cały czas przekazywać takie info że za minutę odpal to to i tamto.

Istotną sprawą jest też jak wyglądają te zewnętrzne lokalizacje, bo jeżeli są to hostingi za 10PLN, to obawiałbym się czy szybko takie skrypty nie zostaną wyrzucone i też brał na to poprawkę np. by nie sprawdzać wszystkich lokalizacji naraz tylko np. z losowych 3 z 30 czy coś takiego

serwer w takiej architekturze z jednej strony by wysyłał żądania kolejek, z drugiej odbierał zwrotki i generował w jakieś raporty

rozwiązanie które sugerujesz wywoływanie jakiegoś URL jest wg mnie błędne, bo pewnie będzie tak że w niewielkim odstępie czasu będzie naraz wykonywanych x połączeń, i w krótkim czasie będzie ileśtam zwrotek, przez to będzie duży ruch sieciowy, i większe raczej niepotrzebne zużycie zasobów. W moim rozwiązaniu to lokalizacja wykonuje pracę i zwraca wyniki po zrealizowaniu kolejki jednym połączeniem.

oczywiście takie zachowanie nie jest kategorycznie złe, wszystko zależy od przewidywanego obciążenia i ruchu generowanego

PS. na stronie z podpisu strasznie denerwuje ten div position:fixed z rejestracją logowaniem, zwłaszcza jak ktoś ma mały monitor w laptopie
pitu
Dzięki za odpowiedź, twój sposób wydaje mi się lepszy. Co do projektu to w założeniu sprawdzane mają być wszystkie usługi dla kilku set IP co ok. 5 minut. Mam pytanie co do przekazywania IP do tych lokalizacji, jak to wykonać. Czy w aplikacji zrobić API przez które lokalizacje będą pobierały bazę adresów i usług do sprawdzenia? Jeżeli nie jest to zły pomysł to jak poradzić sobie z ciągłym pobieraniem tych danych co 5 minut? Przy 10 lokalizacjach aplikacja musiała by 10 razy odebrać i 10 razy wysłać te dane. Może dodać do tego jakiś pomocniczy serwer, który zajmowałby się tylko wymianą tych danych?

PS. Co do strony i diva, nie jest to już moja strona. Została tylko sygnatura.
jaslanin
Cytat
Mam pytanie co do przekazywania IP do tych lokalizacji, jak to wykonać. Czy w aplikacji zrobić API przez które lokalizacje będą pobierały bazę adresów i usług do sprawdzenia? Jeżeli nie jest to zły pomysł to jak poradzić sobie z ciągłym pobieraniem tych danych co 5 minut?


lepiej żeby serwer centralny przekazywał je do lokalizacji roboczych, nie ma sensu by aplikacje robocze się o to odpytywały bo pewnie przez większość czasu dostawały by odp że nic nie ma do dodania do kolejki spr co 5 minut

Cytat
Przy 10 lokalizacjach aplikacja musiała by 10 razy odebrać i 10 razy wysłać te dane. Może dodać do tego jakiś pomocniczy serwer, który zajmowałby się tylko wymianą tych danych?


myślę że serwer centralny wystarczy by to obsługiwać, jeżeli będzie na przyzwoitym serwerze
mar1aczi
Koniecznie chcesz wyważać już otwarte drzwi? Zerknij na google za hasłem "munin", "nagios".
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.