3. September 2017

PHP Server Monitor

In diesem Blog erkläre ich Installation und Konfiguration von PHP Server Monitor auf einem Raspberry Pi. Es gibt viele gute Werkzeuge zur Überwachung (Monitoring) von Servern und der Erreichbarkeit von Webseiten. Leider steckt hinter den meisten diese Lösungen ein nicht unerheblicher Konfigurationsaufwand.

Aus diesem Grund sind in den letzten Jahren  verschiedene Cloud Lösungen mit einfachster Konfiguration erschienen. Der PHP Server Monitor ist ein Zwischending aus diesen beiden gegensätzlichen Ansätzen. Relativ einfach zu installieren, sehr einfach zu konfigurieren aber Betrieb auf einem eigenen Server. Den Raspberry Pi als Server wählen wir, damit wir einen 24/7 Std. Betrieb aufrecht erhalten können, ohne dass uns unsere Stromkosten explodieren und wir nicht von der Verfügbarkeit eines externen Servers abhängig sind.

Vorraussetzungen

  • Linux Server Installation (Ubuntu, Raspbian, etc…)

MySQL Datenbank

Zunächst installieren wir uns eine MySQL Datenbank. Die Pakete erhalten wir wenn wir in der Shell folgendes eingeben:

sudo apt-get install mysql-server

Im nächsten Schritt sichern wir die getätigte Installation etwas ab:

sudo mysql_secure_installation

Nun wollen wir eine Datenbank anlegen auf die PHP Server Monitor später zugreifen soll.

mysql -u root -p

Das Kommando zum erstellen der Datenbank lautet:

CREATE DATABASE servermon;

Der User der auf die Datenbank zugreifen soll, wird wie folgt angelegt:

CREATE USER 'servermon'@'localhost' IDENTIFIED BY '******';

Die Berechtigungen für den Zugriff ausschließlich über den Pi selbst vergeben wir so:

GRANT ALL PRIVILEGES ON servermon . * TO 'servermon'@'localhost';

Wir aktivieren die vergebene Konfiguration abschließend mit diesem Befehl:

FLUSH PRIVILEGES;

Und verlassen das Programm mit:

exit

Damit haben wir den MySQL Server fertig eingerichtet.

NGINX Webserver

NGINX installieren wir mit dem Kommando:

sudo apt-get install nginx

Den aktuellen Status des Webservers können wir mit folgendem Befehl überprüfen:

sudo service nginx status

Wenn er läuft, dann sollte man vom Client aus, wenn man den Servernamen oder die IP-Adresse des Pis eingibt schon folgenden Screen sehen:

Das wäre erstmal alles zur Installation des Webservers, die Konfiguration erfolgt später.

PHP FPM

PHP-fpm und das zur Interaktion mit MySQL benötigte Modul installieren wir mit:

sudo apt-get install php-fpm php-mysql

Eine Optimierung zur besseren Absicherung machen wir gleich zu Beginn in der Datei “/etc/php/7.0/fpm/php.ini” . Diese öffnen wir in einem Editor der Wahl und ergänzen folgenden Eintrag:

cgi.fix_pathinfo=0

In der gleichen Datei bestimmen wir auch unsere Zeitzone:

date.timezone = 'Europe/Berlin'

Nun müssen wir unseren Webserver auch so einstellen, dass er PHP-FPM verwendet. Dazu editieren wir die Datei “/etc/nginx/sites-available/default”. Wir löschen den kompletten Inhalt und fügen diesen ein (“server_domain_or_IP” ist durch euren Wert zu ersetzten, “default_server” am besten auch):

server {
    listen 80;

    root /var/www/html;
    index index.php index.html index.htm index.nginx-debian.html;

    server_name server_domain_or_IP;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

Jetzt legen wir noch zur Kontrolle, dass bis hierhin alles gut funktioniert hat, die Datei “/var/www/html/info.php” an, und geben ihr diesen Inhalt:

<?php phpinfo(); ?>

Jetzt starten wir zuerst PHP neu:

sudo service php7.0-fpm restart

Dann nginx:

sudo service nginx restart

Nun sollten wir beim Aufruf der URL “http://raspberrypi/info.php” im Web-Browser etwas in dieser Art sehen:

Und damit wäre auch die PHP Installation abgeschlossen.

PHP Server Monitor Installation

Zur Installation von PHP Server Monitor benötigen wir noch zwei zusätzliche Pakete die wir mit folgendem Befehl installieren:

sudo apt-get install unzip php-curl php-xml git

Ein Neustart von PHP kann nicht schaden:

sudo service php7.0-fpm restart

Die nächsten Aktivitäten erledigen wir alle als User root:

sudo -i

Absprung ins Webverzeichnis

cd /var/www/html

Herunterladen von PHP Server Monitor

wget https://github.com/phpservermon/phpservermon/archive/master.zip

Entpacken:

unzip master.zip

In das neue Verzeichnis springen:

cd phpservermon-master/

Alles eine Ordnerebene höher verschieben:

mv * ..

Eine Ebene zurück gehen:

cd ..

Nicht mehr benötigte Ordner und Dateien löschen:

rm -R phpservermon-master/

rm info.php

rm master.zip

Erzeugung abhängiger Komponenten:

sudo php composer.phar update

sudo php composer.phar install

Berechtigungen korrigieren:

chown -R www-data: /var/www/html

Konfigurationsdatei erzeugen:

cp config.php.sample config.php

Inhalt:

<?php
define('PSM_DB_HOST', 'localhost');
define('PSM_DB_NAME', 'servermon');
define('PSM_DB_USER', 'servermon');
define('PSM_DB_PASS', '******');
define('PSM_DB_PREFIX', 'psm_');
define('PSM_DB_PORT', '3306');

Nun richten wir noch einen sogenannten Cronjob ein, der später alle 15 Minuten den Status unserer zu überwachenden Objekte abfragt:

crontab -e

Zu ergänzende Zeile:

*/15 * * * * /usr/bin/php /var/www/html/cron/status.cron.php

Damit ist die Basis-Installation von PHP Server monitor abgeschlossen.

PHP Server Monitor Konfigurieren

Wir öffnen das Web-Setup über die URL: “http://raspberrypi/install.php” und klicken auf “Let’s go”:

Im nächsten Dialog geben wir unsere gewünschten Daten ein und klicken anschließend auf “Install”:

Wenn alles gut verlaufen ist erhalten wir folgende Infos:

Nach dem Klick auf “Go to your monitor”, landen wir auf der Anmeldemaske die uns in Zukunft immer begrüßen wird und in der wir unsere zuvor festgelegten Benutzerdaten zu Anmeldung nutzen:

Sobald wir angemeldet sind öffnen wir den Konfigurationsdialog und nehmen Einstellungen wie Sprache, E-Mail Adresse etc. vor:

Jetzt ist auch unsere Anwendung fertig konfiguriert und wir können die Überwachung einzelner Systeme / URLs einrichten.

System / URL Monitoring

Wir entfernen die vorhanden Beispielsysteme und fügen unsere eigenen im Menüpunkt “Servers” hinzu.

Eine typische Beispielkonfiguration zur Überwachung einer Website wäre:

Jetzt haben wir alles eingerichtet und erhalten Warnnachrichten per E-Mail, wenn eine(r) unserer Websites/Server offline gehen und auch die Info, wenn das Problem wieder behoben ist. Die Konfiguration hierzu ist wesentlich einfacher als mit Profi-Tools wie z.B. Incinga oder Nagios, aber erfüllt zu 100% dem was wir erreichen wollten!

Titel

PHP Server Monitor

Veröffentlicht am

3. September 2017

Teilen
facebook twitter xing linkedin email whatsapp
Kategorien / Tags
Linux