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:
1 2 3 4 5 6 7 |
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:
1 |
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:
1 2 3 4 5 6 |
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:
1 2 |
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:
1 |
unzip phpservmon.zip -d /var/www/html/ |
Ponieważ katalog główny w arciwum ma skomplikowaną nazwę (phpservermon-3.1.1) zmieniam ją na prostszą:
1 |
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:
1 |
sudo crontab -e |
Na końcu pliku dodajemy linijkę:
1 |
*/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.