Selfhosting -- temat zbiorczy

No i stało się, postawiłem Zabbixa do monitoringu homelab..ów. Tak, kilku homelabów, bo dzielę instancję Zabbixa z dwoma kolegami, co pozwala na podział kosztów. Postaram się niedługo przygotować na ten temat artykuł na bloga, ale mogę dać krótkie tl;dr.

Początki Zabbixa w domu

Już wcześniej uznałem, że postawienie na Zabbixa to może być dobry pomysł, jedynie co, to byłem ciekawy jak inni go hostują. Niestety, te deploymenty, o których się dowiedziałem, nie były dla mnie ciekawe, dlatego też postanowiłem przetestować własny, najpierw u siebie w domu.

Dlatego też utworzyłem dwie VM z Debianem 13 – jedna hostująca MariaDB jako bazę danych dla Zabbixa, a druga hostująca Zabbix-Server oraz Zabbix-Frontend “zainstalowane” Dockerem. Następnie rozpocząłem testy, patrząc jak sprawdza się taki monitoring domowych maszyn. Dodałem monitoring w miarę wszystkich urządzeń, w tym routera z OpenWrt (z użyciem Zabbix-Agent dostępnego w repo) czy Home Assistanta (z użyciem nieoficjalnej templatki). Większość maszyn/serwerów ogarnąłem Zabbix Agentem w wersji 2, oprócz VM na Proxmox - tutaj monitoring zapewniający przez oficjalną templatkę do Proxmox mi wystarczył. Dlaczego Agent2? Agent w wersji 2.0 oferuje monitoring Dockera, co przydało mi się do właśnie bycia na bieżąco z usługami wystawionymi tą metodą.

Byłem bardzo zadowolony z Zabbixa, dlatego uznałem, że czas z tym wyjść dalej.

Zabbix w chmurze (ale nie Zabbix Cloud)

Cały stack monitoringowy trzymany w tym samym domu, co sprzęt, który ma być monitorowany, to kiepski pomysł. Dlatego też wiedziałem, że chcę z tym wyjść na zewnątrz. Mikrus Frog za 5 zł to rozwiązanie wyjątkowo za słabe (ale do Beszela jest OK), mikrus 2.1 to też kiepska droga (zresztą postanowiłem się z Mikrusa offboardować). Dlatego wybór padł na chmurę Hetzner ponieważ:

  • Podstawowa instancja Compute jest całkiem wydajna i tania
  • Dostępne są security groups (nazwane tutaj Firewall)
  • Dostępny jest wbudowany mechanizm backupów (choć ubogi)
  • Dostępny jest provider do Terraforma/OpenTofu wraz z oficjalnymi modułami (ale są one słabe, musiałem co nieco poprawiać).

Hetzner ma jednak wady, oprócz ulotnie wspomnianych wyżej, mogę dodać brak wbudowanego Secret Managera czy niejasny pricing za S3.

Deployment wyglądał dosyć podobnie - dwie maszyny, gdzie jedna hostuje MariaDB, a druga Zabbix-Server i Zabbix-Frontend (obydwie usługi wrzucone Dockerem). Do tego mam firewall ograniczający ruch tylko dla adresów IP prawdziwych użytkowników.

Aby nie utrudniać monitoringu urządzeń sieciowych i tych dostępnych w domu, każdy z użytkowników używa własne Zabbix Proxy. Zabbix Proxy to jedyne komponenty komunikujące się z Zabbix-Server, natomiast wszelkie urządzenia łączą się z Zabbix-Proxy w danej lokalizacji (lub grupy Proxy). Do tego doszło szyfrowanie z użyciem certyfikatów.

Tak jak wspomniałem, zamierzam przygotować wpis na bloga, gdzie postaram się wyjaśnić jak rozdzieliliśmy widoczność hostów między userów, jak działają Proxy czy deployment z użyciem OpenTofu.

2 Likes

@cichy1173 a testowałeś checkmk? Trochę taki nagiosa na sterydach ;)

Nie testowałem, ale słyszałem o tym. Z Zabbix o tyle było dla mnie lepiej, bo:

  • Już co nieco znam to rozwiązanie z pracy, więc mogłem jakoś zaprojektować architekturę i równolegle się douczać
  • Jestem w trakcie nauki i certyfikacji z tego rozwiązania (jeden cert już mam)
  • Zabbix jest w pełni Open Source

Ja mam hp prodesk 600 g3 mini ( i5-6500t , 16 gb ram) tam mam jellyfin i yunohost w proxmox

Raspberry pi 4b 8gb a tam Home assistant i lyrion music server ( pod streamer z iqaudio pi dac pro , bo raspberry z minijacka miało fatalną jakość dzwięku) , no i pi hole do blokady reklam.

1 Like

Zabbix to można użyć na wiele sposobów.

Chciałem monitorować stan przydatności wyposażenia apteczek w samochodzie. Dla mnie wygodnym rozwiązaniem stał się Zabbix i prosty skrypt Python (a raczej dwa).

obraz

Za pomocą pierwszego skryptu mogę dodawać nowe rzeczy do apteczki (apteczek) i ustawiać datę ważności. Skrypt ma automatycznie ustawione triggery, które ustawiają dla każdego przedmiotu trzy alarmy - pierwszy na 30 dni przed końcem ważności, drugi na 14, a trzeci na 7 dni.

Drugi skrypt natomiast odświeża dane – Zabbix sam w sobie czasu jako pozycje nie odmierza, więc potrzebny jest “zewnętrzny bodziec”. To robi skrypt Python uruchamiany jako cronjob co 12h w Forgejo Actions.

Myślę, aby ponownie wykorzystać ten zestaw narzędzi do podobnych rzeczy. Przydałoby się jednak usuwanie danych pozycji, kiedy te znikną z inventory w kodzie. Zapewne jest to do ogarnięcia, ale powoli wchodzę na rejony, gdzie po prostu byłoby lepiej użyć Ansible (i w końcu się zmusić do jego nauki :sweat_smile: ) niż odkrywać koło na nowo (Providerzy Terraforma niestety nie są aktualizowane od dawna :sad_but_relieved_face: )

3 Likes