Jak dobrze monitorować systemy, zbierać i wyświetlać dane tak aby wszystko było podane jak na tacy? Zacząć używać monitoringu Netdata.

Często gdy występuje jakiś problem na serwerze administrator musi szukać problemu we wszystkich zakamarkach systemu kończąc na aplikacji, którą nie koniecznie się zajmuje. Wtedy podstawowy monitoring, który sprawdza CPU, pamięć, dysk, ilość procesów może nie wystarczyć. W przypadku złożonej awarii zaczyna się wielkie szukanie i gdybanie w czym był problem. Bez robienia dokładnego monitoringu przez głowę przechodzą pomysły zaczynające się od I/O wait a kończą się na bug’u w systemie. Wyjściem z tej sytuacji może być monitoring zainstalowany lokalnie na maszynie o nazwie Netdata. Netdata przedstawia się jako szybki, prosty i monitorujący wszystko w czasie rzeczywistym program, który działa od razu po zainstalowaniu. Tak to prawda, instalacja jest prosta i działa chyba na każdym popularnym systemie tj. Ubuntu, Centos, Redhat itd. Na Raspberry Pi zużywa tylko 3% procesora. Co wyróżnia Netdata to, że nie trzeba go wstępnie konfigurować, przy uruchomieniu sam wykrywa działające serwisy i zaczyna je monitorować. A jeśli potrzebuje jakiegoś dostępu jak np. do bazy danych to jest to do skonfigurowania w plikach.

Instalacja

Na początek trzeba zainstalować wymagane paczki

redhat
yum install autoconf automake curl gcc git libmnl-devel libuuid-devel lm-sensors make MySQL-python nc pkgconfig python python-psycopg2 PyYAML zlib-devel python-mysqldb
ubuntu
apt-get install zlib1g-dev uuid-dev libmnl-dev gcc make git autoconf autoconf-archive autogen automake pkg-config curl python-mysqldb

Instalacja programu to przede wszystkim zaciągnięcie danych z github

cd /root/
git clone https://github.com/firehol/netdata.git --depth=1
cd netdata./netdata-installer.sh

Po instalacji netdata wystawia webserwis na porcie 19999. Można ograniczyć i zmienić dostęp, ustawiając nasłuchiwanie na localhost ale dostęp do monitoringu będzie ograniczony. Natomiast nie da się ustawić żadnego zabezpieczenia na login i hasło. Chyba że dodatkowo postawimy serwer www np. nginx w trybie proxy z htaccess. Dlatego wyjściem jest ustawienie nasłuchiwania na localhost i tunelowania się po ssh na ten serwis. np. ssh -L 8000:localhost:19999 root@techfreak.pl. W takim przypadku na swoim komputerze localhost:8000 jestem w stanie otworzyć zdalnego localhosta:19999. Ok, tyle z dostępów.

Poniżej widać tablice wyświetlającą podstawowe parametry a przechodząc niżej, wszystkie inne szczegółowe wykresy. Widać też, że monitorowane są takie serwisy jak redis, nginx, mysql (mariadb).

Jeśli mam więcej serwerów do monitorowania każde wejście na konkretny host zostanie zapisane w przeglądarce a tym samym utworzy się menu w którym mam do wyboru moje hosty.

Powiadomienia

Ważną sprawą jest to aby się jak najwcześniej dowiedzieć o problemie. W przypadku gdy patrze akurat na dashobard to powiadomienie o problemie lub jego zakończeniu dostanę w przeglądarce i nie przyjdzie ono na pocztę. Natomiast odłoży się w logach.

 

Jeśli w systemie jest skonfigurowany sendmail i nie zobaczę powiadomienia to zostanie wysłana wiadomość o alarmie na pocztę. Aby to skonfigurować nie trzeba robić nic innego jak zdefiniować adres na jaki ma przychodzić wiadomość. Definiuje się to w pliku /etc/netdata/health_alarm_notify.conf, więcej można przeczytać na github.

A co z serwisami jak nginx, mysql, co w przypadku gdy któryś przestanie działać? Oczywiście netdata zaraz o tym powiadomi a na wykresach zostawi pustą przestrzeń,

Demo

Dla bardziej zainteresowanych polecam zobaczyć po prostu demo, które pokaże możliwość netdata.

Debug

W razie problemów z połączeniem do konkretnych usług warto odpalić debug aby zobaczyć co jest grane.

sudo su -s /bin/sh netdata

#mysql

/usr/libexec/netdata/plugins.d/python.d.plugin debug 1 mysql

#mongodb

/usr/libexec/netdata/plugins.d/python.d.plugin debug 1 mongodb

#nginx

/usr/libexec/netdata/plugins.d/python.d.plugin debug 1 nginx