Baza wiedzy - Monit – proste narzędzie do monitoringu serwera na systemie Linux

Monit – proste narzędzie do monitoringu serwera na systemie Linux

Wstęp

Monit jest prostym narzędziem służącym do monitoringu serwera Linux. Monit działa zarówno lokalnie, jak i można przy jego pomocy monitorować inne serwery. Jedną z funkcjonalności jest podjęcie zdefiniowanych działań w przypadku wykrycia awarii np. restart usługi, co może być bardzo pomocne dla serwerów, gdzie nie mamy wsparcia 24/7.

Instalacja

Monit zainstalujemy z gotowej paczki na większości systemów.
Dla Debiana/Ubuntu:
apt install monit
Dla CentOS/AlmaLinux:
yum install monit
Po instalacji włączamy usługę, aby uruchamiała się automatycznie po starcie i sprawdzamy jej status:
systemctl start monit
systemctl enable monit
systemctl status monit
Powinniśmy otrzymać:
# systemctl status monit
● monit.service - LSB: service and resource monitoring daemon
     Loaded: loaded (/etc/init.d/monit; generated)
     Active: active (running) since Mon 2023-07-24 14:34:26 CEST; 17min ago
       Docs: man:systemd-sysv-generator(8)
    Process: 1567 ExecReload=/etc/init.d/monit reload (code=exited, status=0/SUCCESS)
      Tasks: 2 (limit: 3528)
     Memory: 4.8M
        CPU: 206ms
     CGroup: /system.slice/monit.service
             └─280 /usr/bin/monit -c /etc/monit/monitrc

Jul 24 14:34:25 vps13877 systemd[1]: Starting LSB: service and resource monitoring daemon...
Jul 24 14:34:26 vps13877 monit[252]: Starting daemon monitor: monit.
Jul 24 14:34:26 vps13877 systemd[1]: Started LSB: service and resource monitoring daemon.
Jul 24 14:42:25 vps13877 systemd[1]: Reloading LSB: service and resource monitoring daemon.
Jul 24 14:42:25 vps13877 monit[1567]: Reloading daemon monitor configuration: monit.
Jul 24 14:42:25 vps13877 systemd[1]: Reloaded LSB: service and resource monitoring daemon.

Konfiguracja

Po tym, jak nasza usługa działa poprawnie, możemy rozpocząć konfigurację. Zaczynamy od uruchomienia dostępu przez stronę www. Konfiguracja usługi znajduje się w pliku /etc/monit/monitrc. Otwieramy go ulubionym edytorem:
nano /etc/monit/monitrc
Następnie szukamy (control+w dla nano):
set httpd port 2812 and
i usuwamy # sprzed znalezionej linii oraz 2 następnych, tak żeby konfiguracja wyglądała następująco:
set httpd port 2812 and
     use address 0.0.0.0  # only accept connection from localhost (drop if you use M/Monit)
     allow 0.0.0.0/0        # allow localhost to connect to the server and
     allow admin:monit      # require user 'admin' with password 'monit'
Po zmianach zapisujemy je, wciskając control+x oraz enter.
UWAGA, zamiast admin:monit powinniśmy wygenerować własną nazwę użytkownika i losowe hasło, aby uniemożliwić dostęp do strony botom lub hackerom.
Po zapisaniu sprawdzamy poprawność konfiguracji komendą:
# monit -t
Control file syntax OK
I przeładowujemy usługę:
systemctl reload monit
Następnie wchodząc na adres http://IPSERVERA:2812 powinniśmy zobaczyć pytanie o login i hasło:

Po wpisaniu danych, które wpisaliśmy w konfigu w poprzednim kroku, powinniśmy zobaczyć stronę z informacjami o serwerze:

Monitoring

Przy pomocy monit możemy monitorować różne usługi, możemy pisać sami nowe monitory, jak i użyć tych wbudowanych w oprogramowanie. W przykładzie dodamy monitoring apache2 na podstawie dostępnej konfiguracji.
Wszystkie konfiguracje usług, które możemy odblokować lub dodać nowe znajdują się w katalogu /etc/monit/conf-available. Aby włączyć monitoring apache2, wykonujemy następująca komendę:
ln -s /etc/monit/conf-available/apache2 /etc/monit/conf-enabled/
Komenda ta utworzy link z katalogu conf-available (dostępnych konfiguracji usług) do conf-enabled, gdzie trzymane są odblokowane konfiguracje. Po utworzeniu linku sprawdzamy składnię:
# monit -t
Control file syntax OK
oraz przeładowujemy usługę:
systemctl reload monit
Po wejściu na stronę monita powinniśmy zauważyć nowe wpisy dotyczące apache2:

Odblokowując dodatki openssh-server oraz cron otrzymamy następujące informacje:

W internecie możemy poszukać różnych dodatkowych konfiguracji zawierających np. sprawdzanie dostępnej przestrzeni dyskowej albo zużycia zasobów CPU.

Własne konfiguracje

W przykładzie dodamy konfigurację sprawdzającą, czy na serwerze znajduje się odpowiednia ilość wolnego miejsca. Tworzymy plik disk-space w katalogu /etc/monit/conf-available:
nano /etc/monit/conf-available/disk-space
i wklejamy do niego (85% możemy zmienić na dowolny inny % zajętości dysku):
check filesystem root with path /
if space usage > 85% then alert
Włączamy nową konfigurację, sprawdzamy poprawność skryptu oraz przeładowujemy usługę:
ln -s /etc/monit/conf-available/disk-space /etc/monit/conf-enabled/
monit -t
systemctl reload monit
Po wykonaniu tych komend powinniśmy zobaczyć na stronie dodatkowy wpis:

Pełna dokumentacja znajduje się pod adresem: https://mmonit.com/monit/documentation/monit.html