Monitoring serwera na linuksie
W tym wpisie pokażę jak wdrożyłem pakiet NetData na maszynie z Ubuntu Server 18.04. Może “serwer na linuksie” brzmi jakoś poważnie, ale dzisiaj można to sprowadzić do Raspberry / Banana Pi czy podobnej płytki.
Co i po co monitorować?
Zawodowo od lat zajmuję się działką IT, także dla mnie monitoring kluczowych maszyn w infrastrukturze to podstawa, szczególnie dostępność i wydajność. Tak samo ważne są dane archiwalne, czyli co działo się np. 30 minut temu, jak i te pokazywane w czasie rzeczywistym. Ale nie samą pracą człowiek żyje, w domu też coś można pomonitorować :).
Od kilku miesięcy sam sobie hostuję strony internetowe. Mam wirtualną maszynę na Linux Ubuntu Server 18.04, gdzie zainstalowałem nginx, mariadb, php7 i kilka innych paczek pozwalających na sprawne, bezpieczne (mam nadzieję) i wydajne serwowanie treści w internecie. Rozwiązanie nie tyle miało na celu oszczędność pieniędzy (wystarczający, współdzielony hosting nie kosztuje fortuny), ale chciałem się uniezależnić od ograniczeń usługodawcy, choćby w zakresie certyfikatów ssl, czy konfiguracji od strony systemu operacyjnego.
Skoro więc mamy korzyści (jak i ciężary) z możliwości samodzielnego administrowania maszyną, warto ją monitorować i patrzeć co tam się dzieje. Prócz narzędzi, które zbierają dane przez snmp (np. observium, librenms, munin, cacti, nagios, zabbix) jest też fajny wizualnie i użyteczny NetData. Więcej informacji o tym narzędziu można znaleźć na stronie domowej w serwisie github. Jest też strona domowa https://my-netdata.io/
NetData na ubuntu server 18.04
Na wspomnianej wyżej stronie github można znaleźć szczegółowe informacje dotyczące “wdrożenia” narzędzia na serwerze. Jest kilka metod instalacji, jak wybrałem pierwszą rekomendowaną, czyli kompilację z najaktualniejszych źródeł. Możne znowu brzmi poważnie, ale sprowadza się do kilku prostych poleceń w konsoli, skrypty załatwią resztę. Trochę bałem się samej instalacji, bo NetData wyświetla dane na stronie www, a takie zabiegi na działającym serwerze www mogą zakończyć się problemami (konflikty serwerów www itp itd) więc na początek cyk i snapshot maszyny wirtualnej zrobiony (te plusy dodatnie wirtualizacji… :)). I w konsoli jako zwykły użytkowniki trzeba wklepać (przekleić) linijkę:
bash <(curl -Ss https://my-netdata.io/kickstart.sh)
Zostaniemy poproszeni o hasełko usera w celu podniesienia uprawnień i dalej skrypt sprawdza nasz system i będzie chciał zainstalować kilka paczek, których nie znalazł na maszynie, a są mu potrzebne:
Klepnięcie w Enter i jedziemy dalej:
Wystarczy znowu klepnięcie w Enter, a dalej automatycznie NetData zostanie zbudowana ze źródeł i zainstalowane we wskazanych ścieżkach:
Zainstalowane, skonfigurowane, działa, będzie Pan zadowolony :). I jakby nie patrzeć, skompilowaliśmy sobie narzędzie ze źródeł 🙂.
NetData w akcji
Zgodnie z komunikatem, wklepałem sobie w przeglądarkę adres serwera i po dwukropku port 19999 i… nic, Chrome mieli, mieli, mieli i:
Upsss, to wpisuje szybko grylewicz.pl działa, ufffff. Czyli chyba firewall, bo są takie jakby dobre praktyki, żeby otwierać tylko te porty, które są niezbędne, a tcp 19999 to ja na pewno nie otwierałem, co można sprawdzić poleceniem (w innych systemach może być trochę inaczej):
sudo ufw status
Otwieram więc port:
sudo ufw allow 19999/tcp
i znowu w przeglądarkę wklepałem adres serwera i port 19999
http://adres_ip:19999
I jest!
Pasek przewijania jest bardzo długi, za pomocą NetData możemy wizualnie obserwować wiele parametrów, np. obciążenie procesora czy zajętość pamięci RAM z podziałem na usługi, które te zasoby zużywają. Wykresy są interaktywne, można je powiększać, cofać się w czasie, wyłączać widoki itd. Najlepiej pokazać to na video (zachęcam do subskrypcji kanału):
Podsumowanie
NetData to dość znane w sieci narzędzie. Posiada kilkaset tysięcy instalacji, kod jest na bieżąco rozwijany. Sama prezentacja danych jest bardzo wygodna, możemy sobie zobaczyć, jak wydajność serwera wygląda w czasie, czy pamięć, procesor lub sieć idzie pod korek itd. Wszystko jest bardzo przejrzyste i miłe dla oka. Trzeba tylko pamiętać, że NetData też obciąża system :), tragedii nie ma, u mnie CPU na poziomie 3% i RAM około 100MB (przy otwartej przeglądarce z wykresami). Polecam, nie tylko do zabawy :).
NetData monitoruje jedynie maszynę hosta, czy może też zbierać dane z innych urządzeń?
Dobre pytanie, nie wczytywałem się, czy jest taka możliwość. Z drugiej strony takie kolektory danych często składają się z dwóch modułów – agenta zbierającego dane i front end z ekspozycją danych. Na pewno odpowiedź znajdzie się w dokumentacji NetDaty
Fajny artykuł, soft fajnie działa. Dzięki za wpis 🙂
Dzięki! W końcu działa jak trzeba. Super poradnik 🙂