Uptime

W ramach side questa potrzebowałem monitoringu dostępności stron WWW, z API i dość dużą liczbą monitorowanych serwisów. Powiedzmy od 100 w górę. I najchętniej za darmo, bo potrzebuję tylko do PoCa. I fajnie, jakby umiał monitorować nieco częściej, niż raz na 5 minut.

Zdziwiłem się, bo okazało się, że… nie ma. A przynajmniej nie znalazłem. Oczywiście jest Uptime Robot, którego – jak się okazało – używam od ponad dekady. Z własnym narzędziem do wyświetlania dashboardu. No ale tam mam sporo slotów zużytych z 50, które może od biedy by wystarczyły.

Jestem zdziwiony, bo tego typu monitoring jest w miarę tani. Bo czymże jest request HTTP czy wysłanie pakietu ICMP raz na minutę i zapamiętanie stanu. A dla wysyłki poczty (SMTP relay) serwisów pozwalających nawet niewielkie newslettery jest całkiem spory wybór. I wygląda na nieco bardziej inwazyjne, potencjalnie (spam). No ale nie ma i co zrobisz, trzeba selfhostować. Za to będzie pełna dowolność w interwałach sprawdzania dostępności.

Szybko odpędziłem myśl o napisaniu własnego rozwiązania, bo tak, plik YAML z definicjami serwisów, prosty skrypt w Pythonie z wykorzystaniem biblioteki requsets, napędzany cronem spokojnie by wystarczył do tego, co chcę osiągnąć. Postanowiłem rozejrzeć się za gotowcami.

No i znalazłem coś, co mnie nawet zachwyciło. Nazywa się Uptime Kuma, daje API, daje ładny frontend, sensowną dokumentację w zakresie uruchomienia, obsługuje wiele kanałów powiadomień. Od początku ujęło mnie tym, że potrafi korzystać zarówno z bazy sqlite, jak i MySQL, więc przy małych zastosowaniach można sobie trzymać bazę w pliku, bez kolejnego serwera.

Oczywiście są wady. Po pierwsze nie przepadam za technologią, w której jest stworzone rozwiązanie. Po drugie, dedykowana biblioteka Pythona do obsługi API nie działa poprawnie. W sumie przez to straciłem więcej czasu, niż na uruchomienie monitorigu + reverse proxy w oparciu o nginx. Skończyło się tym, że nie korzystam z dedykowanej biblioteki, tylko robię requesty na żywca.

Gdyby ktoś chciał sobie porobić wykresy albo monitorować usługi – polecam sprawdzenie Uptime Kuma. 90k gwiazdek na GitHub nie jest przypadkiem.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *