Raspberry Pi jako monitor serwera WWW

Raspberry Pi idealnie nadaje się do roli urządzenia monitorującego pracę serwerów, np. serwera WWW. Są dostępne rozbudowane narzędzia, np. NagiosPi, które umożliwiają monitorowanie wielu parametrów pracy serwera, ale są skomplikowane w konfiguracji, a w wielu przypadkach wystarczy nam informacja, że serwer nie odpowiada na zapytania HTTP (mówiąc prosto: strona się nie wyświetla), do tego celu stworzono oprogramowanie PHP Server Monitor.

Dzięki temu skryptowi możliwe jest uruchomienie prostego systemu monitorującego w mniej niż godzinę (przy odrobinie wprawy nawet w pół godziny), mówię tu o czasie od wyjęcia Raspberry Pi i karty microSD z opakowania, nie o czasie konfiguracji samego PHP Server Monitora.

Oczywiście oprogramowanie PHP Server Monitor można uruchomić na dowolnym komputerze dla którego dostępny jest serwer WWW z obsługą PHP oraz mySQL. Jeśli Raspberry Pi wydaje Ci się za drogi to pojawiło się ostatnio sporo tańszych komputerków, np. Orange Pi Zero w cenie ok. 60 PLN, uruchomienie całego systemu powinno wyglądać w jego przypadku bardzo podobnie.

Co będzie potrzebne?

  • Komputer Raspberry Pi (w zasadzie każda wersja, oczywiście w wersji A+ niezbędna będzie karta sieciowa USB)
  • Zasilacz odpowiedni dla wybranej wersji Pi
  • Karta micro-SD z adapterem SD
  • Kabel ethernetowy (zbędny, jeśli zamierzasz łączyć się przez WiFi)
  • Konto pocztowe do wysyłania wiadomości o działaniu serwerów

Instalacja systemu oraz serwera WWW

Zakładam, że umiesz zainstalować Raspbiana na karcie SD i wykonać podstawową konfigurację (jeśli nie, to poszukaj w sieci hasła raspi-config) i ustawić stały adres IP. Teraz możemy przystąpić do instalacji serwera Apache, PHP i serwera mySQL, po kolei trzeba wykonać polecenia:

sudo apt-get update
sudo apt-get install apache2 apache2-doc apache2-utils
sudo apt-get install libapache2-mod-php5 php5 php-pear php5-xcache
sudo apt-get install php5-mysql
sudo apt-get install mysql-server mysql-client
sudo apt-get install php5-curl
sudo /etc/init.d/apache2 restart

Mamy już gotowy serwer WWW, teraz utworzymy bazę danych i użytkownika, w tym celu uruchamiamy klienta mySQL:

mysql -uroot -p

Komputer zapyta nas o hasło użytkownika root bazy danych mySQL (hasło trzeba było ustawić podczas konfiguracji serwera), po wprowadzeniu hasła wykonujemy po kolei polecenia:

create user NAZWA_UZYTKOWNIKA identified by 'HASLO';
create database NAZWA_BAZY_DANYCH;
use NAZWA_BAZY_DANYCH;
grant all on NAZWA_BAZY_DANYCH to NAZWA_UZYTKOWNIKA;
grant all on NAZWA_BAZY_DANYCH.* to NAZWA_UZYTKOWNIKA;
exit

Instalacja PHP Server Monitor

Archiwum ze skryptem można pobrać ze strony autora:

cd ~
wget -O phpservmon.zip https://sourceforge.net/projects/phpservermon/files/phpservermon/PHP%20Server%20Monitor%20v3.1.1/phpservermon-3.1.1.zip/download

Rozpakowujemy archiwum do katalogu dokumentów serwera WWW:

unzip phpservmon.zip -d /var/www/html/

Ponieważ katalog główny w arciwum ma skomplikowaną nazwę (phpservermon-3.1.1) zmieniam ją na prostszą:

mv /var/www/html/phpservermon-3.1.1/ /var/www/html/psm

W tej chwili strona monitora dostępna jest pod adresem http://IP_RASPBERRY_PI/psm, po otwarciu strony pojawi się instalator:

Ja jednak miałem z nim niewielki problem, mianowicie instalator nie mógł zapisać pliku konfiguracyjnego (nie chodzi o uprawnienia do zapisu – sprawdziłem), ale autor przewidział tego typu problem, bo instalator wyświetla zawartość tego pliku, można ją samodzielnie umieścić w pliku /var/www/html/psm/config.php.

Należy skopiować zawartość okienka i zapisać ją w pliku /var/www/html/psm/config.php używając np. edytora nano, potem kliknąć niebieski przycisk „I have saved…”. W kolejnym oknie należy podać dane administratora aplikacji (nazwa użytkownika, hasło i adres email), no i to była cała instalacja, teraz można przejść do konfiguracji.

Konfiguracja PHP Server Monitor

Niezbędne do działania monitora jest utworzenie zadania cron, które cyklicznie będzie uruchamiać monitorowanie, w tym celu otwieramy plik konfiguracyjny crona poleceniem:

sudo crontab -e

Na końcu pliku dodajemy linijkę:

*/5 * * * * root /usr/bin/php /var/www/html/psm/cron/status.cron.php

Ciąg */5 na początku wiersza oznacza, że polecenie będzie uruchamiane co 5 minut, tj. co 5 minut będzie badany stan serwerów, należy to skonfigurować wg. własnego uznania. Teraz możemy otworzyć stronę PHP Server Monitora i zalogować się, zobaczymy stan monitorowania dla dwóch przykładowych serwerów, które są domyślnie skonfigurowane:

Na początek wypadałoby przejrzeć zakładki konfiguracyjne, pierwsza wygląda tak:

Mamy tu podstawowe opcje konfiguracyjne, nie wymagają komentarza, druga istotna dla nas zakładka dotyczy konfiguracji poczty email, tu zalecam ustawienia jak na zrzucie (tzn. wysyłka przez serwer SMTP:

Trzecia zakładka konfiguracyjna nas prawie na pewno nie dotyczy, bo proponowane usługi nie działają w Polsce (prawie, bo sprawdziłem trzy z tych usług), natomiast w czwartej zakładce mamy możliwość konfiguracji usługi Pushover, która umożliwia przesyłanie informacji na smartfon lub komputer, usługa płatna jednorazowo (kilka dolarów) osobno na każdą z wybranych platform (iOS, Android, Windows).

W zakładce „Serwery” widać listę skonfigurowanych do monitorowania serwerów i ich statusy:

Można tu też dodać nowy serwer:

Jak widać na zrzucie, można tu skonfigurować:

  • etykietę, czyli nazwę widoczną w liście monitorowanych usług
  • domenę lub adres IP usługi
  • port usługi
  • czas, w którym odpowiedź ma zostać uzyskana, po przekroczeniu czasu monitor uznaje, że usługa nie działa
  • drogę, jaką użytkownicy mają być informowani o zmianach statusu usługi
  • listę użytkowników, którzy mają być powiadamiani

Podsumowując – PHP Server Monitor nie poraża możliwościami, ale małym kosztem i niewielkim nakładem czasu pozwala stworzyć przyzwoity system, który zaalarmuje w przypadku problemów z dostępnością stron internetowych.

Komputer Raspberry Pi oraz inne niezbędne elementy dostępne są jako zestaw w sklepie Kamami.pl.

Sklep dla elektroników Kamami.pl