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.

Strzeż się Tahoe

Apple jest nachalne do niemożliwości. Nie gonię za najnowszymi wersjami macOS, raczej jestem oczko z tyłu. Tak naprawdę jeśli chodzi o funkcjonalności, to rzadko widzę różnicę, a mój support techniczny zwykle ostrzega przed problemami i raczej zaleca poczekać z aktualizacją. W takiej sytuacji nie ma się co spieszyć. W końcu nawet Sonoma jest jeszcze normalnie wspierana.

Tymczasem korzystam z wersji Sequoia. O aktualizacji nie pisałem, bo nudna i niczego nie wniosła wg mnie. Z godnych pamięci szczegółów – długie pobieranie (jakieś 2h na 100 Mbps), za to krótki downtime – obrócił poniżej 30 minut ze wszystkim.

Chciałbym nadal korzystać z Sequoia, ale Apple uparło się, że wciśnie mi Tahoe. Nie drzwiami, to oknem. Po pierwsze, popup, że jest nowa wersja. Co mogę wybrać? Albo aktualizację do Tahoe w nocy, albo że przypomni później[1]. Opcji sam zadecyduję, kiedy zechcę zaktualizować, nie przypominaj więcej nie ma. Liczą na missclick?

Daleko idący wniosek z tym missclickiem? No nie wiem, bo jak wejdę w Software Update to mam u góry aktualizację do Tahoe, a poniżej inne aktualizacje (Also available), które wyglądają tak:

Zrzut ekranu pokazujący Also Available, a tam dwukrotnie "Command Line Tools for Xcode and 1 more..."

Bezpiecznie? No nie wiem, bo kliknięcie znaczka z informacją pokazuje:

Zrzut ekranu, widoczne macOS Tahoe, Command Line Tools for Xcode oraz Safari.

Znaczy znowu wciskają Tahoe. Zapewne można odznaczyć, ale jeśli jesteście przywiązani do Sequoi i chcecie uniknąć aktualizacji do Tahoe, bądźcie czujni.

Oczywiście nie jest to nic nowego, Microsoft robił podobnie wymuszając przejście z Windows 7 na 10.

Dla jasności, co do zasady uważam, że przypominanie o aktualizacjach jest dobre, aktualizacje automatyczne też. Ale niekoniecznie podoba mi się takie nachalne wciskanie nowej wersji systemu. Szczególnie, gdy stary jest wspieramy. To jednak grubsza i potencjalnie inwazyjna zmiana.

[1] Nie jest określane, kiedy nastąpi później. W zasadzie mogłoby wyskakiwać co godzinę.

MacOS problemy z zaśnięciem

Dawno niczego o macOS nie pisałem, bo nie było o czym. System generalnie działa, jest trochę słabo konfigurowalny, ale działa. Trochę potrafi się znarowić i przymulać, głównie za sprawą wygaszacza ekranu zżerającego cykle procesora, ale odkąd zmieniłem wygaszacz na inny, to jakby przestało występować.

Jednak jedna rzecz nie daje mi spokoju. I wbrew temu co może sugerować tytuł, nie chodzi o kofeinę[1]. Mam stację dokującą, do której podłączone są trzy rzeczy: zasilacz, by dostarczać prąd, dodatkowy monitor oraz mysz. Mysz zwykła, pecetowa, taka jak lubię. Sama stacja dokująca jest podłączona do komputera przez USB C.

Problem polega na tym, że gdy uśpię system przy pomocy sleep (bez zamykania ekranu), to jakiekolwiek naciśnięcie klawisza na klawiaturze czy ruch myszą wybudzają go. Klawiatura to nie problem, ale mysz – trochę tak. Wystarczy szturchnięcie biurka i już obudzony.

Dopóki korzystałem z myszy bezprzewodowej, wyłączałem ją przełącznikiem. Niezbyt wygodne, ale przywykłem. Tak samo mógłbym traktować bezprzewodową klawiaturę, ale nie miałem potrzeby. Niestety mysz zaczęła ostatnio nieco szwankować, więc wymieniłem ją. Stwierdziłem, że przewodowa będzie lepsza, bo i tak używam stacjonarnie. No i jest lepsza. Poza jedną rzeczą, czyli nieszczęsnym wybudzaniem.

Poradziłem się znajomych i rady były… nieco dziwne. Odłączanie kabla od stacji dokującej (meh). Odłączanie kabla myszy (meh). Usypianie przez zamykanie klapy. To ostatnie nie było takie całkiem nieakceptowalne, więc spróbowałem. Niestety, macOS, który ma podłączony monitor i zasilanie, traktuje zamknięcie klapy jako sygnał do przełączenia wyświetlania na monitor, nie sygnał uśpienia. Co prawda wybranie sleep po zamknięciu klapy już usypia system tak, że nie reaguje na ruchy myszą, ale nie jest to zbyt wygodne.

Wiem, problemy pierwszego świata. ale może znacie jakieś magiczne zaklęcia konsolowe, które pozwolą zahibernować system z podłączonym monitorem i zasilaniem? Tak, żeby poruszenie myszą go nie wybudzało? Dodatkowe, zewnętrzne programy raczej odpadają – polityka firmy. Pozostaje to, co przychodzi z systemem.

[1] Caffeinate znaczy.