Wer mehrere Server hat, und gerne mal deren Status „checkt“, sprich schaut, ob sie online sind und wie es um die Uptime, den Systemload, sowie um die Nutzung des RAM und der CPU steht, dürfte mit dem, was man nach der Befolgung dieses Tutorials hat, zufrieden sein. Denn so sieht’s hinterher z.B. aus:

serverstatus1

 

und das Ganze ist mit jedem Browser aufrufbar. Los geht’s!

1. Alles benötigte installieren

apt-get update

apt-get upgrade

apt-get install nginx php5-fpm php5-mysql php5-curl mysql-server nano wget unzip

Wer die neueste nginx Version nutzen möchte, fügt in die Datei /etc/apt/sources.list noch die offizielle nginx APT Repository hinzufügen, welche [HIER] zu finden ist. Wer einen anderen Webserver, z.B. Apache nutzen möchte, kann das selbstverständlich ebenso tun.

2. PHP5-FPM und MySQL konfigurieren

nano /etc/php5/fpm/php.ini

Hier per Strg + W nach „cgi.fix“ suchen, und aus der Zeile:

;cgi.fix_pathinfo=1

folgendes

cgi.fix_pathinfo=0

machen.

nano /etc/php5/fpm/pool.d/www.conf

Hier

listen = /var/run/php5-fpm.sock

oder etwas anderem nach dem = suchen und durch

listen = localhost:9000

ersetzen.

service php5-fpm restart

mysql_install_db

mysql_secure_installation

Hier erst das Passwort eingeben, dann n + Enter und alle weiteren Prompts einfach mit Enter bestätigen.

mysql -u root -p[MySQL Root Passwort]

create database serverstatusdb;

create user serverstatus_usr@localhost identified by ‚[neues Passwort]‘;

grant all privileges on serverstatusdb.* to serverstatus_usr@localhost;

flush privileges;

exit

Wobei „serverstatusdb“ und „serverstatus_usr“ natürlich durch quasi alles andere ersetzt werden kann, dann aber auch im folgenden angepasst werden muss.

3. ServerStatus herunterladen und konfigurieren

mkdir /var/www

cd /var/www

wget –no-check-certificate https://github.com/mojeda/ServerStatus/archive/master.zip

unzip master.zip

mv ServerStatus-master ServerStatus

cd ServerStatus/sql

mysql -u serverstatus_usr -p[Passwort dieses Nutzers] serverstatusdb < servers.sql

nano ../includes/config.php

Hier nach „$user“ zwischen den ‚ „serverstatus_usr“ eintragen.

Für „$pass“ das Passwort des serverstatus_usr eingeben.

Für „$data“ „serverstatusdb“ einfügen.

Die config.php könnte dann hinterher so aussehen:

$host = ‚localhost‘;
$user = ’serverstatus_usr‘;
$pass = ‚meinPasswort‘;
$data = ’serverstatusdb‘;

Wer es „dunkel bevorzugt“, kann zudem noch bei $tamplate aus dem „default“ ein „dark“ machen. Das dunkle Theme sieht so aus:

serverstatus2

cd

4. NGINX konfigurieren

nano /etc/nginx/conf.d/serverstatus.conf

(Bei der nginx Version [1.2.1], die z.B. in den offiziellen Debian Quellen ist, wäre der Pfad „/etc/nginx/sites-enabled/serverstatus“)

Hier kann einfach folgender Spoiler eingefügt und angepasst werden:

Spoiler

server {
listen 80;

server_name [Sub- / Domain, IP…];
root /var/www/ServerName;

index index.php
autoindex off;

access_log off;
error_log off;

location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass localhost:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}

[collapse]

Strg + O, Enter, Strg + X

service nginx restart

5. Einen Server zum Überwachen hinzufügen

Nun ist alles soweit konfiguriert, aber das Wichtigste, Server zum Überwachen fehlen noch! Damit ein Server überwacht werden kann, muss auf diesem ebenfalls ein Webserver laufen, welcher auch php’s ausführen kann. Um den benötigten Script (/uptime.php) zu übertragen, ist folgendes wohl am einfachsten:

cat /var/www/ServerStatus/uptime.php

Diesen Output markieren und per Strg + C kopieren (wer sich mit Linux mit dem Server verbunden hat, muss über die rechte Maustaste und Kopieren kopieren).

Anschließend mit dem Server der überwacht werden soll verbinden, in ein Verzeichnis gehen, auf das per http zugegriffen werden kann,

nano uptime.php

und mit der rechten Maustaste bzw noch mit „Einfügen“ einfügen. Wie immer in nano: Strg + O, Enter, Strg + X zum speichern und schließen.

Wieder auf dem Server, der das Überwachen ÜBERNEHMEN soll:

mysql -u serverstatus_usr -p[Passwort]

use serverstatusdb;

insert into servers (name, url, location, host, type)

values (‚[Name für Server]‘,'[URL]‘,'[Physischer Standort]‘,'[Hoster]‘,'[Typ]);

 

Erklärung: „Name für Server“ ist einfach nur irgend ein Name, den man dem Server gegeben hat, bzw geben möchte. Die URL ist die URL zur „uptime.php“ auf dem zu überwachenden Server, aber ohne http:// vorne dran, und nicht auf /uptime.php endend!! Bei URL könnte man z.B. also einfach nur „meineSeite.sx/einOrdner“ eingeben, wenn sich die „uptime.php“ im Ordner „einOrder“ befände. „Physischer Standort“ ist wohl selbsterklärend. Z.B. Deutschland, Niederlande, Moldawien, Kazakstan – whatever. Bei „Hoster“ kann man den Namen des Providers, von dem man den Server hat eintragen. Bei „Typ“, was der Server macht. Z.B. „apache“ oder „nginx“ wenn er Webseiten hostet, oder „sql“ wenn es ein Datenbank Server ist, oder „email“ wenn es ein Mail Server ist usw.

Alle Angaben außer der URL sind nicht zwingend erforderlich, machen das Ganze aber natürlich um einiges übersichtlicher, wenn man sehr viele Server hat.

Den „insert into servers…“ Befehl kann man nun für jeden Server wiederholen, der überwacht werden soll.

6. Fertig!

Wenn man nun auf die bei server_name in der /etc/nginx/conf.d/serverstatus.conf angegeben Domain geht, sollte einen in etwa das Bild erwarten, was einmal ganz oben in diesem Post zu finden ist, oder auch beim Beispiel für das dunkle Theme. Die Balken beim RAM und der CPU geben nicht an, wie viel davon belegt ist bzw genutzt wird, sondern wie viel noch frei ist!

 

Sollten Probleme, Fragen o.Ä. aufgetaucht sein – Kommentare werden gern beantwortet, solange sie ernst gemeint und konstruktiv sind! 😉

[HowTo] Eigene Server-Monitoring Seite aufsetzen / ServerStatus Guide
Markiert in:                                                                                                                                                 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.