Skrypt pokazujący status dowolnych usług na dowolnej ilości serwerów
Wpis zamieszczony o 17:39:01, 19 marca 2007
Trackback
Czytając techbloga natknąłem się na taki oto wpis. Rozwiązanie ciekawe, ale niezbyt efektywne. Postanowiłem podzielić się swoim sposobem - wydaje mi się on ciekawszy i co najważniejsze - lepszy. Możemy sprawdzać dowolną ilość usług na dowolnych serwerach.
LINK DO SKRYPTU
A tutaj można podejrzeć jak on się sprawuje.
Co do tego czy potrafi on robić to na wielu serwerach to bym się z tobą kłócił (przy piwie oczywiście ;-)). A co jeśli jakiś serwer ma poblokowany port na FW? Gdzieś widziałem taki skrypcik zbierający staty z działania maszyn wielu i przysyłający je do jednego centralnego, który je zbierał. Klient <-> serwer.
Ciekawe - o tym nie pomyślałem :-) W zasadzie jednak przyjmuje się, że jeśli usługa działa na serwerze to udostępniona jest na zewnątrz. Po co użytkownik ma sprawdzać, czy na serwerze działa named czy bind, skoro on sam z tego nie skorzysta :).
Skrypt o którym piszesz jest bardzo łatwo napisać. Tylko czy warto zaprzęgać kolejną maszynę do sprawdzania i zdawania raportów? Wolę to robić lokalnie. Gwidon ma ciekawy, bardzo podobny skrypt na swojej stronie. Z chęcia looknąłbym, w kod. :>
PHP ma power.
Na moje oko to żeś nic nowego nie wymyślił. Takie rozwiązanie jest bardzo nieoptymalne, user jest zmuszony czekać, aż skrypt sprawdzi wszystkie usługi. Mógłbyś chociaż zrobić to sprawdzanie jakoś asynchronicznie (żeby wszystkie równolegle jechał). Nie mówiąc już, że warto byłoby dodać do czegoś takiego cache, żeby nie mogło służyć zaspamowaniu poszczególnych daemonów, albo ogólnie sprawdzać regularnie przez crona i jedynie skryptem sczytywać wyniki.
PS. Dopiero teraz zwróciłem uwagę, że skrypt jest pod localhost zrobiony, więc aż takiego opóźnienia nie będzie. Ale tak czy siak, mamy do czynienia z niepotrzebnym nawiązywaniem połaczeń; możnaby nawet posunąć się do używania bodajże pakietów SYN zamiast pełnego otwierania portu (jak nmap).
Od wczoraj piszę w PHP. :-) Na razie znam sposób na sockety. Rzeczywiście - opóźnienie przy zewnętrznych serwerach jest dość znaczne. Nie umniejsza to jednak funkcjonalności skryptu dla localhosta. Co do sprawdzania poprzez cron statusu usług, zrzucania tego to txt i includowania na stronkę też myślałem. Chciałem jednak w końcu coś zrobić w php. :)
Dzięki za komenta - wiem teraz w którą stronę "mam zmierzać"!
Uch, to kilka rad na początek:
1) może odpuść sobie publikowanie na techblogu tak mało mówiących wpisów, tym bardziej, że temat jest wtórny — w tej sytuacji znacznie lepiej po prostu zatrackbackować do wpisu radmena;
2) do jakichkolwiek bardziej złożonych operacji odpuść sobie PHP. Tego typu rzeczy lepiej wykonywać np. w Perlu. A na początek chociaż naucz się trochę oddzielać warstwę kodu od warstwy prezentacji;
3) jeśli chcesz przekazać komuś źródła PHP, najlepiej daj im rozszerzenie .phps. Większość serwerów (tj. tych z PHP) zwraca wtedy ładnie pokolorowany kod źródłowy.
1) masz rację :) W temacie "linux" czuję się dość dobrze, php to na razie czarna magia. Odpuszczam sobie na razie. (zmienione) :-)
2) dziękuję za wskazówkę - postaram się nią podążać!
3) nie wiedziałem, również dziękuję! (zmienione)
Jak widać umieszczenie na "0" dało pozytywny efekt - czegoś się nauczyłem :)
night, ja wspomniałem w mojej notce, trik z CSS jest mało skuteczny, wspomniałem o tym w notce ;-]
nagios widziales?
btw. juz pamienta mojego nicka..... madre zwierze :P
Widziałem na screenach i troszkę czytałem. Nie o taką funkcjonalność mi chodzi :]
W przypadku MySQL skrypt pokazuje błędną informacje gdy w my.conf mamy skip-networing.